Skip to content

Commit 035c5e2

Browse files
kirylhansendc
authored andcommitted
x86/mm/doc: Add missing details in virtual memory layout
Improve memory layout documentation: - Document 4kB guard hole at the end of userspace. See TASK_SIZE_MAX definition. - Divide the description of the non-canonical hole into two parts: userspace and kernel sides. - Mention the effect of LAM on the non-canonical range. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Link: https://lore.kernel.org/all/20241031084946.2243440-1-kirill.shutemov%40linux.intel.com
1 parent 42f7652 commit 035c5e2

File tree

1 file changed

+29
-6
lines changed
  • Documentation/arch/x86/x86_64

1 file changed

+29
-6
lines changed

Documentation/arch/x86/x86_64/mm.rst

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,27 @@ Complete virtual memory map with 4-level page tables
2929
Start addr | Offset | End addr | Size | VM area description
3030
========================================================================================================================
3131
| | | |
32-
0000000000000000 | 0 | 00007fffffffffff | 128 TB | user-space virtual memory, different per mm
32+
0000000000000000 | 0 | 00007fffffffefff | ~128 TB | user-space virtual memory, different per mm
33+
00007ffffffff000 | ~128 TB | 00007fffffffffff | 4 kB | ... guard hole
3334
__________________|____________|__________________|_________|___________________________________________________________
3435
| | | |
35-
0000800000000000 | +128 TB | ffff7fffffffffff | ~16M TB | ... huge, almost 64 bits wide hole of non-canonical
36-
| | | | virtual memory addresses up to the -128 TB
36+
0000800000000000 | +128 TB | 7fffffffffffffff | ~8 EB | ... huge, almost 63 bits wide hole of non-canonical
37+
| | | | virtual memory addresses up to the -8 EB
3738
| | | | starting offset of kernel mappings.
39+
| | | |
40+
| | | | LAM relaxes canonicallity check allowing to create aliases
41+
| | | | for userspace memory here.
3842
__________________|____________|__________________|_________|___________________________________________________________
3943
|
4044
| Kernel-space virtual memory, shared between all processes:
45+
__________________|____________|__________________|_________|___________________________________________________________
46+
| | | |
47+
8000000000000000 | -8 EB | ffff7fffffffffff | ~8 EB | ... huge, almost 63 bits wide hole of non-canonical
48+
| | | | virtual memory addresses up to the -128 TB
49+
| | | | starting offset of kernel mappings.
50+
| | | |
51+
| | | | LAM_SUP relaxes canonicallity check allowing to create
52+
| | | | aliases for kernel memory here.
4153
____________________________________________________________|___________________________________________________________
4254
| | | |
4355
ffff800000000000 | -128 TB | ffff87ffffffffff | 8 TB | ... guard hole, also reserved for hypervisor
@@ -88,15 +100,26 @@ Complete virtual memory map with 5-level page tables
88100
Start addr | Offset | End addr | Size | VM area description
89101
========================================================================================================================
90102
| | | |
91-
0000000000000000 | 0 | 00ffffffffffffff | 64 PB | user-space virtual memory, different per mm
103+
0000000000000000 | 0 | 00fffffffffff000 | ~64 PB | user-space virtual memory, different per mm
104+
00fffffffffff000 | ~64 PB | 00ffffffffffffff | 4 kB | ... guard hole
92105
__________________|____________|__________________|_________|___________________________________________________________
93106
| | | |
94-
0100000000000000 | +64 PB | feffffffffffffff | ~16K PB | ... huge, still almost 64 bits wide hole of non-canonical
95-
| | | | virtual memory addresses up to the -64 PB
107+
0100000000000000 | +64 PB | 7fffffffffffffff | ~8 EB | ... huge, almost 63 bits wide hole of non-canonical
108+
| | | | virtual memory addresses up to the -8EB TB
96109
| | | | starting offset of kernel mappings.
110+
| | | |
111+
| | | | LAM relaxes canonicallity check allowing to create aliases
112+
| | | | for userspace memory here.
97113
__________________|____________|__________________|_________|___________________________________________________________
98114
|
99115
| Kernel-space virtual memory, shared between all processes:
116+
____________________________________________________________|___________________________________________________________
117+
8000000000000000 | -8 EB | feffffffffffffff | ~8 EB | ... huge, almost 63 bits wide hole of non-canonical
118+
| | | | virtual memory addresses up to the -64 PB
119+
| | | | starting offset of kernel mappings.
120+
| | | |
121+
| | | | LAM_SUP relaxes canonicallity check allowing to create
122+
| | | | aliases for kernel memory here.
100123
____________________________________________________________|___________________________________________________________
101124
| | | |
102125
ff00000000000000 | -64 PB | ff0fffffffffffff | 4 PB | ... guard hole, also reserved for hypervisor

0 commit comments

Comments
 (0)