2 * Jailhouse, a Linux-based partitioning hypervisor
4 * Test configuration for Celsius H700, 8 GB RAM, 64 MB hypervisor
6 * Copyright (c) Siemens AG, 2013
9 * Jan Kiszka <jan.kiszka@siemens.com>
11 * This work is licensed under the terms of the GNU GPL, version 2. See
12 * the COPYING file in the top-level directory.
15 #include <linux/types.h>
16 #include <jailhouse/cell-config.h>
18 #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
21 struct jailhouse_system header;
23 struct jailhouse_memory mem_regions[9];
24 struct jailhouse_irqchip irqchips[1];
25 __u8 pio_bitmap[0x2000];
26 struct jailhouse_pci_device pci_devices[25];
27 } __attribute__((packed)) config = {
29 .hypervisor_memory = {
30 .phys_start = 0x3c000000,
34 .phys_start = 0xbf7de000,
37 .platform_info.x86 = {
38 .pm_timer_address = 0x408,
41 .name = "Celsius H700",
43 .cpu_set_size = sizeof(config.cpus),
44 .num_memory_regions = ARRAY_SIZE(config.mem_regions),
45 .num_irqchips = ARRAY_SIZE(config.irqchips),
46 .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
47 .num_pci_devices = ARRAY_SIZE(config.pci_devices),
60 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
61 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
64 .phys_start = 0x40000000,
65 .virt_start = 0x40000000,
67 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
68 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
71 .phys_start = 0xbf7de000,
72 .virt_start = 0xbf7de000,
74 .flags = JAILHOUSE_MEM_READ,
77 .phys_start = 0xbf7ff000,
78 .virt_start = 0xbf7ff000,
80 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
81 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
84 .phys_start = 0xc0000000,
85 .virt_start = 0xc0000000,
87 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
89 /* not safe until we catch MSIs via interrupt remapping */
91 .phys_start = 0xfed00000,
92 .virt_start = 0xfed00000,
94 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
97 .phys_start = 0x100000000,
98 .virt_start = 0x100000000,
100 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
101 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
104 .phys_start = 0x200000000,
105 .virt_start = 0x200000000,
107 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
108 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
114 .address = 0xfec00000,
115 .pin_bitmap = 0xffffff,
120 [ 0/8 ... 0x3f/8] = -1,
121 [ 0x40/8 ... 0x47/8] = 0xf0, /* PIT */
122 [ 0x48/8 ... 0x5f/8] = -1,
123 [ 0x60/8 ... 0x67/8] = 0x0, /* HACK: 8042, and more? */
124 [ 0x68/8 ... 0x6f/8] = -1,
125 [ 0x70/8 ... 0x77/8] = 0xfc, /* rtc */
126 [ 0x78/8 ... 0x2f7/8] = -1,
127 [ 0x2f8/8 ... 0x2ff/8] = 0, /* serial2 */
128 [ 0x300/8 ... 0x36f/8] = -1,
129 [ 0x370/8 ... 0x377/8] = 0xbf, /* ide */
130 [ 0x378/8 ... 0x3af/8] = -1,
131 [ 0x3b0/8 ... 0x3df/8] = 0, /* VGA */
132 [ 0x3e0/8 ... 0x3f7/8] = -1,
133 [ 0x3f8/8 ... 0x3ff/8] = 0, /* serial 1 */
134 [ 0x400/8 ... 0x47f/8] = 0, /* ACPI...? */
135 [ 0x480/8 ... 0xcff/8] = -1,
136 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: full PCI */
141 .type = JAILHOUSE_PCI_TYPE_DEVICE,
147 .type = JAILHOUSE_PCI_TYPE_BRIDGE,
153 .type = JAILHOUSE_PCI_TYPE_DEVICE,
159 .type = JAILHOUSE_PCI_TYPE_DEVICE,
165 .type = JAILHOUSE_PCI_TYPE_DEVICE,
171 .type = JAILHOUSE_PCI_TYPE_DEVICE,
177 .type = JAILHOUSE_PCI_TYPE_DEVICE,
183 .type = JAILHOUSE_PCI_TYPE_DEVICE,
189 .type = JAILHOUSE_PCI_TYPE_BRIDGE,
195 .type = JAILHOUSE_PCI_TYPE_BRIDGE,
201 .type = JAILHOUSE_PCI_TYPE_DEVICE,
207 .type = JAILHOUSE_PCI_TYPE_BRIDGE,
213 .type = JAILHOUSE_PCI_TYPE_DEVICE,
219 .type = JAILHOUSE_PCI_TYPE_DEVICE,
225 .type = JAILHOUSE_PCI_TYPE_DEVICE,
231 .type = JAILHOUSE_PCI_TYPE_DEVICE,
237 .type = JAILHOUSE_PCI_TYPE_DEVICE,
243 .type = JAILHOUSE_PCI_TYPE_DEVICE,
249 .type = JAILHOUSE_PCI_TYPE_DEVICE,
255 .type = JAILHOUSE_PCI_TYPE_DEVICE,
261 .type = JAILHOUSE_PCI_TYPE_DEVICE,
267 .type = JAILHOUSE_PCI_TYPE_DEVICE,
273 .type = JAILHOUSE_PCI_TYPE_DEVICE,
279 .type = JAILHOUSE_PCI_TYPE_DEVICE,
285 .type = JAILHOUSE_PCI_TYPE_DEVICE,