Messages in this thread | | | Date | Sun, 31 Aug 2008 19:46:33 +0200 | From | "Vegard Nossum" <> | Subject | Re: [PATCH] prevent ia64 from invoking irq handlers on offline CPUs |
| |
On Sun, Aug 31, 2008 at 7:28 PM, Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote: > 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. > > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > --- > > smpboot.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c > index bcea81e..7a90f42 100644 > --- a/arch/ia64/kernel/smpboot.c > +++ b/arch/ia64/kernel/smpboot.c > @@ -741,8 +741,6 @@ int __cpu_disable(void) > return -EBUSY; > } > > - cpu_clear(cpu, cpu_online_map); > - > if (migrate_platform_irqs(cpu)) { > cpu_set(cpu, cpu_online_map); > return (-EBUSY); > @@ -751,6 +749,7 @@ int __cpu_disable(void) > remove_siblinginfo(cpu); > cpu_clear(cpu, cpu_online_map); > fixup_irqs(); > + cpu_clear(cpu, cpu_online_map); > local_flush_tlb_all(); > cpu_clear(cpu, cpu_callin_map); > return 0;
Hm. Maybe my eyes are going bad. But isn't that now clearing the cpu both before and after calling fixup_irqs()?
Vegard
-- "The animistic metaphor of the bug that maliciously sneaked in while the programmer was not looking is intellectually dishonest as it disguises that the error is the programmer's own creation." -- E. W. Dijkstra, EWD1036
| |