Messages in this thread Patch in this message | | | From | Rusty Russell <> | Subject | Re: [patch] fix NMI watchdog, 2.5.34 | Date | Tue, 10 Sep 2002 15:19:06 +1000 |
| |
In message <Pine.LNX.4.44.0209092144140.10544-100000@localhost.localdomain> you write: > > the attached patch fixes the NMI watchdog to trigger on all CPUs - the > cpu_up() code broke it long time ago. With this patch NMI interrupts get > generated on all CPUs, not just the boot CPU.
Well spotted. You might want to test the following patch which catches calls to smp_call_function() before the cpus are actually online. I ran a variant on my (crappy, old, SMP) box before I sent the patch to Linus, and all I saw was the (harmless) tlb_flush.
diff -urNp --exclude TAGS -X /home/rusty/current-dontdiff --minimal linux-2.5.34/arch/i386/kernel/smp.c working-2.5.34-smp_call_cpus/arch/i386/kernel/smp.c --- linux-2.5.34/arch/i386/kernel/smp.c Wed Aug 28 09:29:40 2002 +++ working-2.5.34-smp_call_cpus/arch/i386/kernel/smp.c Tue Sep 10 14:50:15 2002 @@ -561,9 +561,15 @@ int smp_call_function (void (*func) (voi * hardware interrupt handler or from a bottom half handler. */ { + extern int smp_done; struct call_data_struct data; int cpus = num_online_cpus()-1; + if (!smp_done) { + printk(KERN_ERR "smp_call_function %p called before SMP!\n", + func); + show_stack(NULL); + } if (!cpus) return 0; diff -urNp --exclude TAGS -X /home/rusty/current-dontdiff --minimal linux-2.5.34/arch/i386/kernel/smpboot.c working-2.5.34-smp_call_cpus/arch/i386/kernel/smpboot.c --- linux-2.5.34/arch/i386/kernel/smpboot.c Sun Sep 1 12:22:57 2002 +++ working-2.5.34-smp_call_cpus/arch/i386/kernel/smpboot.c Tue Sep 10 14:35:07 2002 @@ -1218,7 +1218,10 @@ int __devinit __cpu_up(unsigned int cpu) return 0; } +unsigned int smp_done = 0; + void __init smp_cpus_done(unsigned int max_cpus) { zap_low_mappings(); + smp_done = 1; } -- Anyone who quotes me in their sig is an idiot. -- Rusty Russell. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |