]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/h87i.c
configs: Remove unmoderated PCI config space access
[jailhouse.git] / configs / h87i.c
1 /*
2  * Jailhouse, a Linux-based partitioning hypervisor
3  *
4  * Test configuration for Asus H87I-PLUS, 4 GB RAM, 64 MB hypervisor
5  *
6  * Copyright (c) Siemens AG, 2013
7  *
8  * Authors:
9  *  Jan Kiszka <jan.kiszka@siemens.com>
10  *
11  * This work is licensed under the terms of the GNU GPL, version 2.  See
12  * the COPYING file in the top-level directory.
13  */
14
15 #include <linux/types.h>
16 #include <jailhouse/cell-config.h>
17
18 #define ALIGN __attribute__((aligned(1)))
19 #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
20
21 struct {
22         struct jailhouse_system ALIGN header;
23         __u64 ALIGN cpus[1];
24         struct jailhouse_memory ALIGN mem_regions[9];
25         __u8 ALIGN pio_bitmap[0x2000];
26         struct jailhouse_pci_device pci_devices[13];
27 } ALIGN config = {
28         .header = {
29                 .hypervisor_memory = {
30                         .phys_start = 0x3c000000,
31                         .size = 0x4000000,
32                 },
33                 .config_memory = {
34                         .phys_start = 0xcca64000,
35                         .size = 0x15000,
36                 },
37                 .system = {
38                         .name = "H87I-PLUS",
39
40                         .cpu_set_size = sizeof(config.cpus),
41                         .num_memory_regions = ARRAY_SIZE(config.mem_regions),
42                         .num_irq_lines = 0,
43                         .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
44                         .num_pci_devices = ARRAY_SIZE(config.pci_devices),
45                 },
46         },
47
48         .cpus = {
49                 0xff,
50         },
51
52         .mem_regions = {
53                 /* RAM */ {
54                         .phys_start = 0x0,
55                         .virt_start = 0x0,
56                         .size = 0x3c000000,
57                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
58                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
59                 },
60                 /* RAM */ {
61                         .phys_start = 0x40000000,
62                         .virt_start = 0x40000000,
63                         .size = 0x8ca64000,
64                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
65                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
66                 },
67                 /* ACPI */ {
68                         .phys_start = 0xcca64000,
69                         .virt_start = 0xcca64000,
70                         .size = 0x15000,
71                         .flags = JAILHOUSE_MEM_READ,
72                 },
73                 /* RAM */ {
74                         .phys_start = 0xcca79000,
75                         .virt_start = 0xcca79000,
76                         .size = 0x12787000,
77                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
78                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
79                 },
80                 /* RAM */ {
81                         .phys_start = 0xcf200000,
82                         .virt_start = 0xcf200000,
83                         .size = 0x10000000,
84                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
85                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
86                 },
87                 /* PCI */ {
88                         .phys_start = 0xdf200000,
89                         .virt_start = 0xdf200000,
90                         .size = 0x1fa00000,
91                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
92                 },
93                 /* yeah, that's not really safe... */
94                 /* IOAPIC */ {
95                         .phys_start = 0xfec00000,
96                         .virt_start = 0xfec00000,
97                         .size = 0x1000,
98                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
99                 },
100                 /* the same here until we catch MSIs via interrupt remapping */
101                 /* HPET */ {
102                         .phys_start = 0xfed00000,
103                         .virt_start = 0xfed00000,
104                         .size = 0x1000,
105                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
106                 },
107                 /* RAM */ {
108                         .phys_start = 0x100000000,
109                         .virt_start = 0x100000000,
110                         .size = 0x20000000,
111                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
112                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
113                 },
114         },
115
116         .pio_bitmap = {
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 ...  0xcff/8] = -1,
130                 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: full PCI */
131         },
132
133         .pci_devices = {
134                 {
135                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
136                         .domain = 0x0000,
137                         .bus = 0x00,
138                         .devfn = 0x00,
139                 },
140                 {
141                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
142                         .domain = 0x0000,
143                         .bus = 0x00,
144                         .devfn = 0x08,
145                 },
146                 {
147                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
148                         .domain = 0x0000,
149                         .bus = 0x00,
150                         .devfn = 0x10,
151                 },
152                 {
153                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
154                         .domain = 0x0000,
155                         .bus = 0x00,
156                         .devfn = 0x18,
157                 },
158                 {
159                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
160                         .domain = 0x0000,
161                         .bus = 0x00,
162                         .devfn = 0xa0,
163                 },
164                 {
165                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
166                         .domain = 0x0000,
167                         .bus = 0x00,
168                         .devfn = 0xb0,
169                 },
170                 {
171                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
172                         .domain = 0x0000,
173                         .bus = 0x00,
174                         .devfn = 0xc8,
175                 },
176                 {
177                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
178                         .domain = 0x0000,
179                         .bus = 0x00,
180                         .devfn = 0xd0,
181                 },
182                 {
183                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
184                         .domain = 0x0000,
185                         .bus = 0x00,
186                         .devfn = 0xd8,
187                 },
188                 {
189                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
190                         .domain = 0x0000,
191                         .bus = 0x00,
192                         .devfn = 0xe8,
193                 },
194                 {
195                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
196                         .domain = 0x0000,
197                         .bus = 0x00,
198                         .devfn = 0xf8,
199                 },
200                 {
201                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
202                         .domain = 0x0000,
203                         .bus = 0x00,
204                         .devfn = 0xfa,
205                 },
206                 {
207                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
208                         .domain = 0x0000,
209                         .bus = 0x00,
210                         .devfn = 0xfb,
211                 },
212         },
213 };