Commit e7b14036 authored by Paul E. McKenney's avatar Paul E. McKenney Committed by Tony Luck

[IA64] prevent ia64 from invoking irq handlers on offline CPUs

Make ia64 refrain from clearing a given to-be-offlined CPU's bit in the
cpu_online_mask until it has processed pending irqs.  This change
prevents other CPUs from being blindsided by an apparently offline CPU
nevertheless changing globally visible state.  Also remove the existing
redundant cpu_clear(cpu, cpu_online_map).
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 6bf6a1a4
...@@ -741,16 +741,14 @@ int __cpu_disable(void) ...@@ -741,16 +741,14 @@ int __cpu_disable(void)
return -EBUSY; return -EBUSY;
} }
cpu_clear(cpu, cpu_online_map);
if (migrate_platform_irqs(cpu)) { if (migrate_platform_irqs(cpu)) {
cpu_set(cpu, cpu_online_map); cpu_set(cpu, cpu_online_map);
return (-EBUSY); return (-EBUSY);
} }
remove_siblinginfo(cpu); remove_siblinginfo(cpu);
cpu_clear(cpu, cpu_online_map);
fixup_irqs(); fixup_irqs();
cpu_clear(cpu, cpu_online_map);
local_flush_tlb_all(); local_flush_tlb_all();
cpu_clear(cpu, cpu_callin_map); cpu_clear(cpu, cpu_callin_map);
return 0; return 0;
......
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