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