riscv: Covert to reserve_initrd_mem()
authorKefeng Wang <wangkefeng.wang@huawei.com>
Fri, 15 Jan 2021 05:46:06 +0000 (13:46 +0800)
committerPalmer Dabbelt <palmerdabbelt@google.com>
Fri, 19 Feb 2021 07:17:58 +0000 (23:17 -0800)
Covert to the generic reserve_initrd_mem() function.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
arch/riscv/mm/init.c

index 45faad7..c9bbab7 100644 (file)
@@ -106,55 +106,6 @@ void __init mem_init(void)
        print_vm_layout();
 }
 
-#ifdef CONFIG_BLK_DEV_INITRD
-static void __init setup_initrd(void)
-{
-       phys_addr_t start;
-       unsigned long size;
-
-       /* Ignore the virtul address computed during device tree parsing */
-       initrd_start = initrd_end = 0;
-
-       if (!phys_initrd_size)
-               return;
-       /*
-        * Round the memory region to page boundaries as per free_initrd_mem()
-        * This allows us to detect whether the pages overlapping the initrd
-        * are in use, but more importantly, reserves the entire set of pages
-        * as we don't want these pages allocated for other purposes.
-        */
-       start = round_down(phys_initrd_start, PAGE_SIZE);
-       size = phys_initrd_size + (phys_initrd_start - start);
-       size = round_up(size, PAGE_SIZE);
-
-       if (!memblock_is_region_memory(start, size)) {
-               pr_err("INITRD: 0x%08llx+0x%08lx is not a memory region",
-                      (u64)start, size);
-               goto disable;
-       }
-
-       if (memblock_is_region_reserved(start, size)) {
-               pr_err("INITRD: 0x%08llx+0x%08lx overlaps in-use memory region\n",
-                      (u64)start, size);
-               goto disable;
-       }
-
-       memblock_reserve(start, size);
-       /* Now convert initrd to virtual addresses */
-       initrd_start = (unsigned long)__va(phys_initrd_start);
-       initrd_end = initrd_start + phys_initrd_size;
-       initrd_below_start_ok = 1;
-
-       pr_info("Initial ramdisk at: 0x%p (%lu bytes)\n",
-               (void *)(initrd_start), size);
-       return;
-disable:
-       pr_cont(" - disabling initrd\n");
-       initrd_start = 0;
-       initrd_end = 0;
-}
-#endif /* CONFIG_BLK_DEV_INITRD */
-
 void __init setup_bootmem(void)
 {
        phys_addr_t mem_start = 0;
@@ -187,10 +138,7 @@ void __init setup_bootmem(void)
        dma32_phys_limit = min(4UL * SZ_1G, (unsigned long)PFN_PHYS(max_low_pfn));
        set_max_mapnr(max_low_pfn);
 
-#ifdef CONFIG_BLK_DEV_INITRD
-       setup_initrd();
-#endif /* CONFIG_BLK_DEV_INITRD */
-
+       reserve_initrd_mem();
        /*
         * If DTB is built in, no need to reserve its memblock.
         * Otherwise, do reserve it but avoid using