Patch from Thomas Schlichter Make flush_tlb_all() preempt-safe. Same as the ia32 fix. i386/mach-voyager/voyager_smp.c | 3 ++- x86_64/kernel/smp.c | 0 2 files changed, 2 insertions(+), 1 deletion(-) diff -puN arch/i386/mach-voyager/voyager_smp.c~flush-tlb-all-2 arch/i386/mach-voyager/voyager_smp.c --- 25/arch/i386/mach-voyager/voyager_smp.c~flush-tlb-all-2 2003-02-23 13:55:14.000000000 -0800 +++ 25-akpm/arch/i386/mach-voyager/voyager_smp.c 2003-02-23 13:55:14.000000000 -0800 @@ -1230,9 +1230,10 @@ flush_tlb_all_function(void* info) void flush_tlb_all(void) { + preempt_disable(); smp_call_function (flush_tlb_all_function, 0, 1, 1); - do_flush_tlb_all_local(); + preempt_enable(); } /* used to set up the trampoline for other CPUs when the memory manager diff -puN arch/x86_64/kernel/smp.c~flush-tlb-all-2 arch/x86_64/kernel/smp.c _