Message ID | 20221031180230.1420544-1-bjorn@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Documentation: riscv: Document the sv57 VM layout | expand |
Context | Check | Description |
---|---|---|
conchuod/patch_count | success | Link |
conchuod/cover_letter | success | Single patches do not need cover letters |
conchuod/tree_selection | success | Guessed tree name to be for-next |
conchuod/fixes_present | success | Fixes tag not required for -next series |
conchuod/verify_signedoff | success | Signed-off-by tag matches author and committer |
conchuod/kdoc | success | Errors and warnings before: 0 this patch: 0 |
conchuod/module_param | success | Was 0 now: 0 |
conchuod/cc_maintainers | warning | 1 maintainers not CCed: foo.bar@bar.com |
conchuod/build_warn_rv64 | fail | Errors and warnings before: 0 this patch: 0 |
conchuod/dtb_warn_rv64 | success | Errors and warnings before: 0 this patch: 0 |
conchuod/header_inline | success | No static functions without inline keyword in header files |
conchuod/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 39 lines checked |
conchuod/source_inline | success | Was 0 now: 0 |
conchuod/verify_fixes | success | No Fixes tag |
On Mon, Oct 31, 2022 at 07:02:30PM +0100, Björn Töpel wrote: > + > + > +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 > + | | | | 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 > + __________________|____________|__________________|_________|____________________________________________________________ > + | > + | 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 > + __________________|____________|__________________|_________|____________________________________________________________ The memory layout figure above should have been in table format (it is written as such, isn't it?): ---- >8 ---- diff --git a/Documentation/riscv/vm-layout.rst b/Documentation/riscv/vm-layout.rst index 35f76798b6e41b..f87b63a0cc9cfa 100644 --- a/Documentation/riscv/vm-layout.rst +++ b/Documentation/riscv/vm-layout.rst @@ -102,34 +102,32 @@ RISC-V Linux Kernel SV48 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 - | | | | 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 - __________________|____________|__________________|_________|____________________________________________________________ - | - | 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 - __________________|____________|__________________|_________|____________________________________________________________ + +------------------+--------+------------------+---------+--------------------------------------------------------------+ + | 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 | + | | | | | 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 | + +------------------+--------+------------------+---------+--------------------------------------------------------------+ + | 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 | + +------------------+--------+------------------+---------+--------------------------------------------------------------+ However, for consistency, other similar figures should also be converted to tables (as separate patch). Thanks.
Bagas Sanjaya <bagasdotme@gmail.com> writes: > The memory layout figure above should have been in table format (it is > written as such, isn't it?): I'm not sure, given the "::" (verbatim) for the other tables. I followed the verbatim layout of the previous svXX layout descriptions. > However, for consistency, other similar figures should also be converted > to tables (as separate patch). Yes, that can be done as follow-up patches (and also add SV32). Björn
Hi Björn, On 10/31/22 19:02, Björn Töpel wrote: > From: Björn Töpel <bjorn@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@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
Alexandre Ghiti <alex@ghiti.fr> writes: > Very very nit but "+64" is not correctly aligned :) Thanks! I'll fix that! >> + 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] kasan : 0xffdf000000000000 - 0xffffffff00000000 Indeed! Good catch! Will fix. > And again very very nit: there is a space between the '-' and '8' :) I'll fix that in the v2. Thanks for having a look! Cheers, Björn
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 + | | | | 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 + __________________|____________|__________________|_________|____________________________________________________________ + | + | 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 + __________________|____________|__________________|_________|____________________________________________________________