Revert "[PARISC] Optimize TLB flush on SMP systems"
authorKyle McMartin <kyle@hera.kernel.org>
Sun, 18 Feb 2007 19:35:45 +0000 (19:35 +0000)
committerKyle McMartin <kyle@hera.kernel.org>
Sun, 18 Feb 2007 19:35:45 +0000 (19:35 +0000)
This reverts commit 592ac93a607109e0643da6c23ae07ac749e973b1
which causes SMP machines with maxcpus > 1 to fail to boot...

include/asm-parisc/tlbflush.h

index ae2d120085462d2266b23e153d92e253aa58561a..3313da9ea00f317b95efcc0cee36784f68f5d3be 100644 (file)
@@ -39,19 +39,21 @@ extern void flush_tlb_all_local(void *);
  * etc. do not do that).
  */
 
-static inline void __flush_tlb_mm(void *mmv)
-{
-       struct mm_struct *mm = (struct mm_struct *)mmv;
-       if (mm == current->active_mm)
-               load_context(mm->context);
-}
-
 static inline void flush_tlb_mm(struct mm_struct *mm)
 {
-       if (mm->context != 0)
-               free_sid(mm->context);
-       mm->context = alloc_sid();
-       on_each_cpu(__flush_tlb_mm, mm, 1, 1);
+       BUG_ON(mm == &init_mm); /* Should never happen */
+
+#ifdef CONFIG_SMP
+       flush_tlb_all();
+#else
+       if (mm) {
+               if (mm->context != 0)
+                       free_sid(mm->context);
+               mm->context = alloc_sid();
+               if (mm == current->active_mm)
+                       load_context(mm->context);
+       }
+#endif
 }
 
 extern __inline__ void flush_tlb_pgtables(struct mm_struct *mm, unsigned long start, unsigned long end)