@@ -23,71 +23,6 @@ swapper_pg_dir contains only kernel (global) mappings while the user pgd
23
23
contains only user (non-global) mappings. The swapper_pg_dir address is
24
24
written to TTBR1 and never written to TTBR0.
25
25
26
-
27
- AArch64 Linux memory layout with 4KB pages + 4 levels (48-bit)::
28
-
29
- Start End Size Use
30
- -----------------------------------------------------------------------
31
- 0000000000000000 0000ffffffffffff 256TB user
32
- ffff000000000000 ffff7fffffffffff 128TB kernel logical memory map
33
- [ffff600000000000 ffff7fffffffffff] 32TB [kasan shadow region]
34
- ffff800000000000 ffff80007fffffff 2GB modules
35
- ffff800080000000 fffffbffefffffff 124TB vmalloc
36
- fffffbfff0000000 fffffbfffdffffff 224MB fixed mappings (top down)
37
- fffffbfffe000000 fffffbfffe7fffff 8MB [guard region]
38
- fffffbfffe800000 fffffbffff7fffff 16MB PCI I/O space
39
- fffffbffff800000 fffffbffffffffff 8MB [guard region]
40
- fffffc0000000000 fffffdffffffffff 2TB vmemmap
41
- fffffe0000000000 ffffffffffffffff 2TB [guard region]
42
-
43
-
44
- AArch64 Linux memory layout with 64KB pages + 3 levels (52-bit with HW support)::
45
-
46
- Start End Size Use
47
- -----------------------------------------------------------------------
48
- 0000000000000000 000fffffffffffff 4PB user
49
- fff0000000000000 ffff7fffffffffff ~4PB kernel logical memory map
50
- [fffd800000000000 ffff7fffffffffff] 512TB [kasan shadow region]
51
- ffff800000000000 ffff80007fffffff 2GB modules
52
- ffff800080000000 fffffbffefffffff 124TB vmalloc
53
- fffffbfff0000000 fffffbfffdffffff 224MB fixed mappings (top down)
54
- fffffbfffe000000 fffffbfffe7fffff 8MB [guard region]
55
- fffffbfffe800000 fffffbffff7fffff 16MB PCI I/O space
56
- fffffbffff800000 fffffbffffffffff 8MB [guard region]
57
- fffffc0000000000 ffffffdfffffffff ~4TB vmemmap
58
- ffffffe000000000 ffffffffffffffff 128GB [guard region]
59
-
60
-
61
- Translation table lookup with 4KB pages::
62
-
63
- +--------+--------+--------+--------+--------+--------+--------+--------+
64
- |63 56|55 48|47 40|39 32|31 24|23 16|15 8|7 0|
65
- +--------+--------+--------+--------+--------+--------+--------+--------+
66
- | | | | | |
67
- | | | | | v
68
- | | | | | [11:0] in-page offset
69
- | | | | +-> [20:12] L3 index
70
- | | | +-----------> [29:21] L2 index
71
- | | +---------------------> [38:30] L1 index
72
- | +-------------------------------> [47:39] L0 index
73
- +----------------------------------------> [55] TTBR0/1
74
-
75
-
76
- Translation table lookup with 64KB pages::
77
-
78
- +--------+--------+--------+--------+--------+--------+--------+--------+
79
- |63 56|55 48|47 40|39 32|31 24|23 16|15 8|7 0|
80
- +--------+--------+--------+--------+--------+--------+--------+--------+
81
- | | | | |
82
- | | | | v
83
- | | | | [15:0] in-page offset
84
- | | | +----------> [28:16] L3 index
85
- | | +--------------------------> [41:29] L2 index
86
- | +-------------------------------> [47:42] L1 index (48-bit)
87
- | [51:42] L1 index (52-bit)
88
- +----------------------------------------> [55] TTBR0/1
89
-
90
-
91
26
When using KVM without the Virtualization Host Extensions, the
92
27
hypervisor maps kernel pages in EL2 at a fixed (and potentially
93
28
random) offset from the linear mapping. See the kern_hyp_va macro and
0 commit comments