diff options
Diffstat (limited to 'arch/powerpc/mm/hugetlbpage-book3e.c')
| -rw-r--r-- | arch/powerpc/mm/hugetlbpage-book3e.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/arch/powerpc/mm/hugetlbpage-book3e.c b/arch/powerpc/mm/hugetlbpage-book3e.c index 343ad0b87261..3bc700655fc8 100644 --- a/arch/powerpc/mm/hugetlbpage-book3e.c +++ b/arch/powerpc/mm/hugetlbpage-book3e.c | |||
| @@ -37,31 +37,32 @@ static inline int book3e_tlb_exists(unsigned long ea, unsigned long pid) | |||
| 37 | return found; | 37 | return found; |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | void book3e_hugetlb_preload(struct mm_struct *mm, unsigned long ea, pte_t pte) | 40 | void book3e_hugetlb_preload(struct vm_area_struct *vma, unsigned long ea, |
| 41 | pte_t pte) | ||
| 41 | { | 42 | { |
| 42 | unsigned long mas1, mas2; | 43 | unsigned long mas1, mas2; |
| 43 | u64 mas7_3; | 44 | u64 mas7_3; |
| 44 | unsigned long psize, tsize, shift; | 45 | unsigned long psize, tsize, shift; |
| 45 | unsigned long flags; | 46 | unsigned long flags; |
| 47 | struct mm_struct *mm; | ||
| 46 | 48 | ||
| 47 | #ifdef CONFIG_PPC_FSL_BOOK3E | 49 | #ifdef CONFIG_PPC_FSL_BOOK3E |
| 48 | int index, lz, ncams; | 50 | int index, ncams; |
| 49 | struct vm_area_struct *vma; | ||
| 50 | #endif | 51 | #endif |
| 51 | 52 | ||
| 52 | if (unlikely(is_kernel_addr(ea))) | 53 | if (unlikely(is_kernel_addr(ea))) |
| 53 | return; | 54 | return; |
| 54 | 55 | ||
| 56 | mm = vma->vm_mm; | ||
| 57 | |||
| 55 | #ifdef CONFIG_PPC_MM_SLICES | 58 | #ifdef CONFIG_PPC_MM_SLICES |
| 56 | psize = mmu_get_tsize(get_slice_psize(mm, ea)); | 59 | psize = get_slice_psize(mm, ea); |
| 57 | tsize = mmu_get_psize(psize); | 60 | tsize = mmu_get_tsize(psize); |
| 58 | shift = mmu_psize_defs[psize].shift; | 61 | shift = mmu_psize_defs[psize].shift; |
| 59 | #else | 62 | #else |
| 60 | vma = find_vma(mm, ea); | 63 | psize = vma_mmu_pagesize(vma); |
| 61 | psize = vma_mmu_pagesize(vma); /* returns actual size in bytes */ | 64 | shift = __ilog2(psize); |
| 62 | asm (PPC_CNTLZL "%0,%1" : "=r" (lz) : "r" (psize)); | 65 | tsize = shift - 10; |
| 63 | shift = 31 - lz; | ||
| 64 | tsize = 21 - lz; | ||
| 65 | #endif | 66 | #endif |
| 66 | 67 | ||
| 67 | /* | 68 | /* |
