Message ID | 20240814062625.19794-1-cuiyunhui@bytedance.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | riscv: add a warning when physical memory address overflows | expand |
Context | Check | Description |
---|---|---|
conchuod/vmtest-fixes-PR | fail | merge-conflict |
Hi Yunhui, On 14/08/2024 08:26, Yunhui Cui wrote: > The part of physical memory that exceeds the size of the linear mapping > will be discarded. When the system starts up normally, a warning message > will be printed to prevent confusion caused by the mismatch between the > system memory and the actual physical memory. > > Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com> > --- > arch/riscv/mm/init.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c > index 52290c9bd04bd..c93164dc51658 100644 > --- a/arch/riscv/mm/init.c > +++ b/arch/riscv/mm/init.c > @@ -236,8 +236,12 @@ static void __init setup_bootmem(void) > */ > if (IS_ENABLED(CONFIG_64BIT)) { > max_mapped_addr = __pa(PAGE_OFFSET) + KERN_VIRT_SIZE; > - memblock_cap_memory_range(phys_ram_base, > - max_mapped_addr - phys_ram_base); > + if (memblock_end_of_DRAM() > max_mapped_addr) { > + memblock_cap_memory_range(phys_ram_base, > + max_mapped_addr - phys_ram_base); > + pr_warn("Physical memory overflows the linear mapping size: region above 0x%llx removed", > + max_mapped_addr); > + } > } > > A bit weird to review and test my own patch, but here it is anyway :) Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com> Tested-by: Alexandre Ghiti <alexghiti@rivosinc.com> Thanks, Alex
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 52290c9bd04bd..c93164dc51658 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -236,8 +236,12 @@ static void __init setup_bootmem(void) */ if (IS_ENABLED(CONFIG_64BIT)) { max_mapped_addr = __pa(PAGE_OFFSET) + KERN_VIRT_SIZE; - memblock_cap_memory_range(phys_ram_base, - max_mapped_addr - phys_ram_base); + if (memblock_end_of_DRAM() > max_mapped_addr) { + memblock_cap_memory_range(phys_ram_base, + max_mapped_addr - phys_ram_base); + pr_warn("Physical memory overflows the linear mapping size: region above 0x%llx removed", + max_mapped_addr); + } }
The part of physical memory that exceeds the size of the linear mapping will be discarded. When the system starts up normally, a warning message will be printed to prevent confusion caused by the mismatch between the system memory and the actual physical memory. Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com> --- arch/riscv/mm/init.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)