vmemmap_pte_populate() no longer uses ptpfn as an input.  It computes
the PFN locally in both cases before building the PTE.

Drop the argument and inline the PFN computation at the PTE creation
sites.

Signed-off-by: Muchun Song <[email protected]>
---
 mm/sparse-vmemmap.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
index 4833a2295abb..182d0c7dd1e7 100644
--- a/mm/sparse-vmemmap.c
+++ b/mm/sparse-vmemmap.c
@@ -124,8 +124,7 @@ void __meminit vmemmap_verify(pte_t *pte, int node,
 }
 
 static pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, 
int node,
-                                             struct vmem_altmap *altmap,
-                                             unsigned long ptpfn)
+                                             struct vmem_altmap *altmap)
 {
        pte_t entry, *pte = pte_offset_kernel(pmd, addr);
        struct page *page = (struct page *)addr;
@@ -158,15 +157,15 @@ static pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, 
unsigned long addr, in
                 */
                if (slab_is_available())
                        get_page(page);
-               ptpfn = page_to_pfn(page);
+
+               entry = pfn_pte(page_to_pfn(page), PAGE_KERNEL);
        } else {
                void *vaddr = vmemmap_alloc_block_buf(PAGE_SIZE, node, altmap);
 
                if (!vaddr)
                        return NULL;
-               ptpfn = PHYS_PFN(__pa(vaddr));
+               entry = pfn_pte(PHYS_PFN(__pa(vaddr)), PAGE_KERNEL);
        }
-       entry = pfn_pte(ptpfn, PAGE_KERNEL);
        set_pte_at(&init_mm, addr, pte, entry);
 
        return pte;
@@ -235,8 +234,7 @@ static pgd_t * __meminit vmemmap_pgd_populate(unsigned long 
addr, int node)
 }
 
 static pte_t * __meminit vmemmap_populate_address(unsigned long addr, int node,
-                                             struct vmem_altmap *altmap,
-                                             unsigned long ptpfn)
+                                                 struct vmem_altmap *altmap)
 {
        pgd_t *pgd;
        p4d_t *p4d;
@@ -256,7 +254,7 @@ static pte_t * __meminit vmemmap_populate_address(unsigned 
long addr, int node,
        pmd = vmemmap_pmd_populate(pud, addr, node);
        if (!pmd)
                return NULL;
-       pte = vmemmap_pte_populate(pmd, addr, node, altmap, ptpfn);
+       pte = vmemmap_pte_populate(pmd, addr, node, altmap);
        if (!pte)
                return NULL;
        vmemmap_verify(pte, node, addr, addr + PAGE_SIZE);
@@ -268,7 +266,7 @@ int __meminit vmemmap_populate_basepages(unsigned long 
start, unsigned long end,
                                         int node, struct vmem_altmap *altmap)
 {
        for (; start < end; start += PAGE_SIZE)
-               if (!vmemmap_populate_address(start, node, altmap, -1))
+               if (!vmemmap_populate_address(start, node, altmap))
                        return -ENOMEM;
 
        return 0;
-- 
2.54.0


Reply via email to