diff options
Diffstat (limited to 'arch/x86/kernel/irq_32.c')
| -rw-r--r-- | arch/x86/kernel/irq_32.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c index 9cf9cbbf7a02..9dc5588f336a 100644 --- a/arch/x86/kernel/irq_32.c +++ b/arch/x86/kernel/irq_32.c | |||
| @@ -233,27 +233,28 @@ unsigned int do_IRQ(struct pt_regs *regs) | |||
| 233 | #ifdef CONFIG_HOTPLUG_CPU | 233 | #ifdef CONFIG_HOTPLUG_CPU |
| 234 | #include <mach_apic.h> | 234 | #include <mach_apic.h> |
| 235 | 235 | ||
| 236 | void fixup_irqs(cpumask_t map) | 236 | /* A cpu has been removed from cpu_online_mask. Reset irq affinities. */ |
| 237 | void fixup_irqs(void) | ||
| 237 | { | 238 | { |
| 238 | unsigned int irq; | 239 | unsigned int irq; |
| 239 | static int warned; | 240 | static int warned; |
| 240 | struct irq_desc *desc; | 241 | struct irq_desc *desc; |
| 241 | 242 | ||
| 242 | for_each_irq_desc(irq, desc) { | 243 | for_each_irq_desc(irq, desc) { |
| 243 | cpumask_t mask; | 244 | const struct cpumask *affinity; |
| 244 | 245 | ||
| 245 | if (!desc) | 246 | if (!desc) |
| 246 | continue; | 247 | continue; |
| 247 | if (irq == 2) | 248 | if (irq == 2) |
| 248 | continue; | 249 | continue; |
| 249 | 250 | ||
| 250 | cpus_and(mask, desc->affinity, map); | 251 | affinity = &desc->affinity; |
| 251 | if (any_online_cpu(mask) == NR_CPUS) { | 252 | if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) { |
| 252 | printk("Breaking affinity for irq %i\n", irq); | 253 | printk("Breaking affinity for irq %i\n", irq); |
| 253 | mask = map; | 254 | affinity = cpu_all_mask; |
| 254 | } | 255 | } |
| 255 | if (desc->chip->set_affinity) | 256 | if (desc->chip->set_affinity) |
| 256 | desc->chip->set_affinity(irq, &mask); | 257 | desc->chip->set_affinity(irq, affinity); |
| 257 | else if (desc->action && !(warned++)) | 258 | else if (desc->action && !(warned++)) |
| 258 | printk("Cannot set affinity for irq %i\n", irq); | 259 | printk("Cannot set affinity for irq %i\n", irq); |
| 259 | } | 260 | } |
