[PATCH] Documentation: riscv: Document the sv57 VM layout

Alexandre Ghiti alex at ghiti.fr
Fri Nov 18 08:07:40 PST 2022


Hi Björn,

On 10/31/22 19:02, Björn Töpel wrote:
> From: Björn Töpel <bjorn at rivosinc.com>
>
> RISC-V has been supporting the "sv57" address translation mode for a
> while, but is has not been added to the VM layout documentation. Let
> us fix that.
>
> Signed-off-by: Björn Töpel <bjorn at rivosinc.com>
> ---
>   Documentation/riscv/vm-layout.rst | 36 +++++++++++++++++++++++++++++++
>   1 file changed, 36 insertions(+)
>
> diff --git a/Documentation/riscv/vm-layout.rst b/Documentation/riscv/vm-layout.rst
> index 5b36e45fef60..35f76798b6e4 100644
> --- a/Documentation/riscv/vm-layout.rst
> +++ b/Documentation/riscv/vm-layout.rst
> @@ -97,3 +97,39 @@ RISC-V Linux Kernel SV48
>      ffffffff00000000 |   -4    GB | ffffffff7fffffff |    2 GB | modules, BPF
>      ffffffff80000000 |   -2    GB | ffffffffffffffff |    2 GB | kernel
>     __________________|____________|__________________|_________|____________________________________________________________
> +
> +
> +RISC-V Linux Kernel SV57
> +------------------------
> +
> +::
> +
> + ========================================================================================================================
> +      Start addr    |   Offset   |     End addr     |  Size   | VM area description
> + ========================================================================================================================
> +                    |            |                  |         |
> +   0000000000000000 |    0       | 00ffffffffffffff |   64 PB | user-space virtual memory, different per mm
> +  __________________|____________|__________________|_________|___________________________________________________________
> +                    |            |                  |         |
> +   0100000000000000 | +64     PB | feffffffffffffff | ~16K PB | ... huge, almost 64 bits wide hole of non-canonical


Very very nit but "+64" is not correctly aligned :)


> +                    |            |                  |         | virtual memory addresses up to the -64 PB
> +                    |            |                  |         | starting offset of kernel mappings.
> +  __________________|____________|__________________|_________|___________________________________________________________
> +                                                              |
> +                                                              | Kernel-space virtual memory, shared between all processes:
> +  ____________________________________________________________|___________________________________________________________
> +                    |            |                  |         |
> +   ff1bfffffee00000 |  -57    PB | ff1bfffffeffffff |    2 MB | fixmap
> +   ff1bffffff000000 |  -57    PB | ff1bffffffffffff |   16 MB | PCI io
> +   ff1c000000000000 |  -57    PB | ff1fffffffffffff |    1 PB | vmemmap
> +   ff20000000000000 |  -56    PB | ff5fffffffffffff |   16 PB | vmalloc/ioremap space
> +   ff60000000000000 |  -40    PB | ffdffffeffffffff |   32 PB | direct mapping of all physical memory
> +   ffdfffff00000000 |  - 8    PB | fffffffeffffffff |    8 PB | kasan


To me, the kasan start address is wrong, an sv57 kernel produces the 
following output for me:

[    0.000000]       fixmap : 0xff1bfffffee00000 - 0xff1bffffff000000   
(2048 kB)
[    0.000000]       pci io : 0xff1bffffff000000 - 0xff1c000000000000   
(  16 MB)
[    0.000000]      vmemmap : 0xff1c000000000000 - 0xff20000000000000   
(1024 TB)
[    0.000000]      vmalloc : 0xff20000000000000 - 0xff60000000000000   
(16384 TB)
[    0.000000]      modules : 0xffffffff01e2a000 - 0xffffffff80000000   
(2017 MB)
[    0.000000]       lowmem : 0xff60000000000000 - 0xff60000100000000   
(4096 MB)
[    0.000000]        kasan : 0xffdf000000000000 - 0xffffffff00000000   
(8447 TB)
[    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   
(2047 MB)

Because by definition, KASAN_SHADOW_START is aligned on PGDIR_SIZE 
(because it is easier to map this way).

And again very very nit: there is a space between the '-' and '8' :)


> +  __________________|____________|__________________|_________|____________________________________________________________
> +                                                              |
> +                                                              | Identical layout to the 39-bit one from here on:
> +  ____________________________________________________________|____________________________________________________________
> +                    |            |                  |         |
> +   ffffffff00000000 |   -4    GB | ffffffff7fffffff |    2 GB | modules, BPF
> +   ffffffff80000000 |   -2    GB | ffffffffffffffff |    2 GB | kernel
> +  __________________|____________|__________________|_________|____________________________________________________________


Thanks,

Alex




More information about the linux-riscv mailing list