Skip to content

Commit

Permalink
riscv: Make sure the linear mapping does not use the kernel mapping
Browse files Browse the repository at this point in the history
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>
Fixes: c9811e3 ("riscv: Add mem kernel parameter support")
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
  • Loading branch information
AlexGhiti authored and palmer-dabbelt committed Jul 23, 2021
1 parent c09dc9e commit c99127c
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions arch/riscv/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,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) {
Expand Down

0 comments on commit c99127c

Please sign in to comment.