]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/f2a88xm-hd3.c
hypervisor, driver: Added signature for .cell files
[jailhouse.git] / configs / f2a88xm-hd3.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 Gigabyte Technology Co., Ltd. GA-F2A88XM-HD3 Rev. 3.0
11  * board with AMD A10-7800 APU and 1G RAM.
12  *
13  * Created with 'jailhouse config create f2a88xm-hd3.c' and adjusted
14  * by Valentine Sinitsyn <valentine.sinitsyn@gmail.com>.
15  *
16  * NOTE: This config expects the following to be appended to your kernel cmdline
17  *       "memmap=0x4200000$0x3b000000"
18  */
19
20 #include <linux/types.h>
21 #include <jailhouse/cell-config.h>
22
23 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
24
25 struct {
26         struct jailhouse_system header;
27         __u64 cpus[1];
28         struct jailhouse_memory mem_regions[35];
29         struct jailhouse_irqchip irqchips[2];
30         __u8 pio_bitmap[0x2000];
31         struct jailhouse_pci_device pci_devices[26];
32         struct jailhouse_pci_capability pci_caps[27];
33 } __attribute__((packed)) config = {
34         .header = {
35                 .signature = JAILHOUSE_SYSTEM_SIGNATURE,
36                 .hypervisor_memory = {
37                         .phys_start = 0x3b000000,
38                         .size = 0x4000000,
39                 },
40                 .platform_info.x86 = {
41                         .mmconfig_base = 0xe0000000,
42                         .mmconfig_end_bus = 0xff,
43                         .pm_timer_address = 0x808,
44                         .iommu_base = {
45                                 0xfeb80000,
46                         },
47                 },
48                 .device_limit = 128,
49                 .interrupt_limit = 256,
50                 .root_cell = {
51                         .name = "F2A88XM-HD3",
52                         .cpu_set_size = sizeof(config.cpus),
53                         .num_memory_regions = ARRAY_SIZE(config.mem_regions),
54                         .num_irqchips = ARRAY_SIZE(config.irqchips),
55                         .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
56                         .num_pci_devices = ARRAY_SIZE(config.pci_devices),
57                         .num_pci_caps = ARRAY_SIZE(config.pci_caps),
58                 },
59         },
60
61         .cpus = {
62                 0x000000000000000f,
63         },
64
65         .mem_regions = {
66                 /* MemRegion: 00000000-0009e7ff : System RAM */
67                 {
68                         .phys_start = 0x0,
69                         .virt_start = 0x0,
70                         .size = 0x9f000,
71                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
72                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
73                 },
74                 /* MemRegion: 000a0000-000bffff : PCI Bus 0000:00 */
75                 {
76                         .phys_start = 0xa0000,
77                         .virt_start = 0xa0000,
78                         .size = 0x20000,
79                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
80                 },
81                 /* MemRegion: 000c0000-000cf5ff : Video ROM */
82                 {
83                         .phys_start = 0xc0000,
84                         .virt_start = 0xc0000,
85                         .size = 0x10000,
86                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
87                 },
88                 /* MemRegion: 000e0000-000fffff : System ROM */
89                 {
90                         .phys_start = 0xe0000,
91                         .virt_start = 0xe0000,
92                         .size = 0x20000,
93                         .flags = JAILHOUSE_MEM_READ,
94                 },
95                 /* MemRegion: 00100000-00ffffff : System RAM */
96                 {
97                         .phys_start = 0x100000,
98                         .virt_start = 0x100000,
99                         .size = 0xf00000,
100                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
101                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
102                 },
103                 /* MemRegion: 01000000-01ffffff : Kernel */
104                 {
105                         .phys_start = 0x1000000,
106                         .virt_start = 0x1000000,
107                         .size = 0x1000000,
108                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
109                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
110                 },
111                 /* MemRegion: 02000000-3affffff : System RAM */
112                 {
113                         .phys_start = 0x2000000,
114                         .virt_start = 0x2000000,
115                         .size = 0x39000000,
116                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
117                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
118                 },
119                 /* MemRegion: 3f200000-6b8ecfff : System RAM */
120                 {
121                         .phys_start = 0x3f200000,
122                         .virt_start = 0x3f200000,
123                         .size = 0x2c6ed000,
124                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
125                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
126                 },
127                 /* MemRegion: 6b91d000-6bbdffff : System RAM */
128                 {
129                         .phys_start = 0x6b91d000,
130                         .virt_start = 0x6b91d000,
131                         .size = 0x2c3000,
132                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
133                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
134                 },
135                 /* MemRegion: 6bbe0000-6bcadfff : ACPI Non-volatile Storage */
136                 {
137                         .phys_start = 0x6bbe0000,
138                         .virt_start = 0x6bbe0000,
139                         .size = 0xce000,
140                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
141                 },
142                 /* MemRegion: 6d1c9000-6d1c9fff : System RAM */
143                 {
144                         .phys_start = 0x6d1c9000,
145                         .virt_start = 0x6d1c9000,
146                         .size = 0x1000,
147                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
148                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
149                 },
150                 /* MemRegion: 6d1ca000-6d3cffff : ACPI Non-volatile Storage */
151                 {
152                         .phys_start = 0x6d1ca000,
153                         .virt_start = 0x6d1ca000,
154                         .size = 0x206000,
155                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
156                 },
157                 /* MemRegion: 6d3d0000-6d850fff : System RAM */
158                 {
159                         .phys_start = 0x6d3d0000,
160                         .virt_start = 0x6d3d0000,
161                         .size = 0x481000,
162                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
163                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
164                 },
165                 /* MemRegion: 6dfe2000-6dffffff : System RAM */
166                 {
167                         .phys_start = 0x6dfe2000,
168                         .virt_start = 0x6dfe2000,
169                         .size = 0x1e000,
170                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
171                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
172                 },
173                 /* MemRegion: 6e000000-6fffffff : RAM buffer */
174                 {
175                         .phys_start = 0x6e000000,
176                         .virt_start = 0x6e000000,
177                         .size = 0x2000000,
178                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
179                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
180                 },
181                 /* MemRegion: c0000000-cfffffff : 0000:00:01.0 */
182                 {
183                         .phys_start = 0xc0000000,
184                         .virt_start = 0xc0000000,
185                         .size = 0x10000000,
186                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
187                 },
188                 /* MemRegion: d0000000-d07fffff : 0000:00:01.0 */
189                 {
190                         .phys_start = 0xd0000000,
191                         .virt_start = 0xd0000000,
192                         .size = 0x800000,
193                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
194                 },
195                 /* MemRegion: d0801000-d0803fff : r8169 */
196                 {
197                         .phys_start = 0xd0801000,
198                         .virt_start = 0xd0801000,
199                         .size = 0x3000,
200                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
201                 },
202                 /* MemRegion: fea00000-fea00fff : r8169 */
203                 {
204                         .phys_start = 0xfea00000,
205                         .virt_start = 0xfea00000,
206                         .size = 0x1000,
207                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
208                 },
209                 /* MemRegion: feb00000-feb3ffff : 0000:00:01.0 */
210                 {
211                         .phys_start = 0xfeb00000,
212                         .virt_start = 0xfeb00000,
213                         .size = 0x40000,
214                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
215                 },
216                 /* MemRegion: feb40000-feb5ffff : 0000:00:01.0 */
217                 {
218                         .phys_start = 0xfeb40000,
219                         .virt_start = 0xfeb40000,
220                         .size = 0x20000,
221                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
222                 },
223                 /* MemRegion: feb60000-feb63fff : ICH HD audio */
224                 {
225                         .phys_start = 0xfeb60000,
226                         .virt_start = 0xfeb60000,
227                         .size = 0x4000,
228                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
229                 },
230                 /* MemRegion: feb64000-feb67fff : ICH HD audio */
231                 {
232                         .phys_start = 0xfeb64000,
233                         .virt_start = 0xfeb64000,
234                         .size = 0x4000,
235                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
236                 },
237                 /* MemRegion: feb68000-feb68fff : xhci_hcd */
238                 {
239                         .phys_start = 0xfeb68000,
240                         .virt_start = 0xfeb68000,
241                         .size = 0x1000,
242                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
243                 },
244                 /* MemRegion: feb6a000-feb6afff : xhci_hcd */
245                 {
246                         .phys_start = 0xfeb6a000,
247                         .virt_start = 0xfeb6a000,
248                         .size = 0x1000,
249                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
250                 },
251                 /* MemRegion: feb6c000-feb6cfff : ohci_hcd */
252                 {
253                         .phys_start = 0xfeb6c000,
254                         .virt_start = 0xfeb6c000,
255                         .size = 0x1000,
256                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
257                 },
258                 /* MemRegion: feb6d000-feb6d0ff : ehci_hcd */
259                 {
260                         .phys_start = 0xfeb6d000,
261                         .virt_start = 0xfeb6d000,
262                         .size = 0x1000,
263                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
264                 },
265                 /* MemRegion: feb6e000-feb6efff : ohci_hcd */
266                 {
267                         .phys_start = 0xfeb6e000,
268                         .virt_start = 0xfeb6e000,
269                         .size = 0x1000,
270                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
271                 },
272                 /* MemRegion: feb6f000-feb6f0ff : ehci_hcd */
273                 {
274                         .phys_start = 0xfeb6f000,
275                         .virt_start = 0xfeb6f000,
276                         .size = 0x1000,
277                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
278                 },
279                 /* MemRegion: feb70000-feb70fff : ohci_hcd */
280                 {
281                         .phys_start = 0xfeb70000,
282                         .virt_start = 0xfeb70000,
283                         .size = 0x1000,
284                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
285                 },
286                 /* MemRegion: feb71000-feb717ff : ahci */
287                 {
288                         .phys_start = 0xfeb71000,
289                         .virt_start = 0xfeb71000,
290                         .size = 0x1000,
291                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
292                 },
293                 /* MemRegion: feb80000-febfffff : pnp 00:02 */
294                 {
295                         .phys_start = 0xfeb80000,
296                         .virt_start = 0xfeb80000,
297                         .size = 0x80000,
298                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
299                 },
300                 /* MemRegion: fed00000-fed003ff : HPET 0 */
301                 {
302                         .phys_start = 0xfed00000,
303                         .virt_start = 0xfed00000,
304                         .size = 0x1000,
305                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
306                 },
307                 /* MemRegion: fed61000-fed70fff : pnp 00:09 */
308                 {
309                         .phys_start = 0xfed61000,
310                         .virt_start = 0xfed61000,
311                         .size = 0x10000,
312                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
313                 },
314                 /* MemRegion: 3f000000-3f1fffff : JAILHOUSE Inmate Memory */
315                 {
316                         .phys_start = 0x3f000000,
317                         .virt_start = 0x3f000000,
318                         .size = 0x200000,
319                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
320                 },
321         },
322
323         .irqchips = {
324                 /* IOAPIC 0, GSI base 0 */
325                 {
326                         .address = 0xfec00000,
327                         .id = 0x0,
328                         .pin_bitmap = 0xffffff,
329                 },
330                 /* IOAPIC 1, GSI base 24 */
331                 {
332                         .address = 0xfec01000,
333                         .id = 0x0,
334                         .pin_bitmap = 0xffffff,
335                 },
336         },
337
338         .pio_bitmap = {
339                 [     0/8 ...   0x1f/8] = -1,
340                 [  0x20/8 ...   0x27/8] = 0xfc, /* HACK: PIC */
341                 [  0x28/8 ...   0x3f/8] = -1,
342                 [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
343                 [  0x48/8 ...   0x5f/8] = -1,
344                 [  0x60/8 ...   0x67/8] = 0xec, /* HACK: NMI status/control */
345                 [  0x68/8 ...   0x6f/8] = -1,
346                 [  0x70/8 ...   0x77/8] = 0xfc, /* RTC */
347                 [  0x78/8 ...   0x7f/8] = -1,
348                 [  0x80/8 ...   0x87/8] = 0xfe, /* Port 80 (delays) */
349                 [  0x88/8 ...  0x3af/8] = -1,
350                 [ 0x3b0/8 ...  0x3df/8] = 0x00, /* VGA */
351                 [ 0x3e0/8 ...  0xcf7/8] = 0, /* HACK: PCI bus */
352                 [ 0xcf8/8 ...  0xcff/8] = -1,
353                 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: PCI bus */
354         },
355
356         .pci_devices = {
357                 /* PCIDevice: 00:00.0 */
358                 {
359                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
360                         .domain = 0x0,
361                         .bdf = 0x0,
362                         .caps_start = 0,
363                         .num_caps = 0,
364                         .num_msi_vectors = 0,
365                         .msi_64bits = 0,
366                         .num_msix_vectors = 0,
367                         .msix_region_size = 0x0,
368                         .msix_address = 0x0,
369                 },
370                 /* PCIDevice: 00:01.0 */
371                 {
372                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
373                         .iommu = 0,
374                         .domain = 0x0,
375                         .bdf = 0x8,
376                         .caps_start = 3,
377                         .num_caps = 4,
378                         .num_msi_vectors = 1,
379                         .msi_64bits = 1,
380                         .num_msix_vectors = 0,
381                         .msix_region_size = 0x0,
382                         .msix_address = 0x0,
383                 },
384                 /* PCIDevice: 00:01.1 */
385                 {
386                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
387                         .iommu = 0,
388                         .domain = 0x0,
389                         .bdf = 0x9,
390                         .caps_start = 3,
391                         .num_caps = 4,
392                         .num_msi_vectors = 1,
393                         .msi_64bits = 1,
394                         .num_msix_vectors = 0,
395                         .msix_region_size = 0x0,
396                         .msix_address = 0x0,
397                 },
398                 /* PCIDevice: 00:02.0 */
399                 {
400                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
401                         .iommu = 0,
402                         .domain = 0x0,
403                         .bdf = 0x10,
404                         .caps_start = 0,
405                         .num_caps = 0,
406                         .num_msi_vectors = 0,
407                         .msi_64bits = 0,
408                         .num_msix_vectors = 0,
409                         .msix_region_size = 0x0,
410                         .msix_address = 0x0,
411                 },
412                 /* PCIDevice: 00:03.0 */
413                 {
414                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
415                         .iommu = 0,
416                         .domain = 0x0,
417                         .bdf = 0x18,
418                         .caps_start = 0,
419                         .num_caps = 0,
420                         .num_msi_vectors = 0,
421                         .msi_64bits = 0,
422                         .num_msix_vectors = 0,
423                         .msix_region_size = 0x0,
424                         .msix_address = 0x0,
425                 },
426                 /* PCIDevice: 00:03.1 */
427                 {
428                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
429                         .iommu = 0,
430                         .domain = 0x0,
431                         .bdf = 0x19,
432                         .caps_start = 7,
433                         .num_caps = 5,
434                         .num_msi_vectors = 1,
435                         .msi_64bits = 1,
436                         .num_msix_vectors = 0,
437                         .msix_region_size = 0x0,
438                         .msix_address = 0x0,
439                 },
440                 /* PCIDevice: 00:04.0 */
441                 {
442                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
443                         .iommu = 0,
444                         .domain = 0x0,
445                         .bdf = 0x20,
446                         .caps_start = 0,
447                         .num_caps = 0,
448                         .num_msi_vectors = 0,
449                         .msi_64bits = 0,
450                         .num_msix_vectors = 0,
451                         .msix_region_size = 0x0,
452                         .msix_address = 0x0,
453                 },
454                 /* PCIDevice: 00:10.0 */
455                 {
456                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
457                         .iommu = 0,
458                         .domain = 0x0,
459                         .bdf = 0x80,
460                         .caps_start = 12,
461                         .num_caps = 4,
462                         .num_msi_vectors = 8,
463                         .msi_64bits = 1,
464                         .num_msix_vectors = 8,
465                         .msix_region_size = 0x1000,
466                         .msix_address = 0xfeb6b000,
467                 },
468                 /* PCIDevice: 00:10.1 */
469                 {
470                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
471                         .iommu = 0,
472                         .domain = 0x0,
473                         .bdf = 0x81,
474                         .caps_start = 12,
475                         .num_caps = 4,
476                         .num_msi_vectors = 8,
477                         .msi_64bits = 1,
478                         .num_msix_vectors = 8,
479                         .msix_region_size = 0x1000,
480                         .msix_address = 0xfeb69000,
481                 },
482                 /* PCIDevice: 00:11.0 */
483                 {
484                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
485                         .iommu = 0,
486                         .domain = 0x0,
487                         .bdf = 0x88,
488                         .caps_start = 16,
489                         .num_caps = 2,
490                         .num_msi_vectors = 8,
491                         .msi_64bits = 1,
492                         .num_msix_vectors = 0,
493                         .msix_region_size = 0x0,
494                         .msix_address = 0x0,
495                 },
496                 /* PCIDevice: 00:12.0 */
497                 {
498                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
499                         .iommu = 0,
500                         .domain = 0x0,
501                         .bdf = 0x90,
502                         .caps_start = 0,
503                         .num_caps = 0,
504                         .num_msi_vectors = 0,
505                         .msi_64bits = 0,
506                         .num_msix_vectors = 0,
507                         .msix_region_size = 0x0,
508                         .msix_address = 0x0,
509                 },
510                 /* PCIDevice: 00:12.2 */
511                 {
512                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
513                         .iommu = 0,
514                         .domain = 0x0,
515                         .bdf = 0x92,
516                         .caps_start = 18,
517                         .num_caps = 2,
518                         .num_msi_vectors = 0,
519                         .msi_64bits = 0,
520                         .num_msix_vectors = 0,
521                         .msix_region_size = 0x0,
522                         .msix_address = 0x0,
523                 },
524                 /* PCIDevice: 00:13.0 */
525                 {
526                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
527                         .iommu = 0,
528                         .domain = 0x0,
529                         .bdf = 0x98,
530                         .caps_start = 0,
531                         .num_caps = 0,
532                         .num_msi_vectors = 0,
533                         .msi_64bits = 0,
534                         .num_msix_vectors = 0,
535                         .msix_region_size = 0x0,
536                         .msix_address = 0x0,
537                 },
538                 /* PCIDevice: 00:13.2 */
539                 {
540                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
541                         .iommu = 0,
542                         .domain = 0x0,
543                         .bdf = 0x9a,
544                         .caps_start = 18,
545                         .num_caps = 2,
546                         .num_msi_vectors = 0,
547                         .msi_64bits = 0,
548                         .num_msix_vectors = 0,
549                         .msix_region_size = 0x0,
550                         .msix_address = 0x0,
551                 },
552                 /* PCIDevice: 00:14.0 */
553                 {
554                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
555                         .iommu = 0,
556                         .domain = 0x0,
557                         .bdf = 0xa0,
558                         .caps_start = 0,
559                         .num_caps = 0,
560                         .num_msi_vectors = 0,
561                         .msi_64bits = 0,
562                         .num_msix_vectors = 0,
563                         .msix_region_size = 0x0,
564                         .msix_address = 0x0,
565                 },
566                 /* PCIDevice: 00:14.2 */
567                 {
568                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
569                         .iommu = 0,
570                         .domain = 0x0,
571                         .bdf = 0xa2,
572                         .caps_start = 20,
573                         .num_caps = 1,
574                         .num_msi_vectors = 0,
575                         .msi_64bits = 0,
576                         .num_msix_vectors = 0,
577                         .msix_region_size = 0x0,
578                         .msix_address = 0x0,
579                 },
580                 /* PCIDevice: 00:14.3 */
581                 {
582                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
583                         .iommu = 0,
584                         .domain = 0x0,
585                         .bdf = 0xa3,
586                         .caps_start = 0,
587                         .num_caps = 0,
588                         .num_msi_vectors = 0,
589                         .msi_64bits = 0,
590                         .num_msix_vectors = 0,
591                         .msix_region_size = 0x0,
592                         .msix_address = 0x0,
593                 },
594                 /* PCIDevice: 00:14.4 */
595                 {
596                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
597                         .iommu = 0,
598                         .domain = 0x0,
599                         .bdf = 0xa4,
600                         .caps_start = 0,
601                         .num_caps = 0,
602                         .num_msi_vectors = 0,
603                         .msi_64bits = 0,
604                         .num_msix_vectors = 0,
605                         .msix_region_size = 0x0,
606                         .msix_address = 0x0,
607                 },
608                 /* PCIDevice: 00:14.5 */
609                 {
610                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
611                         .iommu = 0,
612                         .domain = 0x0,
613                         .bdf = 0xa5,
614                         .caps_start = 0,
615                         .num_caps = 0,
616                         .num_msi_vectors = 0,
617                         .msi_64bits = 0,
618                         .num_msix_vectors = 0,
619                         .msix_region_size = 0x0,
620                         .msix_address = 0x0,
621                 },
622                 /* PCIDevice: 00:18.0 */
623                 {
624                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
625                         .iommu = 0,
626                         .domain = 0x0,
627                         .bdf = 0xc0,
628                         .caps_start = 0,
629                         .num_caps = 0,
630                         .num_msi_vectors = 0,
631                         .msi_64bits = 0,
632                         .num_msix_vectors = 0,
633                         .msix_region_size = 0x0,
634                         .msix_address = 0x0,
635                 },
636                 /* PCIDevice: 00:18.1 */
637                 {
638                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
639                         .iommu = 0,
640                         .domain = 0x0,
641                         .bdf = 0xc1,
642                         .caps_start = 0,
643                         .num_caps = 0,
644                         .num_msi_vectors = 0,
645                         .msi_64bits = 0,
646                         .num_msix_vectors = 0,
647                         .msix_region_size = 0x0,
648                         .msix_address = 0x0,
649                 },
650                 /* PCIDevice: 00:18.2 */
651                 {
652                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
653                         .iommu = 0,
654                         .domain = 0x0,
655                         .bdf = 0xc2,
656                         .caps_start = 0,
657                         .num_caps = 0,
658                         .num_msi_vectors = 0,
659                         .msi_64bits = 0,
660                         .num_msix_vectors = 0,
661                         .msix_region_size = 0x0,
662                         .msix_address = 0x0,
663                 },
664                 /* PCIDevice: 00:18.3 */
665                 {
666                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
667                         .iommu = 0,
668                         .domain = 0x0,
669                         .bdf = 0xc3,
670                         .caps_start = 21,
671                         .num_caps = 1,
672                         .num_msi_vectors = 0,
673                         .msi_64bits = 0,
674                         .num_msix_vectors = 0,
675                         .msix_region_size = 0x0,
676                         .msix_address = 0x0,
677                 },
678                 /* PCIDevice: 00:18.4 */
679                 {
680                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
681                         .iommu = 0,
682                         .domain = 0x0,
683                         .bdf = 0xc4,
684                         .caps_start = 0,
685                         .num_caps = 0,
686                         .num_msi_vectors = 0,
687                         .msi_64bits = 0,
688                         .num_msix_vectors = 0,
689                         .msix_region_size = 0x0,
690                         .msix_address = 0x0,
691                 },
692                 /* PCIDevice: 00:18.5 */
693                 {
694                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
695                         .iommu = 0,
696                         .domain = 0x0,
697                         .bdf = 0xc5,
698                         .caps_start = 0,
699                         .num_caps = 0,
700                         .num_msi_vectors = 0,
701                         .msi_64bits = 0,
702                         .num_msix_vectors = 0,
703                         .msix_region_size = 0x0,
704                         .msix_address = 0x0,
705                 },
706                 /* PCIDevice: 01:00.0 */
707                 {
708                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
709                         .iommu = 0,
710                         .domain = 0x0,
711                         .bdf = 0x100,
712                         .caps_start = 22,
713                         .num_caps = 5,
714                         .num_msi_vectors = 1,
715                         .msi_64bits = 1,
716                         .num_msix_vectors = 4,
717                         .msix_region_size = 0x1000,
718                         .msix_address = 0xd0800000,
719                 },
720         },
721
722         .pci_caps = {
723                 /* PCIDevice: 00:00.2 */
724                 {
725                         .id = 0xf,
726                         .start = 0x40,
727                         .len = 2,
728                         .flags = 0,
729                 },
730                 {
731                         .id = 0x5,
732                         .start = 0x54,
733                         .len = 14,
734                         .flags = JAILHOUSE_PCICAPS_WRITE,
735                 },
736                 {
737                         .id = 0x8,
738                         .start = 0x64,
739                         .len = 2,
740                         .flags = 0,
741                 },
742                 /* PCIDevice: 00:01.0 */
743                 /* PCIDevice: 00:01.1 */
744                 {
745                         .id = 0x9,
746                         .start = 0x48,
747                         .len = 2,
748                         .flags = 0,
749                 },
750                 {
751                         .id = 0x1,
752                         .start = 0x50,
753                         .len = 8,
754                         .flags = JAILHOUSE_PCICAPS_WRITE,
755                 },
756                 {
757                         .id = 0x10,
758                         .start = 0x58,
759                         .len = 2,
760                         .flags = 0,
761                 },
762                 {
763                         .id = 0x5,
764                         .start = 0xa0,
765                         .len = 14,
766                         .flags = JAILHOUSE_PCICAPS_WRITE,
767                 },
768                 /* PCIDevice: 00:03.1 */
769                 {
770                         .id = 0x1,
771                         .start = 0x50,
772                         .len = 8,
773                         .flags = JAILHOUSE_PCICAPS_WRITE,
774                 },
775                 {
776                         .id = 0x10,
777                         .start = 0x58,
778                         .len = 2,
779                         .flags = 0,
780                 },
781                 {
782                         .id = 0x5,
783                         .start = 0xa0,
784                         .len = 14,
785                         .flags = JAILHOUSE_PCICAPS_WRITE,
786                 },
787                 {
788                         .id = 0xd,
789                         .start = 0xb0,
790                         .len = 2,
791                         .flags = 0,
792                 },
793                 {
794                         .id = 0x8,
795                         .start = 0xb8,
796                         .len = 2,
797                         .flags = 0,
798                 },
799                 /* PCIDevice: 00:10.0 */
800                 /* PCIDevice: 00:10.1 */
801                 {
802                         .id = 0x1,
803                         .start = 0x50,
804                         .len = 8,
805                         .flags = JAILHOUSE_PCICAPS_WRITE,
806                 },
807                 {
808                         .id = 0x5,
809                         .start = 0x70,
810                         .len = 14,
811                         .flags = JAILHOUSE_PCICAPS_WRITE,
812                 },
813                 {
814                         .id = 0x11,
815                         .start = 0x90,
816                         .len = 12,
817                         .flags = JAILHOUSE_PCICAPS_WRITE,
818                 },
819                 {
820                         .id = 0x10,
821                         .start = 0xa0,
822                         .len = 2,
823                         .flags = 0,
824                 },
825                 /* PCIDevice: 00:11.0 */
826                 {
827                         .id = 0x5,
828                         .start = 0x50,
829                         .len = 14,
830                         .flags = JAILHOUSE_PCICAPS_WRITE,
831                 },
832                 {
833                         .id = 0x12,
834                         .start = 0x70,
835                         .len = 2,
836                         .flags = 0,
837                 },
838                 /* PCIDevice: 00:12.2 */
839                 /* PCIDevice: 00:13.2 */
840                 {
841                         .id = 0x1,
842                         .start = 0xc0,
843                         .len = 8,
844                         .flags = JAILHOUSE_PCICAPS_WRITE,
845                 },
846                 {
847                         .id = 0xa,
848                         .start = 0xe4,
849                         .len = 2,
850                         .flags = 0,
851                 },
852                 /* PCIDevice: 00:14.2 */
853                 {
854                         .id = 0x1,
855                         .start = 0x50,
856                         .len = 8,
857                         .flags = JAILHOUSE_PCICAPS_WRITE,
858                 },
859                 /* PCIDevice: 00:18.3 */
860                 {
861                         .id = 0xf,
862                         .start = 0xf0,
863                         .len = 2,
864                         .flags = 0,
865                 },
866                 /* PCIDevice: 01:00.0 */
867                 {
868                         .id = 0x1,
869                         .start = 0x40,
870                         .len = 8,
871                         .flags = JAILHOUSE_PCICAPS_WRITE,
872                 },
873                 {
874                         .id = 0x5,
875                         .start = 0x50,
876                         .len = 14,
877                         .flags = JAILHOUSE_PCICAPS_WRITE,
878                 },
879                 {
880                         .id = 0x10,
881                         .start = 0x70,
882                         .len = 2,
883                         .flags = 0,
884                 },
885                 {
886                         .id = 0x11,
887                         .start = 0xb0,
888                         .len = 12,
889                         .flags = JAILHOUSE_PCICAPS_WRITE,
890                 },
891                 {
892                         .id = 0x3,
893                         .start = 0xd0,
894                         .len = 2,
895                         .flags = 0,
896                 },
897         },
898 };