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