blob: 5724092db8118deefb1758e3886db97aa61521b8 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001
2<previous description obsolete, deleted>
3
4Virtual memory map with 4 level page tables:
5
Randy Dunlap57d30772007-02-13 13:26:23 +010060000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm
Linus Torvalds1da177e2005-04-16 15:20:36 -07007hole caused by [48:63] sign extension
Dave Hansenbeb91472014-09-18 12:56:06 -07008ffff800000000000 - ffff87ffffffffff (=43 bits) guard hole, reserved for hypervisor
H. Peter Anvin2feceef2009-05-05 19:07:07 -07009ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory
Rik van Rielc898faf2009-05-05 17:28:56 -040010ffffc80000000000 - ffffc8ffffffffff (=40 bits) hole
11ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space
12ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole
13ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB)
Linus Torvalds1da177e2005-04-16 15:20:36 -070014... unused hole ...
Lorenzo Stoakes9d9cce72016-08-23 09:00:45 +010015ffffec0000000000 - fffffbffffffffff (=44 bits) kasan shadow memory (16TB)
Andrey Ryabininef7f0d62015-02-13 14:39:25 -080016... unused hole ...
H. Peter Anvin3891a042014-04-29 16:46:09 -070017ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks
18... unused hole ...
Lorenzo Stoakes9d9cce72016-08-23 09:00:45 +010019ffffffef00000000 - fffffffeffffffff (=64 GB) EFI region mapping space
Matt Flemingff3d0a12015-11-27 21:09:35 +000020... unused hole ...
Lorenzo Stoakes9d9cce72016-08-23 09:00:45 +010021ffffffff80000000 - ffffffff9fffffff (=512 MB) kernel text mapping, from phys 0
Juergen Gross78b06342016-04-22 09:35:04 +020022ffffffffa0000000 - ffffffffff5fffff (=1526 MB) module mapping space
Borislav Petkovaca91bf2013-03-04 21:16:18 +010023ffffffffff600000 - ffffffffffdfffff (=8 MB) vsyscalls
24ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
Linus Torvalds1da177e2005-04-16 15:20:36 -070025
Randy Dunlap57d30772007-02-13 13:26:23 +010026The direct mapping covers all memory in the system up to the highest
Andi Kleen8315eca2005-11-05 17:25:54 +010027memory address (this means in some cases it can also include PCI memory
Randy Dunlap57d30772007-02-13 13:26:23 +010028holes).
Andi Kleen8315eca2005-11-05 17:25:54 +010029
Linus Torvalds1da177e2005-04-16 15:20:36 -070030vmalloc space is lazily synchronized into the different PML4 pages of
31the processes using the page fault handler, with init_level4_pgt as
32reference.
33
Juergen Gross78b06342016-04-22 09:35:04 +020034Current X86-64 implementations support up to 46 bits of address space (64 TB),
35which is our current limit. This expands into MBZ space in the page tables.
Linus Torvalds1da177e2005-04-16 15:20:36 -070036
Matt Flemingff3d0a12015-11-27 21:09:35 +000037We map EFI runtime services in the 'efi_pgd' PGD in a 64Gb large virtual
38memory window (this size is arbitrary, it can be raised later if needed).
39The mappings are not part of any other kernel PGD and are only available
40during EFI runtime calls.
Borislav Petkovd2f7cbe2013-10-31 17:25:08 +010041
Thomas Garnier0483e1f2016-06-21 17:47:02 -070042Note that if CONFIG_RANDOMIZE_MEMORY is enabled, the direct mapping of all
43physical memory, vmalloc/ioremap space and virtual memory map are randomized.
44Their order is preserved but their base will be offset early at boot time.
45
Linus Torvalds1da177e2005-04-16 15:20:36 -070046-Andi Kleen, Jul 2004