riscv: Add support for memtest
authorKefeng Wang <wangkefeng.wang@huawei.com>
Thu, 25 Feb 2021 06:54:17 +0000 (14:54 +0800)
committerPalmer Dabbelt <palmerdabbelt@google.com>
Wed, 10 Mar 2021 02:09:46 +0000 (18:09 -0800)
The riscv [rv32_]defconfig enabled CONFIG_MEMTEST,
but memtest feature is not supported in RISCV.

Add early_memtest() to support for memtest.

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

index 0454572..20447b5 100644 (file)
                        seconds.  Use this parameter to check at some
                        other rate.  0 disables periodic checking.
 
-       memtest=        [KNL,X86,ARM,PPC] Enable memtest
+       memtest=        [KNL,X86,ARM,PPC,RISCV] Enable memtest
                        Format: <integer>
                        default : 0 <disable>
                        Specifies the number of memtest passes to be
index 067583a..7f5036f 100644 (file)
@@ -128,8 +128,9 @@ void __init setup_bootmem(void)
        if (max_mapped_addr == (dram_end - 1))
                memblock_set_current_limit(max_mapped_addr - 4096);
 
-       max_pfn = PFN_DOWN(dram_end);
-       max_low_pfn = max_pfn;
+       min_low_pfn = PFN_UP(memblock_start_of_DRAM());
+       max_low_pfn = max_pfn = PFN_DOWN(dram_end);
+
        dma32_phys_limit = min(4UL * SZ_1G, (unsigned long)PFN_PHYS(max_low_pfn));
        set_max_mapnr(max_low_pfn - ARCH_PFN_OFFSET);
 
@@ -593,6 +594,7 @@ void __init paging_init(void)
 
 void __init misc_mem_init(void)
 {
+       early_memtest(min_low_pfn << PAGE_SHIFT, max_low_pfn << PAGE_SHIFT);
        arch_numa_init();
        sparse_init();
        zone_sizes_init();