[PATCH] x86/mm: calculate the proper boundary in register_page_bootmem_memmap()

From: Wei Yang
Date: Mon Jun 29 2020 - 23:22:20 EST


It would be proper to jump to end boundary of the proper level instead
of always jump to the end boundary of a PAGE.

Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxxxxxxxxxx>
CC: Baoquan He <bhe@xxxxxxxxxx>
CC: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
---
arch/x86/mm/init_64.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index f902fbd17f27..45eddb755eaa 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -1536,21 +1536,21 @@ void register_page_bootmem_memmap(unsigned long section_nr,

pgd = pgd_offset_k(addr);
if (pgd_none(*pgd)) {
- next = (addr + PAGE_SIZE) & PAGE_MASK;
+ next = pgd_addr_end(addr, end);
continue;
}
get_page_bootmem(section_nr, pgd_page(*pgd), MIX_SECTION_INFO);

p4d = p4d_offset(pgd, addr);
if (p4d_none(*p4d)) {
- next = (addr + PAGE_SIZE) & PAGE_MASK;
+ next = p4d_addr_end(addr, end);
continue;
}
get_page_bootmem(section_nr, p4d_page(*p4d), MIX_SECTION_INFO);

pud = pud_offset(p4d, addr);
if (pud_none(*pud)) {
- next = (addr + PAGE_SIZE) & PAGE_MASK;
+ next = pud_addr_end(addr, end);
continue;
}
get_page_bootmem(section_nr, pud_page(*pud), MIX_SECTION_INFO);
--
2.20.1 (Apple Git-117)