[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171003125940.6d5fyhwx2lkzxn67@dhcp22.suse.cz>
Date: Tue, 3 Oct 2017 14:59:40 +0200
From: Michal Hocko <mhocko@...nel.org>
To: Pavel Tatashin <pasha.tatashin@...cle.com>
Cc: linux-kernel@...r.kernel.org, sparclinux@...r.kernel.org,
linux-mm@...ck.org, linuxppc-dev@...ts.ozlabs.org,
linux-s390@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
x86@...nel.org, kasan-dev@...glegroups.com, borntraeger@...ibm.com,
heiko.carstens@...ibm.com, davem@...emloft.net,
willy@...radead.org, ard.biesheuvel@...aro.org,
mark.rutland@....com, will.deacon@....com, catalin.marinas@....com,
sam@...nborg.org, mgorman@...hsingularity.net,
steven.sistare@...cle.com, daniel.m.jordan@...cle.com,
bob.picco@...cle.com
Subject: Re: [PATCH v9 04/12] sparc64: simplify vmemmap_populate
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@...cle.com>
> Reviewed-by: Steven Sistare <steven.sistare@...cle.com>
> Reviewed-by: Daniel Jordan <daniel.m.jordan@...cle.com>
> Reviewed-by: Bob Picco <bob.picco@...cle.com>
> Acked-by: David S. Miller <davem@...emloft.net>
Acked-by: Michal Hocko <mhocko@...e.com>
> ---
> 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
Powered by blists - more mailing lists