]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/imb-a180.c
config, core: Improve irqchip configuration
[jailhouse.git] / configs / imb-a180.c
1 /*
2  * Jailhouse, a Linux-based partitioning hypervisor
3  *
4  * Copyright (c) Siemens AG, 2014
5  * Copyright (c) Valentine Sinitsyn, 2014
6  *
7  * This work is licensed under the terms of the GNU GPL, version 2.  See
8  * the COPYING file in the top-level directory.
9  *
10  * Configuration for ASRock IMB-A180 G-Series (4G RAM) board
11  * created with 'jailhouse config create imb-a180.c'
12  *
13  * Adjusted by Valentine Sinitsyn <valentine.sinitsyn@gmail.com>
14  *
15  * NOTE: This config expects the following to be appended to your kernel cmdline
16  *       "memmap=0x4200000$0x3b000000"
17  */
18
19 #include <linux/types.h>
20 #include <jailhouse/cell-config.h>
21
22 #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
23
24 struct {
25         struct jailhouse_system header;
26         __u64 cpus[1];
27         struct jailhouse_memory mem_regions[42];
28         struct jailhouse_irqchip irqchips[1];
29         __u8 pio_bitmap[0x2000];
30         struct jailhouse_pci_device pci_devices[26];
31         struct jailhouse_pci_capability pci_caps[26];
32 } __attribute__((packed)) config = {
33         .header = {
34                 .signature = JAILHOUSE_SYSTEM_SIGNATURE,
35                 .hypervisor_memory = {
36                         .phys_start = 0x3b000000,
37                         .size = 0x4000000,
38                 },
39                 .debug_console = {
40                         .phys_start = 0x3f8,
41                 },
42                 .platform_info.x86 = {
43                         .mmconfig_base = 0xe0000000,
44                         .mmconfig_end_bus = 0xff,
45                         .pm_timer_address = 0x808,
46                 },
47                 .root_cell = {
48                         .name = "IMB-A180",
49                         .cpu_set_size = sizeof(config.cpus),
50                         .num_memory_regions = ARRAY_SIZE(config.mem_regions),
51                         .num_irqchips = ARRAY_SIZE(config.irqchips),
52                         .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
53                         .num_pci_devices = ARRAY_SIZE(config.pci_devices),
54                         .num_pci_caps = ARRAY_SIZE(config.pci_caps),
55                 },
56         },
57
58         .cpus = {
59                 0x000000000000000f,
60         },
61
62         .mem_regions = {
63                 /* MemRegion: 00000000-0009e7ff : System RAM */
64                 {
65                         .phys_start = 0x0,
66                         .virt_start = 0x0,
67                         .size = 0x9f000,
68                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
69                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
70                 },
71                 /* MemRegion: 000a0000-000bffff : PCI Bus 0000:00 */
72                 {
73                         .phys_start = 0xa0000,
74                         .virt_start = 0xa0000,
75                         .size = 0x20000,
76                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
77                 },
78                 /* MemRegion: 000c0000-000ce9ff : Video ROM */
79                 {
80                         .phys_start = 0xc0000,
81                         .virt_start = 0xc0000,
82                         .size = 0xf000,
83                         .flags = JAILHOUSE_MEM_READ,
84                 },
85                 /* MemRegion: 000e0000-000fffff : System ROM */
86                 {
87                         .phys_start = 0xe0000,
88                         .virt_start = 0xe0000,
89                         .size = 0x20000,
90                         .flags = JAILHOUSE_MEM_READ,
91                 },
92                 /* MemRegion: 00100000-3affffff : System RAM */
93                 {
94                         .phys_start = 0x00100000,
95                         .virt_start = 0x00100000,
96                         .size = 0x3af00000,
97                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
98                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
99                 },
100                 /* MemRegion: 3f200000-9db10fff : System RAM */
101                 {
102                         .phys_start = 0x3f200000,
103                         .virt_start = 0x3f200000,
104                         .size = 0x5e911000,
105                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
106                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
107                 },
108                 /* MemRegion: 9db41000-9dc7ffff : System RAM */
109                 {
110                         .phys_start = 0x9db41000,
111                         .virt_start = 0x9db41000,
112                         .size = 0x13f000,
113                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
114                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
115                 },
116                 /* MemRegion: 9dc80000-9e148fff : ACPI Non-volatile Storage */
117                 {
118                         .phys_start = 0x9dc80000,
119                         .virt_start = 0x9dc80000,
120                         .size = 0x4c9000,
121                         .flags = JAILHOUSE_MEM_READ,
122                 },
123                 /* MemRegion: 9ede5000-9ede5fff : System RAM */
124                 {
125                         .phys_start = 0x9ede5000,
126                         .virt_start = 0x9ede5000,
127                         .size = 0x1000,
128                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
129                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
130                 },
131                 /* MemRegion: 9ede6000-9ededfff : ACPI Non-volatile Storage */
132                 {
133                         .phys_start = 0x9ede6000,
134                         .virt_start = 0x9ede6000,
135                         .size = 0x8000,
136                         .flags = JAILHOUSE_MEM_READ,
137                 },
138                 /* MemRegion: 9edee000-9ef42fff : System RAM */
139                 {
140                         .phys_start = 0x9edee000,
141                         .virt_start = 0x9edee000,
142                         .size = 0x155000,
143                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
144                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
145                 },
146                 /* MemRegion: 9f42d000-9f46ffff : System RAM */
147                 {
148                         .phys_start = 0x9f42d000,
149                         .virt_start = 0x9f42d000,
150                         .size = 0x43000,
151                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
152                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
153                 },
154                 /* MemRegion: 9f7f1000-9f7fffff : System RAM */
155                 {
156                         .phys_start = 0x9f7f1000,
157                         .virt_start = 0x9f7f1000,
158                         .size = 0xf000,
159                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
160                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
161                 },
162                 /* MemRegion: 9f800000-9fffffff : RAM buffer */
163                 {
164                         .phys_start = 0x9f800000,
165                         .virt_start = 0x9f800000,
166                         .size = 0x800000,
167                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
168                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
169                 },
170                 /* MemRegion: a0000000-bfffffff : pnp 00:01 */
171                 {
172                         .phys_start = 0xa0000000,
173                         .virt_start = 0xa0000000,
174                         .size = 0x20000000,
175                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
176                 },
177                 /* MemRegion: c0000000-cfffffff : 0000:00:01.0 */
178                 {
179                         .phys_start = 0xc0000000,
180                         .virt_start = 0xc0000000,
181                         .size = 0x10000000,
182                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
183                 },
184                 /* MemRegion: d0000000-d07fffff : 0000:00:01.0 */
185                 {
186                         .phys_start = 0xd0000000,
187                         .virt_start = 0xd0000000,
188                         .size = 0x800000,
189                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
190                 },
191                 /* MemRegion: d0800000-d0803fff : r8169 */
192                 {
193                         .phys_start = 0xd0800000,
194                         .virt_start = 0xd0800000,
195                         .size = 0x4000,
196                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
197                 },
198                 /* MemRegion: d0804000-d0804fff : r8169 */
199                 {
200                         .phys_start = 0xd0804000,
201                         .virt_start = 0xd0804000,
202                         .size = 0x1000,
203                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
204                 },
205                 /* MemRegion: d0900000-d0903fff : r8169 */
206                 {
207                         .phys_start = 0xd0900000,
208                         .virt_start = 0xd0900000,
209                         .size = 0x4000,
210                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
211                 },
212                 /* MemRegion: fea00000-fea03fff : 0000:01:00.3 */
213                 {
214                         .phys_start = 0xfea00000,
215                         .virt_start = 0xfea00000,
216                         .size = 0x4000,
217                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
218                 },
219                 /* MemRegion: fea04000-fea07fff : 0000:01:00.2 */
220                 {
221                         .phys_start = 0xfea04000,
222                         .virt_start = 0xfea04000,
223                         .size = 0x4000,
224                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
225                 },
226                 /* MemRegion: fea08000-fea0bfff : 0000:01:00.1 */
227                 {
228                         .phys_start = 0xfea08000,
229                         .virt_start = 0xfea08000,
230                         .size = 0x4000,
231                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
232                 },
233                 /* MemRegion: fea0c000-fea0c0ff : 0000:01:00.3 */
234                 {
235                         .phys_start = 0xfea0c000,
236                         .virt_start = 0xfea0c000,
237                         .size = 0x1000,
238                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
239                 },
240                 /* MemRegion: fea0d000-fea0dfff : 0000:01:00.2 */
241                 {
242                         .phys_start = 0xfea0d000,
243                         .virt_start = 0xfea0d000,
244                         .size = 0x1000,
245                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
246                 },
247                 /* MemRegion: fea0e000-fea0efff : 0000:01:00.1 */
248                 {
249                         .phys_start = 0xfea0e000,
250                         .virt_start = 0xfea0e000,
251                         .size = 0x1000,
252                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
253                 },
254                 /* MemRegion: fea0f000-fea0ffff : r8169 */
255                 {
256                         .phys_start = 0xfea0f000,
257                         .virt_start = 0xfea0f000,
258                         .size = 0x1000,
259                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
260                 },
261                 /* MemRegion: feb00000-feb3ffff : 0000:00:01.0 */
262                 {
263                         .phys_start = 0xfeb00000,
264                         .virt_start = 0xfeb00000,
265                         .size = 0x40000,
266                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
267                 },
268                 /* MemRegion: feb40000-feb5ffff : 0000:00:01.0 */
269                 {
270                         .phys_start = 0xfeb40000,
271                         .virt_start = 0xfeb40000,
272                         .size = 0x20000,
273                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
274                 },
275                 /* MemRegion: feb60000-feb63fff : ICH HD audio */
276                 {
277                         .phys_start = 0xfeb60000,
278                         .virt_start = 0xfeb60000,
279                         .size = 0x4000,
280                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
281                 },
282                 /* MemRegion: feb64000-feb67fff : ICH HD audio */
283                 {
284                         .phys_start = 0xfeb64000,
285                         .virt_start = 0xfeb64000,
286                         .size = 0x4000,
287                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
288                 },
289                 /* MemRegion: feb68000-feb69fff : xhci_hcd */
290                 {
291                         .phys_start = 0xfeb68000,
292                         .virt_start = 0xfeb68000,
293                         .size = 0x2000,
294                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
295                 },
296                 /* MemRegion: feb6a000-feb6a0ff : ehci_hcd */
297                 {
298                         .phys_start = 0xfeb6a000,
299                         .virt_start = 0xfeb6a000,
300                         .size = 0x1000,
301                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
302                 },
303                 /* MemRegion: feb6b000-feb6bfff : ohci_hcd */
304                 {
305                         .phys_start = 0xfeb6b000,
306                         .virt_start = 0xfeb6b000,
307                         .size = 0x1000,
308                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
309                 },
310                 /* MemRegion: feb6c000-feb6c0ff : ehci_hcd */
311                 {
312                         .phys_start = 0xfeb6c000,
313                         .virt_start = 0xfeb6c000,
314                         .size = 0x1000,
315                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
316                 },
317                 /* MemRegion: feb6d000-feb6dfff : ohci_hcd */
318                 {
319                         .phys_start = 0xfeb6d000,
320                         .virt_start = 0xfeb6d000,
321                         .size = 0x1000,
322                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
323                 },
324                 /* MemRegion: feb6e000-feb6e3ff : ahci */
325                 {
326                         .phys_start = 0xfeb6e000,
327                         .virt_start = 0xfeb6e000,
328                         .size = 0x1000,
329                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
330                 },
331                 /* MemRegion: fed00000-fed003ff : HPET 0 */
332                 {
333                         .phys_start = 0xfed00000,
334                         .virt_start = 0xfed00000,
335                         .size = 0x1000,
336                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
337                 },
338                 /* MemRegion: fed61000-fed70fff : pnp 00:0e */
339                 {
340                         .phys_start = 0xfed61000,
341                         .virt_start = 0xfed61000,
342                         .size = 0x10000,
343                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
344                 },
345                 /* MemRegion: 100001000-13effffff : System RAM */
346                 {
347                         .phys_start = 0x100001000,
348                         .virt_start = 0x100001000,
349                         .size = 0x3efff000,
350                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
351                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
352                 },
353                 /* MemRegion: 13f000000-13fffffff : RAM buffer */
354                 {
355                         .phys_start = 0x13f000000,
356                         .virt_start = 0x13f000000,
357                         .size = 0x1000000,
358                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
359                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
360                 },
361                 /* MemRegion: 3f000000-3f1fffff : JAILHOUSE Inmate Memory */
362                 {
363                         .phys_start = 0x3f000000,
364                         .virt_start = 0x3f000000,
365                         .size = 0x200000,
366                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
367                 },
368         },
369
370         .irqchips = {
371                 /* IOAPIC */ {
372                         .address = 0xfec00000,
373                         .id = 0x0,
374                         .pin_bitmap = {
375                                 0xffffff
376                         },
377                 },
378         },
379
380         .pio_bitmap = {
381                 [     0/8 ...   0x1f/8] = -1,
382                 [  0x20/8 ...   0x27/8] = 0xfc, /* HACK: PIC */
383                 [  0x28/8 ...   0x3f/8] = -1,
384                 [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
385                 [  0x48/8 ...   0x5f/8] = -1,
386                 [  0x60/8 ...   0x67/8] = 0xec, /* HACK: NMI status/control */
387                 [  0x68/8 ...   0x6f/8] = -1,
388                 [  0x70/8 ...   0x77/8] = 0xfc, /* RTC */
389                 [  0x78/8 ...   0x7f/8] = -1,
390                 [  0x80/8 ...   0x87/8] = 0xfe, /* Port 80 (delays) */
391                 [  0x88/8 ...  0x3af/8] = -1,
392                 [ 0x3b0/8 ...  0x3df/8] = 0x00, /* VGA */
393                 [ 0x3e0/8 ...  0xcf7/8] = 0, /* HACK: PCI bus */
394                 [ 0xcf8/8 ...  0xcff/8] = -1,
395                 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: PCI bus */
396         },
397
398         .pci_devices = {
399                 /* PCIDevice: 00:00.0 */
400                 {
401                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
402                         .domain = 0x0,
403                         .bdf = 0x0,
404                         .caps_start = 0,
405                         .num_caps = 0,
406                 },
407                 /* PCIDevice: 00:01.0 */
408                 {
409                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
410                         .domain = 0x0,
411                         .bdf = 0x8,
412                         .caps_start = 0,
413                         .num_caps = 4,
414                 },
415                 /* PCIDevice: 00:01.1 */
416                 {
417                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
418                         .domain = 0x0,
419                         .bdf = 0x9,
420                         .caps_start = 0,
421                         .num_caps = 4,
422                 },
423                 /* PCIDevice: 00:02.0 */
424                 {
425                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
426                         .domain = 0x0,
427                         .bdf = 0x10,
428                         .caps_start = 0,
429                         .num_caps = 0,
430                 },
431                 /* PCIDevice: 00:02.3 */
432                 {
433                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
434                         .domain = 0x0,
435                         .bdf = 0x13,
436                         .caps_start = 4,
437                         .num_caps = 5,
438                 },
439                 /* PCIDevice: 00:02.4 */
440                 {
441                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
442                         .domain = 0x0,
443                         .bdf = 0x14,
444                         .caps_start = 4,
445                         .num_caps = 5,
446                 },
447                 /* PCIDevice: 00:10.0 */
448                 {
449                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
450                         .domain = 0x0,
451                         .bdf = 0x80,
452                         .caps_start = 9,
453                         .num_caps = 4,
454                 },
455                 /* PCIDevice: 00:11.0 */
456                 {
457                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
458                         .domain = 0x0,
459                         .bdf = 0x88,
460                         .caps_start = 13,
461                         .num_caps = 4,
462                 },
463                 /* PCIDevice: 00:12.0 */
464                 {
465                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
466                         .domain = 0x0,
467                         .bdf = 0x90,
468                         .caps_start = 0,
469                         .num_caps = 0,
470                 },
471                 /* PCIDevice: 00:12.2 */
472                 {
473                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
474                         .domain = 0x0,
475                         .bdf = 0x92,
476                         .caps_start = 17,
477                         .num_caps = 2,
478                 },
479                 /* PCIDevice: 00:13.0 */
480                 {
481                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
482                         .domain = 0x0,
483                         .bdf = 0x98,
484                         .caps_start = 0,
485                         .num_caps = 0,
486                 },
487                 /* PCIDevice: 00:13.2 */
488                 {
489                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
490                         .domain = 0x0,
491                         .bdf = 0x9a,
492                         .caps_start = 17,
493                         .num_caps = 2,
494                 },
495                 /* PCIDevice: 00:14.0 */
496                 {
497                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
498                         .domain = 0x0,
499                         .bdf = 0xa0,
500                         .caps_start = 0,
501                         .num_caps = 0,
502                 },
503                 /* PCIDevice: 00:14.2 */
504                 {
505                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
506                         .domain = 0x0,
507                         .bdf = 0xa2,
508                         .caps_start = 19,
509                         .num_caps = 1,
510                 },
511                 /* PCIDevice: 00:14.3 */
512                 {
513                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
514                         .domain = 0x0,
515                         .bdf = 0xa3,
516                         .caps_start = 0,
517                         .num_caps = 0,
518                 },
519                 /* PCIDevice: 00:18.0 */
520                 {
521                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
522                         .domain = 0x0,
523                         .bdf = 0xc0,
524                         .caps_start = 0,
525                         .num_caps = 0,
526                 },
527                 /* PCIDevice: 00:18.1 */
528                 {
529                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
530                         .domain = 0x0,
531                         .bdf = 0xc1,
532                         .caps_start = 0,
533                         .num_caps = 0,
534                 },
535                 /* PCIDevice: 00:18.2 */
536                 {
537                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
538                         .domain = 0x0,
539                         .bdf = 0xc2,
540                         .caps_start = 0,
541                         .num_caps = 0,
542                 },
543                 /* PCIDevice: 00:18.3 */
544                 {
545                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
546                         .domain = 0x0,
547                         .bdf = 0xc3,
548                         .caps_start = 20,
549                         .num_caps = 1,
550                 },
551                 /* PCIDevice: 00:18.4 */
552                 {
553                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
554                         .domain = 0x0,
555                         .bdf = 0xc4,
556                         .caps_start = 0,
557                         .num_caps = 0,
558                 },
559                 /* PCIDevice: 00:18.5 */
560                 {
561                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
562                         .domain = 0x0,
563                         .bdf = 0xc5,
564                         .caps_start = 0,
565                         .num_caps = 0,
566                 },
567                 /* PCIDevice: 01:00.0 */
568                 {
569                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
570                         .domain = 0x0,
571                         .bdf = 0x100,
572                         .caps_start = 21,
573                         .num_caps = 5,
574                 },
575                 /* PCIDevice: 01:00.1 */
576                 {
577                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
578                         .domain = 0x0,
579                         .bdf = 0x101,
580                         .caps_start = 21,
581                         .num_caps = 5,
582                 },
583                 /* PCIDevice: 01:00.2 */
584                 {
585                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
586                         .domain = 0x0,
587                         .bdf = 0x102,
588                         .caps_start = 21,
589                         .num_caps = 5,
590                 },
591                 /* PCIDevice: 01:00.3 */
592                 {
593                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
594                         .domain = 0x0,
595                         .bdf = 0x103,
596                         .caps_start = 21,
597                         .num_caps = 5,
598                 },
599                 /* PCIDevice: 02:00.0 */
600                 {
601                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
602                         .domain = 0x0,
603                         .bdf = 0x200,
604                         .caps_start = 21,
605                         .num_caps = 5,
606                 },
607         },
608
609         .pci_caps = {
610                 /* PCIDevice: 00:01.0 */
611                 /* PCIDevice: 00:01.1 */
612                 {
613                         .id = 0x9,
614                         .start = 0x48,
615                         .len = 2,
616                         .flags = 0,
617                 },
618                 {
619                         .id = 0x1,
620                         .start = 0x50,
621                         .len = 8,
622                         .flags = JAILHOUSE_PCICAPS_WRITE,
623                 },
624                 {
625                         .id = 0x10,
626                         .start = 0x58,
627                         .len = 2,
628                         .flags = 0,
629                 },
630                 {
631                         .id = 0x5,
632                         .start = 0xa0,
633                         .len = 14,
634                         .flags = JAILHOUSE_PCICAPS_WRITE,
635                 },
636                 /* PCIDevice: 00:02.3 */
637                 /* PCIDevice: 00:02.4 */
638                 {
639                         .id = 0x1,
640                         .start = 0x50,
641                         .len = 8,
642                         .flags = JAILHOUSE_PCICAPS_WRITE,
643                 },
644                 {
645                         .id = 0x10,
646                         .start = 0x58,
647                         .len = 2,
648                         .flags = 0,
649                 },
650                 {
651                         .id = 0x5,
652                         .start = 0xa0,
653                         .len = 14,
654                         .flags = JAILHOUSE_PCICAPS_WRITE,
655                 },
656                 {
657                         .id = 0xd,
658                         .start = 0xb0,
659                         .len = 2,
660                         .flags = 0,
661                 },
662                 {
663                         .id = 0x8,
664                         .start = 0xb8,
665                         .len = 2,
666                         .flags = 0,
667                 },
668                 /* PCIDevice: 00:10.0 */
669                 {
670                         .id = 0x1,
671                         .start = 0x50,
672                         .len = 8,
673                         .flags = JAILHOUSE_PCICAPS_WRITE,
674                 },
675                 {
676                         .id = 0x5,
677                         .start = 0x70,
678                         .len = 14,
679                         .flags = JAILHOUSE_PCICAPS_WRITE,
680                 },
681                 {
682                         .id = 0x11,
683                         .start = 0x90,
684                         .len = 12,
685                         .flags = JAILHOUSE_PCICAPS_WRITE,
686                 },
687                 {
688                         .id = 0x10,
689                         .start = 0xa0,
690                         .len = 2,
691                         .flags = 0,
692                 },
693                 /* PCIDevice: 00:11.0 */
694                 {
695                         .id = 0x1,
696                         .start = 0x60,
697                         .len = 8,
698                         .flags = JAILHOUSE_PCICAPS_WRITE,
699                 },
700                 {
701                         .id = 0x12,
702                         .start = 0x70,
703                         .len = 2,
704                         .flags = 0,
705                 },
706                 {
707                         .id = 0x5,
708                         .start = 0x50,
709                         .len = 14,
710                         .flags = JAILHOUSE_PCICAPS_WRITE,
711                 },
712                 {
713                         .id = 0x13,
714                         .start = 0xd0,
715                         .len = 2,
716                         .flags = 0,
717                 },
718                 /* PCIDevice: 00:12.2 */
719                 /* PCIDevice: 00:13.2 */
720                 {
721                         .id = 0x1,
722                         .start = 0xc0,
723                         .len = 8,
724                         .flags = JAILHOUSE_PCICAPS_WRITE,
725                 },
726                 {
727                         .id = 0xa,
728                         .start = 0xe4,
729                         .len = 2,
730                         .flags = 0,
731                 },
732                 /* PCIDevice: 00:14.2 */
733                 {
734                         .id = 0x1,
735                         .start = 0x50,
736                         .len = 8,
737                         .flags = JAILHOUSE_PCICAPS_WRITE,
738                 },
739                 /* PCIDevice: 00:18.3 */
740                 {
741                         .id = 0xf,
742                         .start = 0xf0,
743                         .len = 2,
744                         .flags = 0,
745                 },
746                 /* PCIDevice: 01:00.0 */
747                 /* PCIDevice: 01:00.1 */
748                 /* PCIDevice: 01:00.2 */
749                 /* PCIDevice: 01:00.3 */
750                 /* PCIDevice: 02:00.0 */
751                 {
752                         .id = 0x1,
753                         .start = 0x40,
754                         .len = 8,
755                         .flags = JAILHOUSE_PCICAPS_WRITE,
756                 },
757                 {
758                         .id = 0x5,
759                         .start = 0x50,
760                         .len = 14,
761                         .flags = JAILHOUSE_PCICAPS_WRITE,
762                 },
763                 {
764                         .id = 0x10,
765                         .start = 0x70,
766                         .len = 2,
767                         .flags = 0,
768                 },
769                 {
770                         .id = 0x11,
771                         .start = 0xb0,
772                         .len = 12,
773                         .flags = JAILHOUSE_PCICAPS_WRITE,
774                 },
775                 {
776                         .id = 0x3,
777                         .start = 0xd0,
778                         .len = 2,
779                         .flags = 0,
780                 },
781         },
782 };