Message ID | 20210629091349.3802690-2-alex@ghiti.fr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/3] riscv: Fix memory_limit for 64-bit kernel | expand |
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 04a5db3a9788..a1a0c4afa80f 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -742,6 +742,8 @@ static void __init setup_vm_final(void) if (start <= __pa(PAGE_OFFSET) && __pa(PAGE_OFFSET) < end) start = __pa(PAGE_OFFSET); + if (end >= __pa(PAGE_OFFSET) + memory_limit) + end = __pa(PAGE_OFFSET) + memory_limit; map_size = best_map_size(start, end - start); for (pa = start; pa < end; pa += map_size) {
For 64-bit kernel, the end of the address space is occupied by the kernel mapping and currently, the functions to populate the kernel page tables (i.e. create_p*d_mapping) do not override existing mapping so we must make sure the linear mapping does not map memory in the kernel mapping by clipping the memory above the memory limit. Signed-off-by: Alexandre Ghiti <alex@ghiti.fr> --- arch/riscv/mm/init.c | 2 ++ 1 file changed, 2 insertions(+)