x86: Skip migrating IRQF_PER_CPU irqs in fixup_irqs()
authorTian, Kevin <kevin.tian@intel.com>
Fri, 6 May 2011 06:43:36 +0000 (14:43 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 19 May 2011 12:51:08 +0000 (14:51 +0200)
IRQF_PER_CPU means that the irq cannot be moved away from a given
cpu. So it must not be migrated when the cpu goes offline.

[ tglx: massaged changelog ]

Signed-off-by: Fengzhe Zhang <fengzhe.zhang@intel.com>
Signed-off-by: Kevin Tian <kevin.tian@intel.com>
Cc: Ian Campbell <Ian.Campbell@citrix.com>
Cc: Jan Beulich <JBeulich@novell.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Link: http://lkml.kernel.org/r/%3C625BA99ED14B2D499DC4E29D8138F1505C8ED7F7E2%40shsmsx502.ccr.corp.intel.com%3E
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/irq.c

index 1cb0b9fc78dccffd68a1c571e873043e0d28d007..544efe2741be49c92fb9bdfe98df2c0671c4dbdf 100644 (file)
@@ -249,7 +249,7 @@ void fixup_irqs(void)
 
                data = irq_desc_get_irq_data(desc);
                affinity = data->affinity;
-               if (!irq_has_action(irq) ||
+               if (!irq_has_action(irq) || irqd_is_per_cpu(data) ||
                    cpumask_subset(affinity, cpu_online_mask)) {
                        raw_spin_unlock(&desc->lock);
                        continue;