linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / ia64 / mm / tlb.c
index ffad762..6a4eec9 100644 (file)
@@ -11,6 +11,7 @@
  * Rohit Seth <rohit.seth@intel.com>
  * Ken Chen <kenneth.w.chen@intel.com>
  */
+#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
@@ -155,19 +156,17 @@ flush_tlb_range (struct vm_area_struct *vma, unsigned long start,
                nbits = purge.max_bits;
        start &= ~((1UL << nbits) - 1);
 
+# ifdef CONFIG_SMP
+       platform_global_tlb_purge(mm, start, end, nbits);
+# else
        preempt_disable();
-#ifdef CONFIG_SMP
-       if (mm != current->active_mm || cpus_weight(mm->cpu_vm_mask) != 1) {
-               platform_global_tlb_purge(mm, start, end, nbits);
-               preempt_enable();
-               return;
-       }
-#endif
        do {
                ia64_ptcl(start, (nbits<<2));
                start += (1UL << nbits);
        } while (start < end);
        preempt_enable();
+# endif
+
        ia64_srlz_i();                  /* srlz.i implies srlz.d */
 }
 EXPORT_SYMBOL(flush_tlb_range);