mm: add tlb_remove_check_page_size_change to track page size change
[linux-2.6-block.git] / arch / powerpc / include / asm / tlb.h
index 99e1397b71dac78dae0cc2b98eefd40cf90947ec..609557569f6520f13167838ef11d4dfc1401a0c7 100644 (file)
@@ -28,6 +28,7 @@
 #define tlb_start_vma(tlb, vma)        do { } while (0)
 #define tlb_end_vma(tlb, vma)  do { } while (0)
 #define __tlb_remove_tlb_entry __tlb_remove_tlb_entry
+#define tlb_remove_check_page_size_change tlb_remove_check_page_size_change
 
 extern void tlb_flush(struct mmu_gather *tlb);
 
@@ -46,6 +47,21 @@ static inline void __tlb_remove_tlb_entry(struct mmu_gather *tlb, pte_t *ptep,
 #endif
 }
 
+static inline void tlb_remove_check_page_size_change(struct mmu_gather *tlb,
+                                                    unsigned int page_size)
+{
+       if (!tlb->page_size)
+               tlb->page_size = page_size;
+       else if (tlb->page_size != page_size) {
+               tlb_flush_mmu(tlb);
+               /*
+                * update the page size after flush for the new
+                * mmu_gather.
+                */
+               tlb->page_size = page_size;
+       }
+}
+
 #ifdef CONFIG_SMP
 static inline int mm_is_core_local(struct mm_struct *mm)
 {