Commit 2530cd4f authored by Liu, Chuansheng's avatar Liu, Chuansheng Committed by Ingo Molnar

x86/fixup_irq: Use cpu_online_mask instead of cpu_all_mask

When one CPU is going down and this CPU is the last one in irq
affinity, current code is setting cpu_all_mask as the new
affinity for that irq.

But for some systems (such as in Medfield Android mobile) the
firmware sends the interrupt to each CPU in the irq affinity
mask, averaged, and cpu_all_mask includes all potential CPUs,
i.e. offline ones as well.

So replace cpu_all_mask with cpu_online_mask.
Signed-off-by: default avatarliu chuansheng <chuansheng.liu@intel.com>
Acked-by: default avatarYanmin Zhang <yanmin_zhang@linux.intel.com>
Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/27240C0AC20F114CBF8149A2696CBE4A137286@SHSMSX101.ccr.corp.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 83be4ffa
...@@ -270,7 +270,7 @@ void fixup_irqs(void) ...@@ -270,7 +270,7 @@ void fixup_irqs(void)
if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) { if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) {
break_affinity = 1; break_affinity = 1;
affinity = cpu_all_mask; affinity = cpu_online_mask;
} }
chip = irq_data_get_irq_chip(data); chip = irq_data_get_irq_chip(data);
......
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