Deduplicate to one function to compute the actual page size. Some additional warnings added for AP size as well.
Signed-off-by: Balbir Singh <bsinghar...@gmail.com> --- arch/powerpc/mm/hugetlbpage-radix.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/arch/powerpc/mm/hugetlbpage-radix.c b/arch/powerpc/mm/hugetlbpage-radix.c index 1e11559..9108645 100644 --- a/arch/powerpc/mm/hugetlbpage-radix.c +++ b/arch/powerpc/mm/hugetlbpage-radix.c @@ -6,7 +6,8 @@ #include <asm/machdep.h> #include <asm/mman.h> -void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr) +static inline unsigned long get_base_page_size(struct vm_area_struct *vma, + unsigned long vmaddr) { unsigned long ap, shift; struct hstate *hstate = hstate_file(vma->vm_file); @@ -18,25 +19,25 @@ void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr) ap = mmu_get_ap(MMU_PAGE_1G); else { WARN(1, "Wrong huge page shift\n"); - return ; + return 0; } - radix___flush_tlb_page(vma->vm_mm, vmaddr, ap, 0); +#ifdef CONFIG_DEBUG_VM + /* Double check this assumption */ + WARN_ON(ap != 0 && ap != 0x5); +#endif + return ap; } -void radix__local_flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr) +void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr) { - unsigned long ap, shift; - struct hstate *hstate = hstate_file(vma->vm_file); + unsigned long ap = get_base_page_size(vma, vmaddr); + radix___flush_tlb_page(vma->vm_mm, vmaddr, ap, 0); +} - shift = huge_page_shift(hstate); - if (shift == mmu_psize_defs[MMU_PAGE_2M].shift) - ap = mmu_get_ap(MMU_PAGE_2M); - else if (shift == mmu_psize_defs[MMU_PAGE_1G].shift) - ap = mmu_get_ap(MMU_PAGE_1G); - else { - WARN(1, "Wrong huge page shift\n"); - return ; - } +void radix__local_flush_hugetlb_page(struct vm_area_struct *vma, + unsigned long vmaddr) +{ + unsigned long ap = get_base_page_size(vma, vmaddr); radix___local_flush_tlb_page(vma->vm_mm, vmaddr, ap, 0); } -- 2.5.5 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev