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