Unverified Commit c3bcc65d authored by Alexandre Ghiti's avatar Alexandre Ghiti Committed by Palmer Dabbelt
Browse files

riscv: Start of DRAM should at least be aligned on PMD size for the direct mapping



So that we do not end up mapping the whole linear mapping using 4K
pages, which is slow at boot time, and also very likely at runtime.

So make sure we align the start of DRAM on a PMD boundary.

Signed-off-by: default avatarAlexandre Ghiti <alexghiti@rivosinc.com>
Reported-by: default avatarSong Shuai <suagrfillet@gmail.com>
Fixes: 3335068f ("riscv: Use PUD/P4D/PGD pages for the linear mapping")
Tested-by: default avatarSong Shuai <suagrfillet@gmail.com>
Link: https://lore.kernel.org/r/20230704121837.248976-1-alexghiti@rivosinc.com


Cc: stable@vger.kernel.org
Signed-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
parent f8069826
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -214,8 +214,13 @@ static void __init setup_bootmem(void)
	memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);

	phys_ram_end = memblock_end_of_DRAM();

	/*
	 * Make sure we align the start of the memory on a PMD boundary so that
	 * at worst, we map the linear mapping with PMD mappings.
	 */
	if (!IS_ENABLED(CONFIG_XIP_KERNEL))
		phys_ram_base = memblock_start_of_DRAM();
		phys_ram_base = memblock_start_of_DRAM() & PMD_MASK;

	/*
	 * In 64-bit, any use of __va/__pa before this point is wrong as we