Hi Stuart, On Sun, Jun 30, 2024 at 1:06 PM Stuart Menefy <stuart.menefy@xxxxxxxxxxx> wrote: > > This harmonizes all virtual addressing modes which can now all map > (PGDIR_SIZE * PTRS_PER_PGD) / 4 of physical memory. > > The RISCV implementation of KASAN requires that the boundary between > shallow mappings are aligned on an 8G boundary. In this case we need > VMALLOC_START to be 8G aligned. So although we only need to move the > start of the linear mapping down by 4GiB to allow 128GiB to be mapped, > we actually move it down by 8GiB (creating a 4GiB hole between the > linear mapping and KASAN shadow space) to maintain the alignment > requirement. > > Signed-off-by: Stuart Menefy <stuart.menefy@xxxxxxxxxxx> > --- > > Changes since V1: > This is a modified version of the patch posted by Alexandre Ghiti > <alexghiti@xxxxxxxxxxxx> [1]. That version moved the start of the > liner mapping by 4GiB, but was subsequently found to trigger a problem > in the KASAN code [2]. By moving the start address by 8GiB alignment > requiremenents are maintained. > > [1] https://lore.kernel.org/linux-riscv/20240514133614.87813-1-alexghiti@xxxxxxxxxxxx/ > [2] https://lore.kernel.org/linux-riscv/4011b34a-1b86-42c7-aaf6-3bd297149f06@xxxxxxxx/ > > --- > Documentation/arch/riscv/vm-layout.rst | 11 ++++++----- > arch/riscv/include/asm/page.h | 2 +- > 2 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/Documentation/arch/riscv/vm-layout.rst b/Documentation/arch/riscv/vm-layout.rst > index e476b4386bd9..077b968dcc81 100644 > --- a/Documentation/arch/riscv/vm-layout.rst > +++ b/Documentation/arch/riscv/vm-layout.rst > @@ -47,11 +47,12 @@ RISC-V Linux Kernel SV39 > | Kernel-space virtual memory, shared between all processes: > ____________________________________________________________|___________________________________________________________ > | | | | > - ffffffc6fea00000 | -228 GB | ffffffc6feffffff | 6 MB | fixmap > - ffffffc6ff000000 | -228 GB | ffffffc6ffffffff | 16 MB | PCI io > - ffffffc700000000 | -228 GB | ffffffc7ffffffff | 4 GB | vmemmap > - ffffffc800000000 | -224 GB | ffffffd7ffffffff | 64 GB | vmalloc/ioremap space > - ffffffd800000000 | -160 GB | fffffff6ffffffff | 124 GB | direct mapping of all physical memory > + ffffffc4fea00000 | -236 GB | ffffffc4feffffff | 6 MB | fixmap > + ffffffc4ff000000 | -236 GB | ffffffc4ffffffff | 16 MB | PCI io > + ffffffc500000000 | -236 GB | ffffffc5ffffffff | 4 GB | vmemmap > + ffffffc600000000 | -232 GB | ffffffd5ffffffff | 64 GB | vmalloc/ioremap space > + ffffffd600000000 | -168 GB | fffffff5ffffffff | 128 GB | direct mapping of all physical memory > + | | | | > fffffff700000000 | -36 GB | fffffffeffffffff | 32 GB | kasan > __________________|____________|__________________|_________|____________________________________________________________ > | > diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h > index 115ac98b8d72..81d47fbbd927 100644 > --- a/arch/riscv/include/asm/page.h > +++ b/arch/riscv/include/asm/page.h > @@ -37,7 +37,7 @@ > * define the PAGE_OFFSET value for SV48 and SV39. > */ > #define PAGE_OFFSET_L4 _AC(0xffffaf8000000000, UL) > -#define PAGE_OFFSET_L3 _AC(0xffffffd800000000, UL) > +#define PAGE_OFFSET_L3 _AC(0xffffffd600000000, UL) > #else > #define PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL) > #endif /* CONFIG_64BIT */ > -- > 2.43.0 > So the issue was with my patch, sorry! Your fix makes sense so you can add: Reviewed-by: Alexandre Ghiti <alexghiti@xxxxxxxxxxxx> Thanks, Alex