On Wed, 6 Oct 2021 18:14:38 +0100 Catalin Marinas <catalin.marinas@xxxxxxx> wrote: > > > On Thu, Sep 30, 2021 at 06:50:26PM +0800, Jisheng Zhang wrote: > > The 4KB pages + 3 levels (39-bit) combination is also widely used in > > arm64 world, add the memory layout description for this combination. > > > > Signed-off-by: Jisheng Zhang <Jisheng.Zhang@xxxxxxxxxxxxx> > > --- > > Documentation/arm64/memory.rst | 17 +++++++++++++++++ > > 1 file changed, 17 insertions(+) > > > > diff --git a/Documentation/arm64/memory.rst b/Documentation/arm64/memory.rst > > index 901cd094f4ec..d1745b570f0c 100644 > > --- a/Documentation/arm64/memory.rst > > +++ b/Documentation/arm64/memory.rst > > @@ -26,6 +26,23 @@ The swapper_pg_dir address is written to TTBR1 and never written to > > TTBR0. > > > > > > +AArch64 Linux memory layout with 4KB pages + 3 levels (39-bit):: > > + Start End Size Use > > + ----------------------------------------------------------------------- > > + 0000000000000000 0000007fffffffff 512GB user > > + ffffff8000000000 ffffffbfffffffff 256GB kernel logical memory map > > + [ffffffb000000000 ffffffbfffffffff] 64GB [kasan shadow region] > > + ffffffc000000000 ffffffc007ffffff 128MB bpf jit region > > + ffffffc008000000 ffffffc00fffffff 128MB modules > > + ffffffc010000000 fffffffdefffffff 253440MB vmalloc > > + fffffffdf0000000 fffffffdfdffffff 224MB fixed mappings (top down) > > + fffffffdfe000000 fffffffdfe7fffff 8MB [guard region] > > + fffffffdfe800000 fffffffdff7fffff 16MB PCI I/O space > > + fffffffdff800000 fffffffdffffffff 8MB [guard region] > > + fffffffe00000000 ffffffffefffffff 4GB vmemmap > > + ffffffff00000000 ffffffffffffffff 4GB [guard region] > > I wouldn't bother maintaining these. There are other combinations that > people may use. The 4KB + 48-bit VA is defconfig while 64KB + 52-bit was > more interesting, so we thought it would be useful. If kernel config file isn't based on the defconfig, the 4KB + 39bit VA is the default option in Kconfig: ... prompt "Page size" default ARM64_4K_PAGES help Page size (translation granule) configuration. ... choice prompt "Virtual address space size" default ARM64_VA_BITS_39 if ARM64_4K_PAGES default ARM64_VA_BITS_47 if ARM64_16K_PAGES default ARM64_VA_BITS_42 if ARM64_64K_PAGES help Allows choosing one of multiple possible virtual address I believe this combination is widely used if 48bit VA isn't necessary. In fact, I think the default android GKI image is built with 4KB + 39bit VA. This is the reason why I added description for 4K + VA39 but leave other combinations. > > I'm more inclined to remove them altogether and maybe just add some > high-level ascii art as per the log of commit f4693c2716b3 ("arm64: mm: > extend linear region for 52-bit VA configurations"). The detailed memory layout is useful, for example, I can immediately know which region the virtual address belongs to when checking kernel panic logs. If changed to high level ascii, I need to do some calculation, sometimes I need to check source code to get the value of some MACROS defitions.