]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/mm/pat: Convert pte code to use page table apis
authorVishal Moola (Oracle) <vishal.moola@gmail.com>
Tue, 3 Mar 2026 19:48:24 +0000 (11:48 -0800)
committerDave Hansen <dave.hansen@linux.intel.com>
Wed, 4 Mar 2026 18:08:54 +0000 (10:08 -0800)
Use the ptdesc APIs for all page table allocation and free sites to allow
their separate allocation from struct page in the future. Convert the PTE
allocation and free sites to use the generic page table APIs, as they
already use ptdescs.

Pass through init_mm since these are kernel page tables; otherwise,
pte_alloc_one_kernel() becomes a no-op.

Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Link: https://patch.msgid.link/20260303194828.1406905-2-vishal.moola@gmail.com
arch/x86/mm/pat/set_memory.c

index 40581a720fe82934fc0976f882dca69a9887f295..a4b1b329c23de10c45b6e77b18ba61f3fd891bc3 100644 (file)
@@ -1408,7 +1408,7 @@ static bool try_to_free_pte_page(pte_t *pte)
                if (!pte_none(pte[i]))
                        return false;
 
-       free_page((unsigned long)pte);
+       pte_free_kernel(&init_mm, pte);
        return true;
 }
 
@@ -1539,7 +1539,7 @@ static void unmap_pud_range(p4d_t *p4d, unsigned long start, unsigned long end)
 
 static int alloc_pte_page(pmd_t *pmd)
 {
-       pte_t *pte = (pte_t *)get_zeroed_page(GFP_KERNEL);
+       pte_t *pte = pte_alloc_one_kernel(&init_mm);
        if (!pte)
                return -1;