]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - Documentation/x86/x86_64/mm.txt
x86/mm: Map cpu_entry_area at the same place on 4/5 level
[mirror_ubuntu-artful-kernel.git] / Documentation / x86 / x86_64 / mm.txt
CommitLineData
1da177e4 1
1da177e4
LT
2Virtual memory map with 4 level page tables:
3
57d30772 40000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm
4c7c4483 5hole caused by [47:63] sign extension
beb9147e 6ffff800000000000 - ffff87ffffffffff (=43 bits) guard hole, reserved for hypervisor
2feceeff 7ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory
c898faf9
RR
8ffffc80000000000 - ffffc8ffffffffff (=40 bits) hole
9ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space
10ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole
11ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB)
ef7f0d6a 12... unused hole ...
9d9cce7f 13ffffec0000000000 - fffffbffffffffff (=44 bits) kasan shadow memory (16TB)
1da177e4 14... unused hole ...
9376ab43
TG
15fffffe0000000000 - fffffe7fffffffff (=39 bits) cpu_entry_area mapping
16fffffe8000000000 - fffffeffffffffff (=39 bits) LDT remap for PTI
3891a04a
PA
17ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks
18... unused hole ...
9d9cce7f 19ffffffef00000000 - fffffffeffffffff (=64 GB) EFI region mapping space
ff3d0a12 20... unused hole ...
9d9cce7f 21ffffffff80000000 - ffffffff9fffffff (=512 MB) kernel text mapping, from phys 0
d6948986
AL
22ffffffffa0000000 - [fixmap start] (~1526 MB) module mapping space (variable)
23[fixmap start] - ffffffffff5fffff kernel-internal fixmap range
24ffffffffff600000 - ffffffffff600fff (=4 kB) legacy vsyscall ABI
aca91bfc 25ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
1da177e4 26
4c7c4483
KS
27Virtual memory map with 5 level page tables:
28
290000000000000000 - 00ffffffffffffff (=56 bits) user space, different per mm
30hole caused by [56:63] sign extension
31ff00000000000000 - ff0fffffffffffff (=52 bits) guard hole, reserved for hypervisor
32ff10000000000000 - ff8fffffffffffff (=55 bits) direct mapping of all phys. memory
c2506438 33ff90000000000000 - ff9fffffffffffff (=52 bits) LDT remap for PTI
29b1c137 34ffa0000000000000 - ffd1ffffffffffff (=54 bits) vmalloc/ioremap space (12800 TB)
4c7c4483
KS
35ffd2000000000000 - ffd3ffffffffffff (=49 bits) hole
36ffd4000000000000 - ffd5ffffffffffff (=49 bits) virtual memory map (512TB)
37... unused hole ...
2ce42815 38ffdf000000000000 - fffffc0000000000 (=53 bits) kasan shadow memory (8PB)
4c7c4483 39... unused hole ...
9376ab43
TG
40fffffe0000000000 - fffffe7fffffffff (=39 bits) cpu_entry_area mapping
41... unused hole ...
4c7c4483
KS
42ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks
43... unused hole ...
44ffffffef00000000 - fffffffeffffffff (=64 GB) EFI region mapping space
45... unused hole ...
46ffffffff80000000 - ffffffff9fffffff (=512 MB) kernel text mapping, from phys 0
1b1ff152 47ffffffffa0000000 - fffffffffeffffff (1520 MB) module mapping space
d6948986
AL
48[fixmap start] - ffffffffff5fffff kernel-internal fixmap range
49ffffffffff600000 - ffffffffff600fff (=4 kB) legacy vsyscall ABI
4c7c4483
KS
50ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
51
52Architecture defines a 64-bit virtual address. Implementations can support
53less. Currently supported are 48- and 57-bit virtual addresses. Bits 63
d9012133
PZ
54through to the most-significant implemented bit are sign extended.
55This causes hole between user space and kernel addresses if you interpret them
56as unsigned.
4c7c4483 57
57d30772 58The direct mapping covers all memory in the system up to the highest
8315eca2 59memory address (this means in some cases it can also include PCI memory
57d30772 60holes).
8315eca2 61
4c7c4483
KS
62vmalloc space is lazily synchronized into the different PML4/PML5 pages of
63the processes using the page fault handler, with init_top_pgt as
1da177e4
LT
64reference.
65
ff3d0a12
MF
66We map EFI runtime services in the 'efi_pgd' PGD in a 64Gb large virtual
67memory window (this size is arbitrary, it can be raised later if needed).
68The mappings are not part of any other kernel PGD and are only available
69during EFI runtime calls.
d2f7cbe7 70
0483e1fa
TG
71Note that if CONFIG_RANDOMIZE_MEMORY is enabled, the direct mapping of all
72physical memory, vmalloc/ioremap space and virtual memory map are randomized.
73Their order is preserved but their base will be offset early at boot time.