1 Memory Layout of the Jailhouse Hypervisor
2 =========================================
4 While the hypervisor is running, two memory regions are visible in its address
5 space: the hypervisor region and the remapping region. Jailhouse cells are not
6 mapped into the hypervisor's address space, with the exception of explicitly
7 shared pages and pages that are temporarily mapped, e.g. during MMIO instruction
14 The hypervisor region contains both code and data of the hypervisor. It
15 consists of contiguous physical RAM, mapped at a fixed virtual address, both
16 in the hypervisor and the Linux address space. This identical mapping is
17 required during startup and shutdown of the hypervisor.
19 Virtual address: JAILHOUSE_BASE
20 Size: as defined in the system configuration (see hypervisor_memory.size) [1]
22 +--------------------------------------+ - lower address
24 +--------------------------------------+
28 +--------------------------------------+
29 | Read-only Data Segment |
31 +--------------------------------------+
34 +--------------------------------------+
37 +--------------------------------------+
38 | Page +-----------------------------+ |
39 | Pool | Per-CPU Data | |
42 | +-----------------------------+ |
45 | +-----------------------------+ |
46 | | Page Pool Allocation Bitmap | |
47 | +-----------------------------+ |
48 | | Dynamic Page Pool | |
52 | +-----------------------------+ |
53 +--------------------------------------+ - higher address
59 The remapping region is a range of reserved virtual memory in the hypervisor
60 address space. It is used to map MMIO, platform configuration memory (ACPI on
61 x86) and, temporarily, selected guest pages for hypervisor access.
63 Virtual address: REMAP_BASE
64 Size: PAGE_SIZE * NUM_REMAP_BITMAP_PAGES * PAGE_SIZE * 8
66 +--------------------------------------+ - lower address
67 | Per-CPU Temporary Mapping Region |
69 +--------------------------------------+
70 | Dynamic Remapping Page pool |
74 +--------------------------------------+ - higher address
80 [1] Documentation/configuration-format.txt
81 [2] Documentation/bootstrap-interface.txt