On Wed 20-09-17 16:17:06, Pavel Tatashin wrote: > Remove duplicating code by using common functions > vmemmap_pud_populate and vmemmap_pgd_populate. > > Signed-off-by: Pavel Tatashin <pasha.tatashin@xxxxxxxxxx> > Reviewed-by: Steven Sistare <steven.sistare@xxxxxxxxxx> > Reviewed-by: Daniel Jordan <daniel.m.jordan@xxxxxxxxxx> > Reviewed-by: Bob Picco <bob.picco@xxxxxxxxxx> > Acked-by: David S. Miller <davem@xxxxxxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> > --- > arch/sparc/mm/init_64.c | 23 ++++++----------------- > 1 file changed, 6 insertions(+), 17 deletions(-) > > diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c > index 310c6754bcaa..99aea4d15a5f 100644 > --- a/arch/sparc/mm/init_64.c > +++ b/arch/sparc/mm/init_64.c > @@ -2651,30 +2651,19 @@ int __meminit vmemmap_populate(unsigned long vstart, unsigned long vend, > vstart = vstart & PMD_MASK; > vend = ALIGN(vend, PMD_SIZE); > for (; vstart < vend; vstart += PMD_SIZE) { > - pgd_t *pgd = pgd_offset_k(vstart); > + pgd_t *pgd = vmemmap_pgd_populate(vstart, node); > unsigned long pte; > pud_t *pud; > pmd_t *pmd; > > - if (pgd_none(*pgd)) { > - pud_t *new = vmemmap_alloc_block(PAGE_SIZE, node); > + if (!pgd) > + return -ENOMEM; > > - if (!new) > - return -ENOMEM; > - pgd_populate(&init_mm, pgd, new); > - } > - > - pud = pud_offset(pgd, vstart); > - if (pud_none(*pud)) { > - pmd_t *new = vmemmap_alloc_block(PAGE_SIZE, node); > - > - if (!new) > - return -ENOMEM; > - pud_populate(&init_mm, pud, new); > - } > + pud = vmemmap_pud_populate(pgd, vstart, node); > + if (!pud) > + return -ENOMEM; > > pmd = pmd_offset(pud, vstart); > - > pte = pmd_val(*pmd); > if (!(pte & _PAGE_VALID)) { > void *block = vmemmap_alloc_block(PMD_SIZE, node); > -- > 2.14.1 -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>