hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/arch/ia64/mm/hugetlbpage.c
....@@ -18,7 +18,6 @@
1818 #include <linux/sysctl.h>
1919 #include <linux/log2.h>
2020 #include <asm/mman.h>
21
-#include <asm/pgalloc.h>
2221 #include <asm/tlb.h>
2322 #include <asm/tlbflush.h>
2423
....@@ -26,16 +25,19 @@
2625 EXPORT_SYMBOL(hpage_shift);
2726
2827 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)
3030 {
3131 unsigned long taddr = htlbpage_to_page(addr);
3232 pgd_t *pgd;
33
+ p4d_t *p4d;
3334 pud_t *pud;
3435 pmd_t *pmd;
3536 pte_t *pte = NULL;
3637
3738 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);
3941 if (pud) {
4042 pmd = pmd_alloc(mm, pud, taddr);
4143 if (pmd)
....@@ -49,17 +51,21 @@
4951 {
5052 unsigned long taddr = htlbpage_to_page(addr);
5153 pgd_t *pgd;
54
+ p4d_t *p4d;
5255 pud_t *pud;
5356 pmd_t *pmd;
5457 pte_t *pte = NULL;
5558
5659 pgd = pgd_offset(mm, taddr);
5760 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
+ }
6369 }
6470 }
6571