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