

Patch from Thomas Schlichter <schlicht@uni-mannheim.de>

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)

_
