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