[RFC PATCH 24/34] x86: mm: call try_to_free_pmd_page() when CONFIG_PGTABLE_LEVELS > 2
Yeoreum Yun <[email protected]> Mon, 13 Jul 2026 14:56:03 +0100
| Newsgroups | org.kernel.vger.linux-csky,dev.linux.lists.loongarch,org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.linux-arch,org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k,org.kernel.vger.linux-mips,org.kernel.vger.linux-openrisc,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
We want to rework how pgd_page_vaddr() behaves for generic compile-time folded page tables by disallowing its use and triggering a compile-time error when it is used improperly, ensuring that the actual first-level pXd_pgtable() function is used instead. The try_to_free_pmd_page() wouldn't need to call when CONFIG_PGTABLE_LEVELS=2. therefore call it when CONFIG_PGTABLE_LEVELS > 2. There should be no functional change. Signed-off-by: Yeoreum Yun <[email protected]> --- arch/x86/mm/pat/set_memory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c index cffb1cef869cc..2137174b733ae 100644 --- a/arch/x86/mm/pat/set_memory.c +++ b/arch/x86/mm/pat/set_memory.c @@ -1452,7 +1452,7 @@ static bool unmap_pte_range(pmd_t *pmd, unsigned long start, unsigned long end) static void __unmap_pmd_range(pud_t *pud, pmd_t *pmd, unsigned long start, unsigned long end) { - if (unmap_pte_range(pmd, start, end)) + if (unmap_pte_range(pmd, start, end) && CONFIG_PGTABLE_LEVELS > 2) if (try_to_free_pmd_page(pud_pgtable(*pud))) pud_clear(pud); } @@ -1496,7 +1496,7 @@ static void unmap_pmd_range(pud_t *pud, unsigned long start, unsigned long end) /* * Try again to free the PMD page if haven't succeeded above. */ - if (!pud_none(*pud)) + if (!pud_none(*pud) && CONFIG_PGTABLE_LEVELS > 2) if (try_to_free_pmd_page(pud_pgtable(*pud))) pud_clear(pud); } -- LEVI:{C3F47F37-75D8-414A-A8BA-3980EC8A46D7}