]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/h87i.c
core/configs/tools: Switch PCI configuration format to single BDF value
[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 ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
19
20 struct {
21         struct jailhouse_system header;
22         __u64 cpus[1];
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[13];
27         struct jailhouse_pci_capability pci_caps[27];
28 } __attribute__((packed)) config = {
29         .header = {
30                 .hypervisor_memory = {
31                         .phys_start = 0x3c000000,
32                         .size = 0x4000000,
33                 },
34                 .config_memory = {
35                         .phys_start = 0xcca64000,
36                         .size = 0x15000,
37                 },
38                 .platform_info.x86 = {
39                         .pm_timer_address = 0x1808,
40                 },
41                 .root_cell = {
42                         .name = "H87I-PLUS",
43
44                         .cpu_set_size = sizeof(config.cpus),
45                         .num_memory_regions = ARRAY_SIZE(config.mem_regions),
46                         .num_irqchips = ARRAY_SIZE(config.irqchips),
47                         .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
48                         .num_pci_devices = ARRAY_SIZE(config.pci_devices),
49                         .num_pci_caps = ARRAY_SIZE(config.pci_caps),
50                 },
51         },
52
53         .cpus = {
54                 0xff,
55         },
56
57         .mem_regions = {
58                 /* RAM */ {
59                         .phys_start = 0x0,
60                         .virt_start = 0x0,
61                         .size = 0x3c000000,
62                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
63                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
64                 },
65                 /* RAM */ {
66                         .phys_start = 0x40000000,
67                         .virt_start = 0x40000000,
68                         .size = 0x8ca64000,
69                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
70                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
71                 },
72                 /* ACPI */ {
73                         .phys_start = 0xcca63000,
74                         .virt_start = 0xcca63000,
75                         .size = 0x15000,
76                         .flags = JAILHOUSE_MEM_READ,
77                 },
78                 /* RAM */ {
79                         .phys_start = 0xcdfff000,
80                         .virt_start = 0xcdfff000,
81                         .size = 0x1000,
82                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
83                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
84                 },
85                 /* RAM */ {
86                         .phys_start = 0xcf200000,
87                         .virt_start = 0xcf200000,
88                         .size = 0x10000000,
89                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
90                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
91                 },
92                 /* PCI */ {
93                         .phys_start = 0xdf200000,
94                         .virt_start = 0xdf200000,
95                         .size = 0x18e00000,
96                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
97                 },
98                 /* not safe until we catch MSIs via interrupt remapping */
99                 /* HPET */ {
100                         .phys_start = 0xfed00000,
101                         .virt_start = 0xfed00000,
102                         .size = 0x1000,
103                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
104                 },
105                 /* RAM */ {
106                         .phys_start = 0x100000000,
107                         .virt_start = 0x100000000,
108                         .size = 0x20000000,
109                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
110                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
111                 },
112         },
113
114         .irqchips = {
115                 /* IOAPIC */ {
116                         .address = 0xfec00000,
117                         .pin_bitmap = 0xffffff,
118                 },
119         },
120
121         .pio_bitmap = {
122                 [     0/8 ...   0x3f/8] = -1,
123                 [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
124                 [  0x48/8 ...   0x5f/8] = -1,
125                 [  0x60/8 ...   0x67/8] = 0x0, /* HACK: 8042, and more? */
126                 [  0x68/8 ...   0x6f/8] = -1,
127                 [  0x70/8 ...   0x77/8] = 0xfc, /* rtc */
128                 [  0x78/8 ...  0x3af/8] = -1,
129                 [ 0x3b0/8 ...  0x3df/8] = 0, /* VGA */
130                 [ 0x3e0/8 ...  0xcff/8] = -1,
131                 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: full PCI */
132         },
133
134         .pci_devices = {
135                 /* PCIDevice: 00:00.0 */
136                 {
137                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
138                         .domain = 0x0,
139                         .bdf = 0x0,
140                         .caps_start = 0,
141                         .num_caps = 1,
142                 },
143                 /* PCIDevice: 00:01.0 */
144                 {
145                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
146                         .domain = 0x0,
147                         .bdf = 0x8,
148                         .caps_start = 1,
149                         .num_caps = 4,
150                 },
151                 /* PCIDevice: 00:02.0 */
152                 {
153                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
154                         .domain = 0x0,
155                         .bdf = 0x10,
156                         .caps_start = 5,
157                         .num_caps = 3,
158                 },
159                 /* PCIDevice: 00:03.0 */
160                 {
161                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
162                         .domain = 0x0,
163                         .bdf = 0x18,
164                         .caps_start = 8,
165                         .num_caps = 3,
166                 },
167                 /* PCIDevice: 00:14.0 */
168                 {
169                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
170                         .domain = 0x0,
171                         .bdf = 0xa0,
172                         .caps_start = 11,
173                         .num_caps = 2,
174                 },
175                 /* PCIDevice: 00:16.0 */
176                 {
177                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
178                         .domain = 0x0,
179                         .bdf = 0xb0,
180                         .caps_start = 13,
181                         .num_caps = 2,
182                 },
183                 /* PCIDevice: 00:19.0 */
184                 {
185                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
186                         .domain = 0x0,
187                         .bdf = 0xc8,
188                         .caps_start = 15,
189                         .num_caps = 3,
190                 },
191                 /* PCIDevice: 00:1a.0 */
192                 {
193                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
194                         .domain = 0x0,
195                         .bdf = 0xd0,
196                         .caps_start = 18,
197                         .num_caps = 3,
198                 },
199                 /* PCIDevice: 00:1b.0 */
200                 {
201                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
202                         .domain = 0x0,
203                         .bdf = 0xd8,
204                         .caps_start = 21,
205                         .num_caps = 3,
206                 },
207                 /* PCIDevice: 00:1d.0 */
208                 {
209                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
210                         .domain = 0x0,
211                         .bdf = 0xe8,
212                         .caps_start = 18,
213                         .num_caps = 3,
214                 },
215                 /* PCIDevice: 00:1f.0 */
216                 {
217                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
218                         .domain = 0x0,
219                         .bdf = 0xf8,
220                         .caps_start = 0,
221                         .num_caps = 1,
222                 },
223                 /* PCIDevice: 00:1f.2 */
224                 {
225                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
226                         .domain = 0x0,
227                         .bdf = 0xfa,
228                         .caps_start = 24,
229                         .num_caps = 3,
230                 },
231                 /* PCIDevice: 00:1f.3 */
232                 {
233                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
234                         .domain = 0x0,
235                         .bdf = 0xfb,
236                         .caps_start = 0,
237                         .num_caps = 0,
238                 },
239         },
240
241         .pci_caps = {
242                 /* PCIDevice: 00:00.0 */
243                 /* PCIDevice: 00:1f.0 */
244                 {
245                         .id = 0x9,
246                         .start = 0xe0,
247                         .len = 2,
248                         .flags = 0,
249                 },
250                 /* PCIDevice: 00:01.0 */
251                 {
252                         .id = 0xd,
253                         .start = 0x88,
254                         .len = 2,
255                         .flags = 0,
256                 },
257                 {
258                         .id = 0x1,
259                         .start = 0x80,
260                         .len = 8,
261                         .flags = JAILHOUSE_PCICAPS_WRITE,
262                 },
263                 {
264                         .id = 0x5,
265                         .start = 0x90,
266                         .len = 10,
267                         .flags = JAILHOUSE_PCICAPS_WRITE,
268                 },
269                 {
270                         .id = 0x10,
271                         .start = 0xa0,
272                         .len = 2,
273                         .flags = 0,
274                 },
275                 /* PCIDevice: 00:02.0 */
276                 {
277                         .id = 0x5,
278                         .start = 0x90,
279                         .len = 10,
280                         .flags = JAILHOUSE_PCICAPS_WRITE,
281                 },
282                 {
283                         .id = 0x1,
284                         .start = 0xd0,
285                         .len = 8,
286                         .flags = JAILHOUSE_PCICAPS_WRITE,
287                 },
288                 {
289                         .id = 0x13,
290                         .start = 0xa4,
291                         .len = 2,
292                         .flags = 0,
293                 },
294                 /* PCIDevice: 00:03.0 */
295                 {
296                         .id = 0x1,
297                         .start = 0x50,
298                         .len = 8,
299                         .flags = JAILHOUSE_PCICAPS_WRITE,
300                 },
301                 {
302                         .id = 0x5,
303                         .start = 0x60,
304                         .len = 10,
305                         .flags = JAILHOUSE_PCICAPS_WRITE,
306                 },
307                 {
308                         .id = 0x10,
309                         .start = 0x70,
310                         .len = 2,
311                         .flags = 0,
312                 },
313                 /* PCIDevice: 00:14.0 */
314                 {
315                         .id = 0x1,
316                         .start = 0x70,
317                         .len = 8,
318                         .flags = JAILHOUSE_PCICAPS_WRITE,
319                 },
320                 {
321                         .id = 0x5,
322                         .start = 0x80,
323                         .len = 14,
324                         .flags = JAILHOUSE_PCICAPS_WRITE,
325                 },
326                 /* PCIDevice: 00:16.0 */
327                 {
328                         .id = 0x1,
329                         .start = 0x50,
330                         .len = 8,
331                         .flags = JAILHOUSE_PCICAPS_WRITE,
332                 },
333                 {
334                         .id = 0x5,
335                         .start = 0x8c,
336                         .len = 14,
337                         .flags = JAILHOUSE_PCICAPS_WRITE,
338                 },
339                 /* PCIDevice: 00:19.0 */
340                 {
341                         .id = 0x1,
342                         .start = 0xc8,
343                         .len = 8,
344                         .flags = JAILHOUSE_PCICAPS_WRITE,
345                 },
346                 {
347                         .id = 0x5,
348                         .start = 0xd0,
349                         .len = 14,
350                         .flags = JAILHOUSE_PCICAPS_WRITE,
351                 },
352                 {
353                         .id = 0x13,
354                         .start = 0xe0,
355                         .len = 2,
356                         .flags = 0,
357                 },
358                 /* PCIDevice: 00:1a.0 */
359                 /* PCIDevice: 00:1d.0 */
360                 {
361                         .id = 0x1,
362                         .start = 0x50,
363                         .len = 8,
364                         .flags = JAILHOUSE_PCICAPS_WRITE,
365                 },
366                 {
367                         .id = 0xa,
368                         .start = 0x58,
369                         .len = 2,
370                         .flags = 0,
371                 },
372                 {
373                         .id = 0x13,
374                         .start = 0x98,
375                         .len = 2,
376                         .flags = 0,
377                 },
378                 /* PCIDevice: 00:1b.0 */
379                 {
380                         .id = 0x1,
381                         .start = 0x50,
382                         .len = 8,
383                         .flags = JAILHOUSE_PCICAPS_WRITE,
384                 },
385                 {
386                         .id = 0x5,
387                         .start = 0x60,
388                         .len = 14,
389                         .flags = JAILHOUSE_PCICAPS_WRITE,
390                 },
391                 {
392                         .id = 0x10,
393                         .start = 0x70,
394                         .len = 2,
395                         .flags = 0,
396                 },
397                 /* PCIDevice: 00:1f.2 */
398                 {
399                         .id = 0x5,
400                         .start = 0x80,
401                         .len = 10,
402                         .flags = JAILHOUSE_PCICAPS_WRITE,
403                 },
404                 {
405                         .id = 0x1,
406                         .start = 0x70,
407                         .len = 8,
408                         .flags = JAILHOUSE_PCICAPS_WRITE,
409                 },
410                 {
411                         .id = 0x12,
412                         .start = 0xa8,
413                         .len = 2,
414                         .flags = 0,
415                 },
416         },
417 };