Patch from Thomas Schlichter Make flush_tlb_all() preempt-safe. Same as the ia32 fix. arch/i386/mach-voyager/voyager_smp.c | 3 ++- arch/x86_64/kernel/smp.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) 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 Wed Feb 19 12:32:15 2003 +++ 25-akpm/arch/i386/mach-voyager/voyager_smp.c Wed Feb 19 12:33:00 2003 @@ -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 --- 25/arch/x86_64/kernel/smp.c~flush-tlb-all-2 Wed Feb 19 12:32:15 2003 +++ 25-akpm/arch/x86_64/kernel/smp.c Wed Feb 19 12:33:25 2003 @@ -344,9 +344,10 @@ static void flush_tlb_all_ipi(void* info void flush_tlb_all(void) { + preempt_disable(); smp_call_function (flush_tlb_all_ipi,0,1,1); - do_flush_tlb_all_local(); + preempt_enable(); } void smp_kdb_stop(void) _