Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / include / asm-arm / tlb.h
index 0bc7d05..c9677d0 100644 (file)
 
 #include <asm/cacheflush.h>
 #include <asm/tlbflush.h>
+
+#ifndef CONFIG_MMU
+
+#include <linux/pagemap.h>
+#include <asm-generic/tlb.h>
+
+#else /* !CONFIG_MMU */
+
 #include <asm/pgalloc.h>
 #include <linux/vs_memory.h>
 
  */
 struct mmu_gather {
        struct mm_struct        *mm;
-       unsigned int            freed;
        unsigned int            fullmm;
-
-       unsigned int            flushes;
-       unsigned int            avoided_flushes;
 };
 
 DECLARE_PER_CPU(struct mmu_gather, mmu_gathers);
@@ -40,11 +44,9 @@ DECLARE_PER_CPU(struct mmu_gather, mmu_gathers);
 static inline struct mmu_gather *
 tlb_gather_mmu(struct mm_struct *mm, unsigned int full_mm_flush)
 {
-       int cpu = smp_processor_id();
-       struct mmu_gather *tlb = &per_cpu(mmu_gathers, cpu);
+       struct mmu_gather *tlb = &get_cpu_var(mmu_gathers);
 
        tlb->mm = mm;
-       tlb->freed = 0;
        tlb->fullmm = full_mm_flush;
 
        return tlb;
@@ -53,24 +55,13 @@ tlb_gather_mmu(struct mm_struct *mm, unsigned int full_mm_flush)
 static inline void
 tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end)
 {
-       struct mm_struct *mm = tlb->mm;
-       unsigned long freed = tlb->freed;
-       int rss = get_mm_counter(mm, rss);
-
-       if (rss < freed)
-               freed = rss;
-       add_mm_counter(mm, rss, -freed);
-
        if (tlb->fullmm)
-               flush_tlb_mm(mm);
+               flush_tlb_mm(tlb->mm);
 
        /* keep the page table cache within bounds */
        check_pgt_cache();
-}
 
-static inline unsigned int tlb_is_full_mm(struct mmu_gather *tlb)
-{
-       return tlb->fullmm;
+       put_cpu_var(mmu_gathers);
 }
 
 #define tlb_remove_tlb_entry(tlb,ptep,address) do { } while (0)
@@ -100,4 +91,5 @@ tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma)
 
 #define tlb_migrate_finish(mm)         do { } while (0)
 
+#endif /* CONFIG_MMU */
 #endif