unicore32: switch to NO_BOOTMEM
authorMike Rapoport <rppt@linux.vnet.ibm.com>
Fri, 26 Oct 2018 22:05:05 +0000 (15:05 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Oct 2018 23:25:20 +0000 (16:25 -0700)
The unicore32 architecture already supports memblock and uses it for some
early memory reservations, e.g initrd and the page tables.

At some point unicore32 allocates the bootmem bitmap from the memblock and
then hands over the memory reservations from memblock to bootmem.

This patch removes the bootmem initialization and leaves memblock as the
only boot time memory manager for unicore32.

Link: http://lkml.kernel.org/r/1533326330-31677-8-git-send-email-rppt@linux.vnet.ibm.com
Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Acked-by: Guan Xuetao <gxt@pku.edu.cn>
Cc: Ley Foon Tan <ley.foon.tan@intel.com>
Cc: Richard Kuo <rkuo@codeaurora.org>
Cc: Richard Weinberger <richard@nod.at>
Cc: Rob Herring <robh@kernel.org>
Cc: Michal Hocko <mhocko@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/unicore32/Kconfig
arch/unicore32/mm/init.c

index 3a3b40f795589220c7183227de470033bb5316fd..0c5111b206bd8e8b2cdf7ea87d38ce664eba55f6 100644 (file)
@@ -6,6 +6,7 @@ config UNICORE32
        select ARCH_MIGHT_HAVE_PC_SERIO
        select DMA_DIRECT_OPS
        select HAVE_MEMBLOCK
        select ARCH_MIGHT_HAVE_PC_SERIO
        select DMA_DIRECT_OPS
        select HAVE_MEMBLOCK
+       select NO_BOOTMEM
        select HAVE_GENERIC_DMA_COHERENT
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_BZIP2
        select HAVE_GENERIC_DMA_COHERENT
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_BZIP2
index 5f72a8d1d95348aad10dfad29694df5c69e6519f..8f8699e62bd5ac9b4f78916e3e5eec5e14aa9fa9 100644 (file)
@@ -84,58 +84,6 @@ static void __init find_limits(unsigned long *min, unsigned long *max_low,
        }
 }
 
        }
 }
 
-static void __init uc32_bootmem_init(unsigned long start_pfn,
-       unsigned long end_pfn)
-{
-       struct memblock_region *reg;
-       unsigned int boot_pages;
-       phys_addr_t bitmap;
-       pg_data_t *pgdat;
-
-       /*
-        * Allocate the bootmem bitmap page.  This must be in a region
-        * of memory which has already been mapped.
-        */
-       boot_pages = bootmem_bootmap_pages(end_pfn - start_pfn);
-       bitmap = memblock_alloc_base(boot_pages << PAGE_SHIFT, L1_CACHE_BYTES,
-                               __pfn_to_phys(end_pfn));
-
-       /*
-        * Initialise the bootmem allocator, handing the
-        * memory banks over to bootmem.
-        */
-       node_set_online(0);
-       pgdat = NODE_DATA(0);
-       init_bootmem_node(pgdat, __phys_to_pfn(bitmap), start_pfn, end_pfn);
-
-       /* Free the lowmem regions from memblock into bootmem. */
-       for_each_memblock(memory, reg) {
-               unsigned long start = memblock_region_memory_base_pfn(reg);
-               unsigned long end = memblock_region_memory_end_pfn(reg);
-
-               if (end >= end_pfn)
-                       end = end_pfn;
-               if (start >= end)
-                       break;
-
-               free_bootmem(__pfn_to_phys(start), (end - start) << PAGE_SHIFT);
-       }
-
-       /* Reserve the lowmem memblock reserved regions in bootmem. */
-       for_each_memblock(reserved, reg) {
-               unsigned long start = memblock_region_reserved_base_pfn(reg);
-               unsigned long end = memblock_region_reserved_end_pfn(reg);
-
-               if (end >= end_pfn)
-                       end = end_pfn;
-               if (start >= end)
-                       break;
-
-               reserve_bootmem(__pfn_to_phys(start),
-                       (end - start) << PAGE_SHIFT, BOOTMEM_DEFAULT);
-       }
-}
-
 static void __init uc32_bootmem_free(unsigned long min, unsigned long max_low,
        unsigned long max_high)
 {
 static void __init uc32_bootmem_free(unsigned long min, unsigned long max_low,
        unsigned long max_high)
 {
@@ -232,7 +180,7 @@ void __init bootmem_init(void)
 
        find_limits(&min, &max_low, &max_high);
 
 
        find_limits(&min, &max_low, &max_high);
 
-       uc32_bootmem_init(min, max_low);
+       node_set_online(0);
 
        /*
         * Sparsemem tries to allocate bootmem in memory_present(),
 
        /*
         * Sparsemem tries to allocate bootmem in memory_present(),