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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Björn,

On 10/31/22 19:02, Björn Töpel wrote:
From: Björn Töpel <bjorn@xxxxxxxxxxxx>

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@xxxxxxxxxxxx>
---
  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




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux