.. | .. |
---|
18 | 18 | #include <linux/sysctl.h> |
---|
19 | 19 | #include <linux/log2.h> |
---|
20 | 20 | #include <asm/mman.h> |
---|
21 | | -#include <asm/pgalloc.h> |
---|
22 | 21 | #include <asm/tlb.h> |
---|
23 | 22 | #include <asm/tlbflush.h> |
---|
24 | 23 | |
---|
.. | .. |
---|
26 | 25 | EXPORT_SYMBOL(hpage_shift); |
---|
27 | 26 | |
---|
28 | 27 | pte_t * |
---|
29 | | -huge_pte_alloc(struct mm_struct *mm, unsigned long addr, unsigned long sz) |
---|
| 28 | +huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, |
---|
| 29 | + unsigned long addr, unsigned long sz) |
---|
30 | 30 | { |
---|
31 | 31 | unsigned long taddr = htlbpage_to_page(addr); |
---|
32 | 32 | pgd_t *pgd; |
---|
| 33 | + p4d_t *p4d; |
---|
33 | 34 | pud_t *pud; |
---|
34 | 35 | pmd_t *pmd; |
---|
35 | 36 | pte_t *pte = NULL; |
---|
36 | 37 | |
---|
37 | 38 | pgd = pgd_offset(mm, taddr); |
---|
38 | | - pud = pud_alloc(mm, pgd, taddr); |
---|
| 39 | + p4d = p4d_offset(pgd, taddr); |
---|
| 40 | + pud = pud_alloc(mm, p4d, taddr); |
---|
39 | 41 | if (pud) { |
---|
40 | 42 | pmd = pmd_alloc(mm, pud, taddr); |
---|
41 | 43 | if (pmd) |
---|
.. | .. |
---|
49 | 51 | { |
---|
50 | 52 | unsigned long taddr = htlbpage_to_page(addr); |
---|
51 | 53 | pgd_t *pgd; |
---|
| 54 | + p4d_t *p4d; |
---|
52 | 55 | pud_t *pud; |
---|
53 | 56 | pmd_t *pmd; |
---|
54 | 57 | pte_t *pte = NULL; |
---|
55 | 58 | |
---|
56 | 59 | pgd = pgd_offset(mm, taddr); |
---|
57 | 60 | if (pgd_present(*pgd)) { |
---|
58 | | - pud = pud_offset(pgd, taddr); |
---|
59 | | - if (pud_present(*pud)) { |
---|
60 | | - pmd = pmd_offset(pud, taddr); |
---|
61 | | - if (pmd_present(*pmd)) |
---|
62 | | - pte = pte_offset_map(pmd, taddr); |
---|
| 61 | + p4d = p4d_offset(pgd, taddr); |
---|
| 62 | + if (p4d_present(*p4d)) { |
---|
| 63 | + pud = pud_offset(p4d, taddr); |
---|
| 64 | + if (pud_present(*pud)) { |
---|
| 65 | + pmd = pmd_offset(pud, taddr); |
---|
| 66 | + if (pmd_present(*pmd)) |
---|
| 67 | + pte = pte_offset_map(pmd, taddr); |
---|
| 68 | + } |
---|
63 | 69 | } |
---|
64 | 70 | } |
---|
65 | 71 | |
---|