Commit 2f709f7b authored by Peter Xu's avatar Peter Xu Committed by Andrew Morton

mm/treewide: replace pmd_large() with pmd_leaf()

pmd_large() is always defined as pmd_leaf().  Merge their usages.  Chose
pmd_leaf() because pmd_leaf() is a global API, while pmd_large() is not.

Link: https://lkml.kernel.org/r/20240305043750.93762-8-peterx@redhat.comSigned-off-by: default avatarPeter Xu <peterx@redhat.com>
Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Reviewed-by: default avatarMike Rapoport (IBM) <rppt@kernel.org>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Kirill A. Shutemov <kirill@shutemov.name>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: Yang Shi <shy828301@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent b6c9d5a9
...@@ -349,12 +349,12 @@ static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start) ...@@ -349,12 +349,12 @@ static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start)
for (i = 0; i < PTRS_PER_PMD; i++, pmd++) { for (i = 0; i < PTRS_PER_PMD; i++, pmd++) {
addr = start + i * PMD_SIZE; addr = start + i * PMD_SIZE;
domain = get_domain_name(pmd); domain = get_domain_name(pmd);
if (pmd_none(*pmd) || pmd_large(*pmd) || !pmd_present(*pmd)) if (pmd_none(*pmd) || pmd_leaf(*pmd) || !pmd_present(*pmd))
note_page(st, addr, 4, pmd_val(*pmd), domain); note_page(st, addr, 4, pmd_val(*pmd), domain);
else else
walk_pte(st, pmd, addr, domain); walk_pte(st, pmd, addr, domain);
if (SECTION_SIZE < PMD_SIZE && pmd_large(pmd[1])) { if (SECTION_SIZE < PMD_SIZE && pmd_leaf(pmd[1])) {
addr += SECTION_SIZE; addr += SECTION_SIZE;
pmd++; pmd++;
domain = get_domain_name(pmd); domain = get_domain_name(pmd);
......
...@@ -113,7 +113,7 @@ void set_pmd_at(struct mm_struct *mm, unsigned long addr, ...@@ -113,7 +113,7 @@ void set_pmd_at(struct mm_struct *mm, unsigned long addr,
WARN_ON(pte_hw_valid(pmd_pte(*pmdp)) && !pte_protnone(pmd_pte(*pmdp))); WARN_ON(pte_hw_valid(pmd_pte(*pmdp)) && !pte_protnone(pmd_pte(*pmdp)));
assert_spin_locked(pmd_lockptr(mm, pmdp)); assert_spin_locked(pmd_lockptr(mm, pmdp));
WARN_ON(!(pmd_large(pmd))); WARN_ON(!(pmd_leaf(pmd)));
#endif #endif
trace_hugepage_set_pmd(addr, pmd_val(pmd)); trace_hugepage_set_pmd(addr, pmd_val(pmd));
return set_pte_at(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd)); return set_pte_at(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd));
......
...@@ -924,7 +924,7 @@ bool vmemmap_can_optimize(struct vmem_altmap *altmap, struct dev_pagemap *pgmap) ...@@ -924,7 +924,7 @@ bool vmemmap_can_optimize(struct vmem_altmap *altmap, struct dev_pagemap *pgmap)
int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node, int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node,
unsigned long addr, unsigned long next) unsigned long addr, unsigned long next)
{ {
int large = pmd_large(*pmdp); int large = pmd_leaf(*pmdp);
if (large) if (large)
vmemmap_verify(pmdp_ptep(pmdp), node, addr, next); vmemmap_verify(pmdp_ptep(pmdp), node, addr, next);
......
...@@ -132,7 +132,7 @@ struct page *pmd_page(pmd_t pmd) ...@@ -132,7 +132,7 @@ struct page *pmd_page(pmd_t pmd)
* enabled so these checks can't be used. * enabled so these checks can't be used.
*/ */
if (!IS_ENABLED(CONFIG_HAVE_ARCH_HUGE_VMAP)) if (!IS_ENABLED(CONFIG_HAVE_ARCH_HUGE_VMAP))
VM_WARN_ON(!(pmd_large(pmd) || pmd_huge(pmd))); VM_WARN_ON(!(pmd_leaf(pmd) || pmd_huge(pmd)));
return pte_page(pmd_pte(pmd)); return pte_page(pmd_pte(pmd));
} }
return virt_to_page(pmd_page_vaddr(pmd)); return virt_to_page(pmd_page_vaddr(pmd));
......
...@@ -333,7 +333,7 @@ static void pgtable_pmd_populate(pud_t *pud, unsigned long addr, unsigned long e ...@@ -333,7 +333,7 @@ static void pgtable_pmd_populate(pud_t *pud, unsigned long addr, unsigned long e
} }
pte = boot_pte_alloc(); pte = boot_pte_alloc();
pmd_populate(&init_mm, pmd, pte); pmd_populate(&init_mm, pmd, pte);
} else if (pmd_large(*pmd)) { } else if (pmd_leaf(*pmd)) {
continue; continue;
} }
pgtable_pte_populate(pmd, addr, next, mode); pgtable_pte_populate(pmd, addr, next, mode);
......
...@@ -721,7 +721,7 @@ static inline int pmd_large(pmd_t pmd) ...@@ -721,7 +721,7 @@ static inline int pmd_large(pmd_t pmd)
static inline int pmd_bad(pmd_t pmd) static inline int pmd_bad(pmd_t pmd)
{ {
if ((pmd_val(pmd) & _SEGMENT_ENTRY_TYPE_MASK) > 0 || pmd_large(pmd)) if ((pmd_val(pmd) & _SEGMENT_ENTRY_TYPE_MASK) > 0 || pmd_leaf(pmd))
return 1; return 1;
return (pmd_val(pmd) & ~_SEGMENT_ENTRY_BITS) != 0; return (pmd_val(pmd) & ~_SEGMENT_ENTRY_BITS) != 0;
} }
...@@ -820,8 +820,8 @@ static inline int pte_protnone(pte_t pte) ...@@ -820,8 +820,8 @@ static inline int pte_protnone(pte_t pte)
static inline int pmd_protnone(pmd_t pmd) static inline int pmd_protnone(pmd_t pmd)
{ {
/* pmd_large(pmd) implies pmd_present(pmd) */ /* pmd_leaf(pmd) implies pmd_present(pmd) */
return pmd_large(pmd) && !(pmd_val(pmd) & _SEGMENT_ENTRY_READ); return pmd_leaf(pmd) && !(pmd_val(pmd) & _SEGMENT_ENTRY_READ);
} }
#endif #endif
...@@ -1385,7 +1385,7 @@ static inline unsigned long pmd_deref(pmd_t pmd) ...@@ -1385,7 +1385,7 @@ static inline unsigned long pmd_deref(pmd_t pmd)
unsigned long origin_mask; unsigned long origin_mask;
origin_mask = _SEGMENT_ENTRY_ORIGIN; origin_mask = _SEGMENT_ENTRY_ORIGIN;
if (pmd_large(pmd)) if (pmd_leaf(pmd))
origin_mask = _SEGMENT_ENTRY_ORIGIN_LARGE; origin_mask = _SEGMENT_ENTRY_ORIGIN_LARGE;
return (unsigned long)__va(pmd_val(pmd) & origin_mask); return (unsigned long)__va(pmd_val(pmd) & origin_mask);
} }
......
...@@ -603,7 +603,7 @@ int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr) ...@@ -603,7 +603,7 @@ int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr)
pmd = pmd_offset(pud, vmaddr); pmd = pmd_offset(pud, vmaddr);
VM_BUG_ON(pmd_none(*pmd)); VM_BUG_ON(pmd_none(*pmd));
/* Are we allowed to use huge pages? */ /* Are we allowed to use huge pages? */
if (pmd_large(*pmd) && !gmap->mm->context.allow_gmap_hpage_1m) if (pmd_leaf(*pmd) && !gmap->mm->context.allow_gmap_hpage_1m)
return -EFAULT; return -EFAULT;
/* Link gmap segment table entry location to page table. */ /* Link gmap segment table entry location to page table. */
rc = radix_tree_preload(GFP_KERNEL_ACCOUNT); rc = radix_tree_preload(GFP_KERNEL_ACCOUNT);
...@@ -615,7 +615,7 @@ int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr) ...@@ -615,7 +615,7 @@ int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr)
rc = radix_tree_insert(&gmap->host_to_guest, rc = radix_tree_insert(&gmap->host_to_guest,
vmaddr >> PMD_SHIFT, table); vmaddr >> PMD_SHIFT, table);
if (!rc) { if (!rc) {
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
*table = (pmd_val(*pmd) & *table = (pmd_val(*pmd) &
_SEGMENT_ENTRY_HARDWARE_BITS_LARGE) _SEGMENT_ENTRY_HARDWARE_BITS_LARGE)
| _SEGMENT_ENTRY_GMAP_UC; | _SEGMENT_ENTRY_GMAP_UC;
...@@ -945,7 +945,7 @@ static inline pmd_t *gmap_pmd_op_walk(struct gmap *gmap, unsigned long gaddr) ...@@ -945,7 +945,7 @@ static inline pmd_t *gmap_pmd_op_walk(struct gmap *gmap, unsigned long gaddr)
} }
/* 4k page table entries are locked via the pte (pte_alloc_map_lock). */ /* 4k page table entries are locked via the pte (pte_alloc_map_lock). */
if (!pmd_large(*pmdp)) if (!pmd_leaf(*pmdp))
spin_unlock(&gmap->guest_table_lock); spin_unlock(&gmap->guest_table_lock);
return pmdp; return pmdp;
} }
...@@ -957,7 +957,7 @@ static inline pmd_t *gmap_pmd_op_walk(struct gmap *gmap, unsigned long gaddr) ...@@ -957,7 +957,7 @@ static inline pmd_t *gmap_pmd_op_walk(struct gmap *gmap, unsigned long gaddr)
*/ */
static inline void gmap_pmd_op_end(struct gmap *gmap, pmd_t *pmdp) static inline void gmap_pmd_op_end(struct gmap *gmap, pmd_t *pmdp)
{ {
if (pmd_large(*pmdp)) if (pmd_leaf(*pmdp))
spin_unlock(&gmap->guest_table_lock); spin_unlock(&gmap->guest_table_lock);
} }
...@@ -1068,7 +1068,7 @@ static int gmap_protect_range(struct gmap *gmap, unsigned long gaddr, ...@@ -1068,7 +1068,7 @@ static int gmap_protect_range(struct gmap *gmap, unsigned long gaddr,
rc = -EAGAIN; rc = -EAGAIN;
pmdp = gmap_pmd_op_walk(gmap, gaddr); pmdp = gmap_pmd_op_walk(gmap, gaddr);
if (pmdp) { if (pmdp) {
if (!pmd_large(*pmdp)) { if (!pmd_leaf(*pmdp)) {
rc = gmap_protect_pte(gmap, gaddr, pmdp, prot, rc = gmap_protect_pte(gmap, gaddr, pmdp, prot,
bits); bits);
if (!rc) { if (!rc) {
...@@ -2500,7 +2500,7 @@ void gmap_sync_dirty_log_pmd(struct gmap *gmap, unsigned long bitmap[4], ...@@ -2500,7 +2500,7 @@ void gmap_sync_dirty_log_pmd(struct gmap *gmap, unsigned long bitmap[4],
if (!pmdp) if (!pmdp)
return; return;
if (pmd_large(*pmdp)) { if (pmd_leaf(*pmdp)) {
if (gmap_test_and_clear_dirty_pmd(gmap, pmdp, gaddr)) if (gmap_test_and_clear_dirty_pmd(gmap, pmdp, gaddr))
bitmap_fill(bitmap, _PAGE_ENTRIES); bitmap_fill(bitmap, _PAGE_ENTRIES);
} else { } else {
......
...@@ -235,7 +235,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm, ...@@ -235,7 +235,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm,
int pmd_huge(pmd_t pmd) int pmd_huge(pmd_t pmd)
{ {
return pmd_large(pmd); return pmd_leaf(pmd);
} }
int pud_huge(pud_t pud) int pud_huge(pud_t pud)
......
...@@ -185,7 +185,7 @@ static int walk_pmd_level(pud_t *pudp, unsigned long addr, unsigned long end, ...@@ -185,7 +185,7 @@ static int walk_pmd_level(pud_t *pudp, unsigned long addr, unsigned long end,
if (pmd_none(*pmdp)) if (pmd_none(*pmdp))
return -EINVAL; return -EINVAL;
next = pmd_addr_end(addr, end); next = pmd_addr_end(addr, end);
if (pmd_large(*pmdp)) { if (pmd_leaf(*pmdp)) {
need_split = !!(flags & SET_MEMORY_4K); need_split = !!(flags & SET_MEMORY_4K);
need_split |= !!(addr & ~PMD_MASK); need_split |= !!(addr & ~PMD_MASK);
need_split |= !!(addr + PMD_SIZE > next); need_split |= !!(addr + PMD_SIZE > next);
......
...@@ -827,7 +827,7 @@ int set_guest_storage_key(struct mm_struct *mm, unsigned long addr, ...@@ -827,7 +827,7 @@ int set_guest_storage_key(struct mm_struct *mm, unsigned long addr,
return key ? -EFAULT : 0; return key ? -EFAULT : 0;
} }
if (pmd_large(*pmdp)) { if (pmd_leaf(*pmdp)) {
paddr = pmd_val(*pmdp) & HPAGE_MASK; paddr = pmd_val(*pmdp) & HPAGE_MASK;
paddr |= addr & ~HPAGE_MASK; paddr |= addr & ~HPAGE_MASK;
/* /*
...@@ -938,7 +938,7 @@ int reset_guest_reference_bit(struct mm_struct *mm, unsigned long addr) ...@@ -938,7 +938,7 @@ int reset_guest_reference_bit(struct mm_struct *mm, unsigned long addr)
return 0; return 0;
} }
if (pmd_large(*pmdp)) { if (pmd_leaf(*pmdp)) {
paddr = pmd_val(*pmdp) & HPAGE_MASK; paddr = pmd_val(*pmdp) & HPAGE_MASK;
paddr |= addr & ~HPAGE_MASK; paddr |= addr & ~HPAGE_MASK;
cc = page_reset_referenced(paddr); cc = page_reset_referenced(paddr);
...@@ -1002,7 +1002,7 @@ int get_guest_storage_key(struct mm_struct *mm, unsigned long addr, ...@@ -1002,7 +1002,7 @@ int get_guest_storage_key(struct mm_struct *mm, unsigned long addr,
return 0; return 0;
} }
if (pmd_large(*pmdp)) { if (pmd_leaf(*pmdp)) {
paddr = pmd_val(*pmdp) & HPAGE_MASK; paddr = pmd_val(*pmdp) & HPAGE_MASK;
paddr |= addr & ~HPAGE_MASK; paddr |= addr & ~HPAGE_MASK;
*key = page_get_storage_key(paddr); *key = page_get_storage_key(paddr);
......
...@@ -236,7 +236,7 @@ static int __ref modify_pmd_table(pud_t *pud, unsigned long addr, ...@@ -236,7 +236,7 @@ static int __ref modify_pmd_table(pud_t *pud, unsigned long addr,
if (!add) { if (!add) {
if (pmd_none(*pmd)) if (pmd_none(*pmd))
continue; continue;
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
if (IS_ALIGNED(addr, PMD_SIZE) && if (IS_ALIGNED(addr, PMD_SIZE) &&
IS_ALIGNED(next, PMD_SIZE)) { IS_ALIGNED(next, PMD_SIZE)) {
if (!direct) if (!direct)
...@@ -281,7 +281,7 @@ static int __ref modify_pmd_table(pud_t *pud, unsigned long addr, ...@@ -281,7 +281,7 @@ static int __ref modify_pmd_table(pud_t *pud, unsigned long addr,
if (!pte) if (!pte)
goto out; goto out;
pmd_populate(&init_mm, pmd, pte); pmd_populate(&init_mm, pmd, pte);
} else if (pmd_large(*pmd)) { } else if (pmd_leaf(*pmd)) {
if (!direct) if (!direct)
vmemmap_use_sub_pmd(addr, next); vmemmap_use_sub_pmd(addr, next);
continue; continue;
...@@ -610,7 +610,7 @@ pte_t *vmem_get_alloc_pte(unsigned long addr, bool alloc) ...@@ -610,7 +610,7 @@ pte_t *vmem_get_alloc_pte(unsigned long addr, bool alloc)
if (!pte) if (!pte)
goto out; goto out;
pmd_populate(&init_mm, pmd, pte); pmd_populate(&init_mm, pmd, pte);
} else if (WARN_ON_ONCE(pmd_large(*pmd))) { } else if (WARN_ON_ONCE(pmd_leaf(*pmd))) {
goto out; goto out;
} }
ptep = pte_offset_kernel(pmd, addr); ptep = pte_offset_kernel(pmd, addr);
......
...@@ -1672,7 +1672,7 @@ bool kern_addr_valid(unsigned long addr) ...@@ -1672,7 +1672,7 @@ bool kern_addr_valid(unsigned long addr)
if (pmd_none(*pmd)) if (pmd_none(*pmd))
return false; return false;
if (pmd_large(*pmd)) if (pmd_leaf(*pmd))
return pfn_valid(pmd_pfn(*pmd)); return pfn_valid(pmd_pfn(*pmd));
pte = pte_offset_kernel(pmd, addr); pte = pte_offset_kernel(pmd, addr);
...@@ -2968,7 +2968,7 @@ void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr, ...@@ -2968,7 +2968,7 @@ void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
struct mm_struct *mm; struct mm_struct *mm;
pmd_t entry = *pmd; pmd_t entry = *pmd;
if (!pmd_large(entry) || !pmd_young(entry)) if (!pmd_leaf(entry) || !pmd_young(entry))
return; return;
pte = pmd_val(entry); pte = pmd_val(entry);
......
...@@ -284,7 +284,7 @@ static int set_clr_page_flags(struct x86_mapping_info *info, ...@@ -284,7 +284,7 @@ static int set_clr_page_flags(struct x86_mapping_info *info,
pudp = pud_offset(p4dp, address); pudp = pud_offset(p4dp, address);
pmdp = pmd_offset(pudp, address); pmdp = pmd_offset(pudp, address);
if (pmd_large(*pmdp)) if (pmd_leaf(*pmdp))
ptep = split_large_pmd(info, pmdp, address); ptep = split_large_pmd(info, pmdp, address);
else else
ptep = pte_offset_kernel(pmdp, address); ptep = pte_offset_kernel(pmdp, address);
......
...@@ -3135,7 +3135,7 @@ static int host_pfn_mapping_level(struct kvm *kvm, gfn_t gfn, ...@@ -3135,7 +3135,7 @@ static int host_pfn_mapping_level(struct kvm *kvm, gfn_t gfn,
if (pmd_none(pmd) || !pmd_present(pmd)) if (pmd_none(pmd) || !pmd_present(pmd))
goto out; goto out;
if (pmd_large(pmd)) if (pmd_leaf(pmd))
level = PG_LEVEL_2M; level = PG_LEVEL_2M;
out: out:
......
...@@ -250,7 +250,7 @@ static noinline int vmalloc_fault(unsigned long address) ...@@ -250,7 +250,7 @@ static noinline int vmalloc_fault(unsigned long address)
if (!pmd_k) if (!pmd_k)
return -1; return -1;
if (pmd_large(*pmd_k)) if (pmd_leaf(*pmd_k))
return 0; return 0;
pte_k = pte_offset_kernel(pmd_k, address); pte_k = pte_offset_kernel(pmd_k, address);
...@@ -319,7 +319,7 @@ static void dump_pagetable(unsigned long address) ...@@ -319,7 +319,7 @@ static void dump_pagetable(unsigned long address)
* And let's rather not kmap-atomic the pte, just in case * And let's rather not kmap-atomic the pte, just in case
* it's allocated already: * it's allocated already:
*/ */
if (!low_pfn(pmd_pfn(*pmd)) || !pmd_present(*pmd) || pmd_large(*pmd)) if (!low_pfn(pmd_pfn(*pmd)) || !pmd_present(*pmd) || pmd_leaf(*pmd))
goto out; goto out;
pte = pte_offset_kernel(pmd, address); pte = pte_offset_kernel(pmd, address);
...@@ -384,7 +384,7 @@ static void dump_pagetable(unsigned long address) ...@@ -384,7 +384,7 @@ static void dump_pagetable(unsigned long address)
goto bad; goto bad;
pr_cont("PMD %lx ", pmd_val(*pmd)); pr_cont("PMD %lx ", pmd_val(*pmd));
if (!pmd_present(*pmd) || pmd_large(*pmd)) if (!pmd_present(*pmd) || pmd_leaf(*pmd))
goto out; goto out;
pte = pte_offset_kernel(pmd, address); pte = pte_offset_kernel(pmd, address);
...@@ -1053,7 +1053,7 @@ spurious_kernel_fault(unsigned long error_code, unsigned long address) ...@@ -1053,7 +1053,7 @@ spurious_kernel_fault(unsigned long error_code, unsigned long address)
if (!pmd_present(*pmd)) if (!pmd_present(*pmd))
return 0; return 0;
if (pmd_large(*pmd)) if (pmd_leaf(*pmd))
return spurious_kernel_fault_check(error_code, (pte_t *) pmd); return spurious_kernel_fault_check(error_code, (pte_t *) pmd);
pte = pte_offset_kernel(pmd, address); pte = pte_offset_kernel(pmd, address);
......
...@@ -463,7 +463,7 @@ void __init native_pagetable_init(void) ...@@ -463,7 +463,7 @@ void __init native_pagetable_init(void)
break; break;
/* should not be large page here */ /* should not be large page here */
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
pr_warn("try to clear pte for ram above max_low_pfn: pfn: %lx pmd: %p pmd phys: %lx, but pmd is big page and is not using pte !\n", pr_warn("try to clear pte for ram above max_low_pfn: pfn: %lx pmd: %p pmd phys: %lx, but pmd is big page and is not using pte !\n",
pfn, pmd, __pa(pmd)); pfn, pmd, __pa(pmd));
BUG_ON(1); BUG_ON(1);
......
...@@ -530,7 +530,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long paddr, unsigned long paddr_end, ...@@ -530,7 +530,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long paddr, unsigned long paddr_end,
} }
if (!pmd_none(*pmd)) { if (!pmd_none(*pmd)) {
if (!pmd_large(*pmd)) { if (!pmd_leaf(*pmd)) {
spin_lock(&init_mm.page_table_lock); spin_lock(&init_mm.page_table_lock);
pte = (pte_t *)pmd_page_vaddr(*pmd); pte = (pte_t *)pmd_page_vaddr(*pmd);
paddr_last = phys_pte_init(pte, paddr, paddr_last = phys_pte_init(pte, paddr,
...@@ -1114,7 +1114,7 @@ remove_pmd_table(pmd_t *pmd_start, unsigned long addr, unsigned long end, ...@@ -1114,7 +1114,7 @@ remove_pmd_table(pmd_t *pmd_start, unsigned long addr, unsigned long end,
if (!pmd_present(*pmd)) if (!pmd_present(*pmd))
continue; continue;
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
if (IS_ALIGNED(addr, PMD_SIZE) && if (IS_ALIGNED(addr, PMD_SIZE) &&
IS_ALIGNED(next, PMD_SIZE)) { IS_ALIGNED(next, PMD_SIZE)) {
if (!direct) if (!direct)
...@@ -1520,9 +1520,9 @@ void __meminit vmemmap_set_pmd(pmd_t *pmd, void *p, int node, ...@@ -1520,9 +1520,9 @@ void __meminit vmemmap_set_pmd(pmd_t *pmd, void *p, int node,
int __meminit vmemmap_check_pmd(pmd_t *pmd, int node, int __meminit vmemmap_check_pmd(pmd_t *pmd, int node,
unsigned long addr, unsigned long next) unsigned long addr, unsigned long next)
{ {
int large = pmd_large(*pmd); int large = pmd_leaf(*pmd);
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
vmemmap_verify((pte_t *)pmd, node, addr, next); vmemmap_verify((pte_t *)pmd, node, addr, next);
vmemmap_use_sub_pmd(addr, next); vmemmap_use_sub_pmd(addr, next);
} }
......
...@@ -95,7 +95,7 @@ static void __init kasan_populate_pud(pud_t *pud, unsigned long addr, ...@@ -95,7 +95,7 @@ static void __init kasan_populate_pud(pud_t *pud, unsigned long addr,
pmd = pmd_offset(pud, addr); pmd = pmd_offset(pud, addr);
do { do {
next = pmd_addr_end(addr, end); next = pmd_addr_end(addr, end);
if (!pmd_large(*pmd)) if (!pmd_leaf(*pmd))
kasan_populate_pmd(pmd, addr, next, nid); kasan_populate_pmd(pmd, addr, next, nid);
} while (pmd++, addr = next, addr != end); } while (pmd++, addr = next, addr != end);
} }
......
...@@ -161,7 +161,7 @@ static void __init sme_populate_pgd_large(struct sme_populate_pgd_data *ppd) ...@@ -161,7 +161,7 @@ static void __init sme_populate_pgd_large(struct sme_populate_pgd_data *ppd)
return; return;
pmd = pmd_offset(pud, ppd->vaddr); pmd = pmd_offset(pud, ppd->vaddr);
if (pmd_large(*pmd)) if (pmd_leaf(*pmd))
return; return;
set_pmd(pmd, __pmd(ppd->paddr | ppd->pmd_flags)); set_pmd(pmd, __pmd(ppd->paddr | ppd->pmd_flags));
...@@ -185,7 +185,7 @@ static void __init sme_populate_pgd(struct sme_populate_pgd_data *ppd) ...@@ -185,7 +185,7 @@ static void __init sme_populate_pgd(struct sme_populate_pgd_data *ppd)
set_pmd(pmd, __pmd(PMD_FLAGS | __pa(pte))); set_pmd(pmd, __pmd(PMD_FLAGS | __pa(pte)));
} }
if (pmd_large(*pmd)) if (pmd_leaf(*pmd))
return; return;
pte = pte_offset_kernel(pmd, ppd->vaddr); pte = pte_offset_kernel(pmd, ppd->vaddr);
......
...@@ -692,7 +692,7 @@ pte_t *lookup_address_in_pgd(pgd_t *pgd, unsigned long address, ...@@ -692,7 +692,7 @@ pte_t *lookup_address_in_pgd(pgd_t *pgd, unsigned long address,
return NULL; return NULL;
*level = PG_LEVEL_2M; *level = PG_LEVEL_2M;
if (pmd_large(*pmd) || !pmd_present(*pmd)) if (pmd_leaf(*pmd) || !pmd_present(*pmd))
return (pte_t *)pmd; return (pte_t *)pmd;
*level = PG_LEVEL_4K; *level = PG_LEVEL_4K;
...@@ -1229,7 +1229,7 @@ static void unmap_pmd_range(pud_t *pud, unsigned long start, unsigned long end) ...@@ -1229,7 +1229,7 @@ static void unmap_pmd_range(pud_t *pud, unsigned long start, unsigned long end)
* Try to unmap in 2M chunks. * Try to unmap in 2M chunks.
*/ */
while (end - start >= PMD_SIZE) { while (end - start >= PMD_SIZE) {
if (pmd_large(*pmd)) if (pmd_leaf(*pmd))
pmd_clear(pmd); pmd_clear(pmd);
else else
__unmap_pmd_range(pud, pmd, start, start + PMD_SIZE); __unmap_pmd_range(pud, pmd, start, start + PMD_SIZE);
......
...@@ -792,7 +792,7 @@ int pud_clear_huge(pud_t *pud) ...@@ -792,7 +792,7 @@ int pud_clear_huge(pud_t *pud)
*/ */
int pmd_clear_huge(pmd_t *pmd) int pmd_clear_huge(pmd_t *pmd)
{ {
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
pmd_clear(pmd); pmd_clear(pmd);
return 1; return 1;
} }
......
...@@ -252,7 +252,7 @@ static pte_t *pti_user_pagetable_walk_pte(unsigned long address) ...@@ -252,7 +252,7 @@ static pte_t *pti_user_pagetable_walk_pte(unsigned long address)
return NULL; return NULL;
/* We can't do anything sensible if we hit a large mapping. */ /* We can't do anything sensible if we hit a large mapping. */
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
WARN_ON(1); WARN_ON(1);
return NULL; return NULL;
} }
...@@ -341,7 +341,7 @@ pti_clone_pgtable(unsigned long start, unsigned long end, ...@@ -341,7 +341,7 @@ pti_clone_pgtable(unsigned long start, unsigned long end,
continue; continue;
} }
if (pmd_large(*pmd) || level == PTI_CLONE_PMD) { if (pmd_leaf(*pmd) || level == PTI_CLONE_PMD) {
target_pmd = pti_user_pagetable_walk_pmd(addr); target_pmd = pti_user_pagetable_walk_pmd(addr);
if (WARN_ON(!target_pmd)) if (WARN_ON(!target_pmd))
return; return;
......
...@@ -175,7 +175,7 @@ int relocate_restore_code(void) ...@@ -175,7 +175,7 @@ int relocate_restore_code(void)
goto out; goto out;
} }
pmd = pmd_offset(pud, relocated_restore_code); pmd = pmd_offset(pud, relocated_restore_code);
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
set_pmd(pmd, __pmd(pmd_val(*pmd) & ~_PAGE_NX)); set_pmd(pmd, __pmd(pmd_val(*pmd) & ~_PAGE_NX));
goto out; goto out;
} }
......
...@@ -1059,7 +1059,7 @@ static void __init xen_cleanmfnmap_pmd(pmd_t *pmd, bool unpin) ...@@ -1059,7 +1059,7 @@ static void __init xen_cleanmfnmap_pmd(pmd_t *pmd, bool unpin)
pte_t *pte_tbl; pte_t *pte_tbl;
int i; int i;
if (pmd_large(*pmd)) { if (pmd_leaf(*pmd)) {
pa = pmd_val(*pmd) & PHYSICAL_PAGE_MASK; pa = pmd_val(*pmd) & PHYSICAL_PAGE_MASK;
xen_free_ro_pages(pa, PMD_SIZE); xen_free_ro_pages(pa, PMD_SIZE);
return; return;
...@@ -1871,7 +1871,7 @@ static phys_addr_t __init xen_early_virt_to_phys(unsigned long vaddr) ...@@ -1871,7 +1871,7 @@ static phys_addr_t __init xen_early_virt_to_phys(unsigned long vaddr)
if (!pmd_present(pmd)) if (!pmd_present(pmd))
return 0; return 0;
pa = pmd_val(pmd) & PTE_PFN_MASK; pa = pmd_val(pmd) & PTE_PFN_MASK;
if (pmd_large(pmd)) if (pmd_leaf(pmd))
return pa + (vaddr & ~PMD_MASK); return pa + (vaddr & ~PMD_MASK);
pte = native_make_pte(xen_read_phys_ulong(pa + pte_index(vaddr) * pte = native_make_pte(xen_read_phys_ulong(pa + pte_index(vaddr) *
......
...@@ -227,7 +227,7 @@ static int atomic_pte_lookup(struct vm_area_struct *vma, unsigned long vaddr, ...@@ -227,7 +227,7 @@ static int atomic_pte_lookup(struct vm_area_struct *vma, unsigned long vaddr,
if (unlikely(pmd_none(*pmdp))) if (unlikely(pmd_none(*pmdp)))
goto err; goto err;
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
if (unlikely(pmd_large(*pmdp))) if (unlikely(pmd_leaf(*pmdp)))
pte = ptep_get((pte_t *)pmdp); pte = ptep_get((pte_t *)pmdp);
else else
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment