lkml.org 
[lkml]   [2021]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/4] microblaze: simplify pte_alloc_one_kernel()
    Date
    From: Mike Rapoport <rppt@linux.ibm.com>

    The microblaze's implementation of pte_alloc_one_kernel() used
    memblock_alloc_try_nid_raw() along with clear_page() to allocated a zeroed
    page during early setup.

    Replace calls of these functions with a call to memblock_alloc_try_nid()
    that already returns zeroed page and respects the same allocation limits as
    memblock_alloc_try_nid_raw().

    While on it drop early_get_page() wrapper that was only used in
    pte_alloc_one_kernel().

    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    ---
    arch/microblaze/include/asm/pgtable.h | 2 --
    arch/microblaze/mm/init.c | 12 ------------
    arch/microblaze/mm/pgtable.c | 17 ++++++++---------
    3 files changed, 8 insertions(+), 23 deletions(-)

    diff --git a/arch/microblaze/include/asm/pgtable.h b/arch/microblaze/include/asm/pgtable.h
    index 71cd547655d9..c136a01e467e 100644
    --- a/arch/microblaze/include/asm/pgtable.h
    +++ b/arch/microblaze/include/asm/pgtable.h
    @@ -443,8 +443,6 @@ extern int mem_init_done;

    asmlinkage void __init mmu_init(void);

    -void __init *early_get_page(void);
    -
    #endif /* __ASSEMBLY__ */
    #endif /* __KERNEL__ */

    diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
    index ab55c70380a5..952f35b335b2 100644
    --- a/arch/microblaze/mm/init.c
    +++ b/arch/microblaze/mm/init.c
    @@ -265,18 +265,6 @@ asmlinkage void __init mmu_init(void)
    dma_contiguous_reserve(memory_start + lowmem_size - 1);
    }

    -/* This is only called until mem_init is done. */
    -void __init *early_get_page(void)
    -{
    - /*
    - * Mem start + kernel_tlb -> here is limit
    - * because of mem mapping from head.S
    - */
    - return memblock_alloc_try_nid_raw(PAGE_SIZE, PAGE_SIZE,
    - MEMBLOCK_LOW_LIMIT, memory_start + kernel_tlb,
    - NUMA_NO_NODE);
    -}
    -
    void * __ref zalloc_maybe_bootmem(size_t size, gfp_t mask)
    {
    void *p;
    diff --git a/arch/microblaze/mm/pgtable.c b/arch/microblaze/mm/pgtable.c
    index 38ccb909bc9d..c1833b159d3b 100644
    --- a/arch/microblaze/mm/pgtable.c
    +++ b/arch/microblaze/mm/pgtable.c
    @@ -33,6 +33,7 @@
    #include <linux/init.h>
    #include <linux/mm_types.h>
    #include <linux/pgtable.h>
    +#include <linux/memblock.h>

    #include <asm/pgalloc.h>
    #include <linux/io.h>
    @@ -242,15 +243,13 @@ unsigned long iopa(unsigned long addr)

    __ref pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
    {
    - pte_t *pte;
    - if (mem_init_done) {
    - pte = (pte_t *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
    - } else {
    - pte = (pte_t *)early_get_page();
    - if (pte)
    - clear_page(pte);
    - }
    - return pte;
    + if (mem_init_done)
    + return (pte_t *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
    + else
    + return memblock_alloc_try_nid(PAGE_SIZE, PAGE_SIZE,
    + MEMBLOCK_LOW_LIMIT,
    + memory_start + kernel_tlb,
    + NUMA_NO_NODE);
    }

    void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags)
    --
    2.28.0
    \
     
     \ /
      Last update: 2021-07-14 14:39    [W:4.864 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site