2 * Jailhouse, a Linux-based partitioning hypervisor
4 * Test configuration for Asus H87I-PLUS, 4 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 ALIGN __attribute__((aligned(1)))
19 #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
22 struct jailhouse_system ALIGN header;
24 struct jailhouse_memory ALIGN mem_regions[9];
25 __u8 ALIGN pio_bitmap[0x2000];
26 struct jailhouse_pci_device pci_devices[13];
29 .hypervisor_memory = {
30 .phys_start = 0x3c000000,
34 .phys_start = 0xcca64000,
40 .cpu_set_size = sizeof(config.cpus),
41 .num_memory_regions = ARRAY_SIZE(config.mem_regions),
43 .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
44 .num_pci_devices = ARRAY_SIZE(config.pci_devices),
57 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
58 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
61 .phys_start = 0x40000000,
62 .virt_start = 0x40000000,
64 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
65 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
68 .phys_start = 0xcca64000,
69 .virt_start = 0xcca64000,
71 .flags = JAILHOUSE_MEM_READ,
74 .phys_start = 0xcca79000,
75 .virt_start = 0xcca79000,
77 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
78 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
81 .phys_start = 0xcf200000,
82 .virt_start = 0xcf200000,
84 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
85 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
88 .phys_start = 0xdf200000,
89 .virt_start = 0xdf200000,
91 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
93 /* yeah, that's not really safe... */
95 .phys_start = 0xfec00000,
96 .virt_start = 0xfec00000,
98 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
100 /* the same here until we catch MSIs via interrupt remapping */
102 .phys_start = 0xfed00000,
103 .virt_start = 0xfed00000,
105 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
108 .phys_start = 0x100000000,
109 .virt_start = 0x100000000,
111 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
112 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
117 [ 0/8 ... 0x1f/8] = -1,
118 [ 0x20/8 ... 0x27/8] = 0xfc, /* HACK: PIC */
119 [ 0x28/8 ... 0x3f/8] = -1,
120 [ 0x40/8 ... 0x47/8] = 0xf0, /* PIT */
121 [ 0x48/8 ... 0x5f/8] = -1,
122 [ 0x60/8 ... 0x67/8] = 0x0, /* HACK: 8042, and more? */
123 [ 0x68/8 ... 0x6f/8] = -1,
124 [ 0x70/8 ... 0x77/8] = 0xfc, /* rtc */
125 [ 0x78/8 ... 0x7f/8] = -1,
126 [ 0x80/8 ... 0x8f/8] = 0, /* dma */
127 [ 0x90/8 ... 0x3af/8] = -1,
128 [ 0x3b0/8 ... 0x3df/8] = 0, /* VGA */
129 [ 0x3e0/8 ... 0xcf7/8] = -1,
130 [ 0xcf8/8 ... 0xffff/8] = 0, /* HACK: full PCI */
135 .type = JAILHOUSE_PCI_TYPE_DEVICE,
141 .type = JAILHOUSE_PCI_TYPE_BRIDGE,
147 .type = JAILHOUSE_PCI_TYPE_DEVICE,
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_DEVICE,
195 .type = JAILHOUSE_PCI_TYPE_DEVICE,
201 .type = JAILHOUSE_PCI_TYPE_DEVICE,
207 .type = JAILHOUSE_PCI_TYPE_DEVICE,