Commit 52ecde3d authored by Thomas Gleixner's avatar Thomas Gleixner

Merge branch 'rt/head' into rt/2.6.31

parents 076be247 82c07cbb
...@@ -281,6 +281,7 @@ config X86_X2APIC ...@@ -281,6 +281,7 @@ config X86_X2APIC
config SPARSE_IRQ config SPARSE_IRQ
bool "Support sparse irq numbering" bool "Support sparse irq numbering"
depends on PCI_MSI || HT_IRQ depends on PCI_MSI || HT_IRQ
depends on !PREEMPT_RT
---help--- ---help---
This enables support for sparse irqs. This is useful for distro This enables support for sparse irqs. This is useful for distro
kernels that want to define a high CONFIG_NR_CPUS value but still kernels that want to define a high CONFIG_NR_CPUS value but still
...@@ -1902,7 +1903,7 @@ config PCI_MMCONFIG ...@@ -1902,7 +1903,7 @@ config PCI_MMCONFIG
config DMAR config DMAR
bool "Support for DMA Remapping Devices (EXPERIMENTAL)" bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
depends on PCI_MSI && ACPI && EXPERIMENTAL depends on PCI_MSI && ACPI && EXPERIMENTAL && !PREEMPT_RT
help help
DMA remapping (DMAR) devices support enables independent address DMA remapping (DMAR) devices support enables independent address
translations for Direct Memory Access (DMA) from devices. translations for Direct Memory Access (DMA) from devices.
...@@ -1945,6 +1946,7 @@ config DMAR_FLOPPY_WA ...@@ -1945,6 +1946,7 @@ config DMAR_FLOPPY_WA
config INTR_REMAP config INTR_REMAP
bool "Support for Interrupt Remapping (EXPERIMENTAL)" bool "Support for Interrupt Remapping (EXPERIMENTAL)"
depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI && EXPERIMENTAL depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI && EXPERIMENTAL
depends on !PREEMPT_RT
---help--- ---help---
Supports Interrupt remapping for IO-APIC and MSI devices. Supports Interrupt remapping for IO-APIC and MSI devices.
To use x2apic mode in the CPU's which support x2APIC enhancements or To use x2apic mode in the CPU's which support x2APIC enhancements or
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/stacktrace.h> #include <linux/stacktrace.h>
static DEFINE_SPINLOCK(latency_lock); static DEFINE_ATOMIC_SPINLOCK(latency_lock);
#define MAXLR 128 #define MAXLR 128
static struct latency_record latency_record[MAXLR]; static struct latency_record latency_record[MAXLR];
...@@ -73,19 +73,19 @@ void clear_all_latency_tracing(struct task_struct *p) ...@@ -73,19 +73,19 @@ void clear_all_latency_tracing(struct task_struct *p)
if (!latencytop_enabled) if (!latencytop_enabled)
return; return;
spin_lock_irqsave(&latency_lock, flags); atomic_spin_lock_irqsave(&latency_lock, flags);
memset(&p->latency_record, 0, sizeof(p->latency_record)); memset(&p->latency_record, 0, sizeof(p->latency_record));
p->latency_record_count = 0; p->latency_record_count = 0;
spin_unlock_irqrestore(&latency_lock, flags); atomic_spin_unlock_irqrestore(&latency_lock, flags);
} }
static void clear_global_latency_tracing(void) static void clear_global_latency_tracing(void)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&latency_lock, flags); atomic_spin_lock_irqsave(&latency_lock, flags);
memset(&latency_record, 0, sizeof(latency_record)); memset(&latency_record, 0, sizeof(latency_record));
spin_unlock_irqrestore(&latency_lock, flags); atomic_spin_unlock_irqrestore(&latency_lock, flags);
} }
static void __sched static void __sched
...@@ -191,7 +191,7 @@ __account_scheduler_latency(struct task_struct *tsk, int usecs, int inter) ...@@ -191,7 +191,7 @@ __account_scheduler_latency(struct task_struct *tsk, int usecs, int inter)
lat.max = usecs; lat.max = usecs;
store_stacktrace(tsk, &lat); store_stacktrace(tsk, &lat);
spin_lock_irqsave(&latency_lock, flags); atomic_spin_lock_irqsave(&latency_lock, flags);
account_global_scheduler_latency(tsk, &lat); account_global_scheduler_latency(tsk, &lat);
...@@ -233,7 +233,7 @@ __account_scheduler_latency(struct task_struct *tsk, int usecs, int inter) ...@@ -233,7 +233,7 @@ __account_scheduler_latency(struct task_struct *tsk, int usecs, int inter)
memcpy(&tsk->latency_record[i], &lat, sizeof(struct latency_record)); memcpy(&tsk->latency_record[i], &lat, sizeof(struct latency_record));
out_unlock: out_unlock:
spin_unlock_irqrestore(&latency_lock, flags); atomic_spin_unlock_irqrestore(&latency_lock, flags);
} }
static int lstats_show(struct seq_file *m, void *v) static int lstats_show(struct seq_file *m, void *v)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment