]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/novabox.c
Merge branch 'master' of rtime.felk.cvut.cz:jailhouse
[jailhouse.git] / configs / novabox.c
1 /*
2  * Jailhouse, a Linux-based partitioning hypervisor
3  *
4  * Copyright (c) Siemens AG, 2014, 2015
5  *
6  * This work is licensed under the terms of the GNU GPL, version 2.  See
7  * the COPYING file in the top-level directory.
8  *
9  * Alternatively, you can use or redistribute this file under the following
10  * BSD license:
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  *
16  * 1. Redistributions of source code must retain the above copyright
17  *    notice, this list of conditions and the following disclaimer.
18  *
19  * 2. Redistributions in binary form must reproduce the above copyright
20  *    notice, this list of conditions and the following disclaimer in the
21  *    documentation and/or other materials provided with the distribution.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
33  * THE POSSIBILITY OF SUCH DAMAGE.
34  *
35  * Configuration for Dell Inc. OptiPlex 7010
36  * created with '/usr/local/libexec/jailhouse/jailhouse config create -r . novabox.c'
37  *
38  * NOTE: This config expects the following to be appended to your kernel cmdline
39  *       "memmap=0x7c00000$0x37600000"
40  */
41
42 #include <linux/types.h>
43 #include <jailhouse/cell-config.h>
44
45 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
46
47 struct {
48         struct jailhouse_system header;
49         __u64 cpus[1];
50         struct jailhouse_memory mem_regions[45];
51         struct jailhouse_irqchip irqchips[1];
52         __u8 pio_bitmap[0x2000];
53         struct jailhouse_pci_device pci_devices[16];
54         struct jailhouse_pci_capability pci_caps[29];
55 } __attribute__((packed)) config = {
56         .header = {
57                 .signature = JAILHOUSE_SYSTEM_SIGNATURE,
58                 .hypervisor_memory = {
59                         .phys_start = 0x37600000,
60                         .size = 0x4000000,
61                 },
62                 .platform_info.x86 = {
63                         .mmconfig_base = 0xf8000000,
64                         .mmconfig_end_bus = 0x3f,
65                         .pm_timer_address = 0x408,
66 <<<<<<< HEAD
67                          .iommu_base = {
68                                 0xfed90000,
69                                 0xfed91000,
70                          },
71 =======
72                         .iommu_base = {
73                                 0xfed90000,
74                                 0xfed91000,
75                         },
76 >>>>>>> 11dff97feece0823144bbe800b9e56c6995cd2fb
77                 },
78                 .device_limit = 128,
79                 .interrupt_limit = 256,
80                 .root_cell = {
81                         .name = "RootCell",
82                         .cpu_set_size = sizeof(config.cpus),
83                         .num_memory_regions = ARRAY_SIZE(config.mem_regions),
84                         .num_irqchips = ARRAY_SIZE(config.irqchips),
85                         .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
86                         .num_pci_devices = ARRAY_SIZE(config.pci_devices),
87                         .num_pci_caps = ARRAY_SIZE(config.pci_caps),
88                 },
89         },
90
91         .cpus = {
92                 0x000000000000000f,
93         },
94
95         .mem_regions = {
96                 /* MemRegion: 00000000-0009d7ff : System RAM */
97                 {
98                         .phys_start = 0x0,
99                         .virt_start = 0x0,
100                         .size = 0x9e000,
101                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
102                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
103                 },
104                 /* MemRegion: 000a0000-000bffff : PCI Bus 0000:00 */
105                 {
106                         .phys_start = 0xa0000,
107                         .virt_start = 0xa0000,
108                         .size = 0x20000,
109                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
110                 },
111                 /* MemRegion: 00100000-00ffffff : System RAM */
112                 {
113                         .phys_start = 0x100000,
114                         .virt_start = 0x100000,
115                         .size = 0xf00000,
116                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
117                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
118                 },
119                 /* MemRegion: 01000000-02ffffff : Kernel */
120                 {
121                         .phys_start = 0x1000000,
122                         .virt_start = 0x1000000,
123                         .size = 0x2000000,
124                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
125                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
126                 },
127                 /* MemRegion: 03000000-1fffffff : System RAM */
128                 {
129                         .phys_start = 0x3000000,
130                         .virt_start = 0x3000000,
131                         .size = 0x1d000000,
132                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
133                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
134                 },
135                 /* MemRegion: 20200000-375fffff : System RAM */
136                 {
137                         .phys_start = 0x20200000,
138                         .virt_start = 0x20200000,
139                         .size = 0x17400000,
140                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
141                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
142                 },
143                 /* MemRegion: 3f200000-40003fff : System RAM */
144                 {
145                         .phys_start = 0x3f200000,
146                         .virt_start = 0x3f200000,
147                         .size = 0xe04000,
148                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
149                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
150                 },
151                 /* MemRegion: 40005000-d9b4dfff : System RAM */
152                 {
153                         .phys_start = 0x40005000,
154                         .virt_start = 0x40005000,
155                         .size = 0x99b49000,
156                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
157                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
158                 },
159                 /* MemRegion: da174000-da3dbfff : ACPI Non-volatile Storage */
160                 {
161                         .phys_start = 0xda174000,
162                         .virt_start = 0xda174000,
163                         .size = 0x268000,
164                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
165                 },
166                 /* MemRegion: da3dc000-da3e6fff : ACPI Tables */
167                 {
168                         .phys_start = 0xda3dc000,
169                         .virt_start = 0xda3dc000,
170                         .size = 0xb000,
171                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
172                 },
173                 /* MemRegion: da3e7000-da3f3fff : ACPI Non-volatile Storage */
174                 {
175                         .phys_start = 0xda3e7000,
176                         .virt_start = 0xda3e7000,
177                         .size = 0xd000,
178                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
179                 },
180                 /* MemRegion: da3f4000-da3f8fff : ACPI Tables */
181                 {
182                         .phys_start = 0xda3f4000,
183                         .virt_start = 0xda3f4000,
184                         .size = 0x5000,
185                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
186                 },
187                 /* MemRegion: da3f9000-da43bfff : ACPI Non-volatile Storage */
188                 {
189                         .phys_start = 0xda3f9000,
190                         .virt_start = 0xda3f9000,
191                         .size = 0x43000,
192                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
193                 },
194                 /* MemRegion: da43c000-daffffff : System RAM */
195                 {
196                         .phys_start = 0xda43c000,
197                         .virt_start = 0xda43c000,
198                         .size = 0xbc4000,
199                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
200                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
201                 },
202                 /* MemRegion: db000000-db7fffff : RAM buffer */
203                 {
204                         .phys_start = 0xdb000000,
205                         .virt_start = 0xdb000000,
206                         .size = 0x800000,
207                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
208                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
209                 },
210                 /* MemRegion: dfa00000-dfa00fff : pnp 00:08 */
211                 {
212                         .phys_start = 0xdfa00000,
213                         .virt_start = 0xdfa00000,
214                         .size = 0x1000,
215                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
216                 },
217                 /* MemRegion: e0000000-efffffff : 0000:00:02.0 */
218                 {
219                         .phys_start = 0xe0000000,
220                         .virt_start = 0xe0000000,
221                         .size = 0x10000000,
222                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
223                 },
224                 /* MemRegion: f7800000-f7bfffff : 0000:00:02.0 */
225                 {
226                         .phys_start = 0xf7800000,
227                         .virt_start = 0xf7800000,
228                         .size = 0x400000,
229                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
230                 },
231                 /* MemRegion: f7c00000-f7c00fff : 0000:02:00.1 */
232                 {
233                         .phys_start = 0xf7c00000,
234                         .virt_start = 0xf7c00000,
235                         .size = 0x1000,
236                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
237                 },
238                 /* MemRegion: f7c01000-f7c01fff : 0000:02:00.1 */
239                 {
240                         .phys_start = 0xf7c01000,
241                         .virt_start = 0xf7c01000,
242                         .size = 0x1000,
243                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
244                 },
245                 /* MemRegion: f7c02000-f7c02fff : 0000:02:00.0 */
246                 {
247                         .phys_start = 0xf7c02000,
248                         .virt_start = 0xf7c02000,
249                         .size = 0x1000,
250                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
251                 },
252                 /* MemRegion: f7c03000-f7c03fff : 0000:02:00.0 */
253                 {
254                         .phys_start = 0xf7c03000,
255                         .virt_start = 0xf7c03000,
256                         .size = 0x1000,
257                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
258                 },
259                 /* MemRegion: f7d00000-f7d1ffff : 0000:00:19.0 */
260                 {
261                         .phys_start = 0xf7d00000,
262                         .virt_start = 0xf7d00000,
263                         .size = 0x20000,
264                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
265                 },
266                 /* MemRegion: f7d20000-f7d2ffff : 0000:00:14.0 */
267                 {
268                         .phys_start = 0xf7d20000,
269                         .virt_start = 0xf7d20000,
270                         .size = 0x10000,
271                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
272                 },
273                 /* MemRegion: f7d30000-f7d33fff : 0000:00:1b.0 */
274                 {
275                         .phys_start = 0xf7d30000,
276                         .virt_start = 0xf7d30000,
277                         .size = 0x4000,
278                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
279                 },
280                 /* MemRegion: f7d35000-f7d350ff : 0000:00:1f.3 */
281                 {
282                         .phys_start = 0xf7d35000,
283                         .virt_start = 0xf7d35000,
284                         .size = 0x1000,
285                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
286                 },
287                 /* MemRegion: f7d36000-f7d367ff : ahci */
288                 {
289                         .phys_start = 0xf7d36000,
290                         .virt_start = 0xf7d36000,
291                         .size = 0x1000,
292                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
293                 },
294                 /* MemRegion: f7d37000-f7d373ff : ehci_hcd */
295                 {
296                         .phys_start = 0xf7d37000,
297                         .virt_start = 0xf7d37000,
298                         .size = 0x1000,
299                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
300                 },
301                 /* MemRegion: f7d38000-f7d383ff : ehci_hcd */
302                 {
303                         .phys_start = 0xf7d38000,
304                         .virt_start = 0xf7d38000,
305                         .size = 0x1000,
306                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
307                 },
308                 /* MemRegion: f7d39000-f7d39fff : 0000:00:19.0 */
309                 {
310                         .phys_start = 0xf7d39000,
311                         .virt_start = 0xf7d39000,
312                         .size = 0x1000,
313                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
314                 },
315                 /* MemRegion: f7d3c000-f7d3c00f : 0000:00:16.0 */
316                 {
317                         .phys_start = 0xf7d3c000,
318                         .virt_start = 0xf7d3c000,
319                         .size = 0x1000,
320                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
321                 },
322                 /* MemRegion: fed00000-fed003ff : HPET 0 */
323                 {
324                         .phys_start = 0xfed00000,
325                         .virt_start = 0xfed00000,
326                         .size = 0x1000,
327                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
328                 },
329                 /* MemRegion: fed10000-fed17fff : pnp 00:08 */
330                 {
331                         .phys_start = 0xfed10000,
332                         .virt_start = 0xfed10000,
333                         .size = 0x8000,
334                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
335                 },
336                 /* MemRegion: fed18000-fed18fff : pnp 00:08 */
337                 {
338                         .phys_start = 0xfed18000,
339                         .virt_start = 0xfed18000,
340                         .size = 0x1000,
341                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
342                 },
343                 /* MemRegion: fed19000-fed19fff : pnp 00:08 */
344                 {
345                         .phys_start = 0xfed19000,
346                         .virt_start = 0xfed19000,
347                         .size = 0x1000,
348                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
349                 },
350                 /* MemRegion: fed20000-fed3ffff : pnp 00:08 */
351                 {
352                         .phys_start = 0xfed20000,
353                         .virt_start = 0xfed20000,
354                         .size = 0x20000,
355                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
356                 },
357                 /* MemRegion: fed40000-fed44fff : pnp 00:00 */
358                 {
359                         .phys_start = 0xfed40000,
360                         .virt_start = 0xfed40000,
361                         .size = 0x5000,
362                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
363                 },
364                 /* MemRegion: fed45000-fed8ffff : pnp 00:08 */
365                 {
366                         .phys_start = 0xfed45000,
367                         .virt_start = 0xfed45000,
368                         .size = 0x4b000,
369                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
370                 },
371                 /* MemRegion: fed90000-fed93fff : pnp 00:08 */
372                 {
373                         .phys_start = 0xfed90000,
374                         .virt_start = 0xfed90000,
375                         .size = 0x4000,
376                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
377                 },
378                 /* MemRegion: 100000000-11e5fffff : System RAM */
379                 {
380                         .phys_start = 0x100000000,
381                         .virt_start = 0x100000000,
382                         .size = 0x1e600000,
383                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
384                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
385                 },
386                 /* MemRegion: 11e600000-11fffffff : RAM buffer */
387                 {
388                         .phys_start = 0x11e600000,
389                         .virt_start = 0x11e600000,
390                         .size = 0x1a00000,
391                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
392                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
393                 },
394                 /* MemRegion: 000c0000-000dffff : ROMs */
395                 {
396                         .phys_start = 0xc0000,
397                         .virt_start = 0xc0000,
398                         .size = 0x20000,
399                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
400                 },
401                 /* MemRegion: da0ed000-da112fff : ACPI DMAR RMRR */
402                 /* PCI device: 00:1d.0 */
403                 /* PCI device: 00:1a.0 */
404                 /* PCI device: 00:14.0 */
405                 {
406                         .phys_start = 0xda0ed000,
407                         .virt_start = 0xda0ed000,
408                         .size = 0x26000,
409                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
410                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
411                 },
412                 /* MemRegion: db800000-df9fffff : ACPI DMAR RMRR */
413                 /* PCI device: 00:02.0 */
414                 {
415                         .phys_start = 0xdb800000,
416                         .virt_start = 0xdb800000,
417                         .size = 0x4200000,
418                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
419                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
420                 },
421                 /* MemRegion: 3f000000-3f1fffff : JAILHOUSE Inmate Memory */
422                 {
423                         .phys_start = 0x3b600000,
424                         .virt_start = 0x3b600000,
425                         .size = 0x3C00000,
426                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
427                                          JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
428                 },
429         },
430
431         .irqchips = {
432                 /* IOAPIC 2, GSI base 0 */
433                 {
434                         .address = 0xfec00000,
435                         .id = 0x1f0f8,
436                         .pin_bitmap = 0xffffff,
437                 },
438         },
439
440         .pio_bitmap = {
441                 [     0/8 ...   0x3f/8] = -1,
442                 [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
443                 [  0x48/8 ...   0x5f/8] = -1,
444                 [  0x60/8 ...   0x67/8] = 0xec, /* HACK: NMI status/control */
445                 [  0x68/8 ...   0x6f/8] = -1,
446                 [  0x70/8 ...   0x77/8] = 0xfc, /* RTC */
447                 [  0x78/8 ...   0x7f/7] = -1,
448                 [  0x80/8 ...   0x87/8] = 0xfe, /* Linux: native_io_delay() */
449                 [  0x88/8 ...   0xec/8] = -1,
450                 [  0xed/8 ...   0xf5/8] = 0xfe, /*port 0xed delay experimental*/                
451                 [  0xf6/8 ...  0x2f7/8] = -1,
452                 [ 0x2f8/8 ...  0x2ff/8] = 0,/*serial 1*/
453                 [ 0x300/8 ...  0x3af/8] = -1,
454                 [ 0x3b0/8 ...  0x3df/8] = 0x00, /* VGA */               
455                 [ 0x3e0/8 ...  0x3f7/8] = -1,
456                 [ 0x3f8/8 ...  0x3ff/8] = -1,/*serial 0*/
457                 [ 0x400/8 ...  0xeff/8] = -1,           
458                 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: PCI bus */
459         },
460
461         .pci_devices = {
462                 /* PCIDevice: 00:00.0 */
463                 {
464                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
465                         .iommu = 1,
466                         .domain = 0x0,
467                         .bdf = 0x0,
468                         .bar_mask = {
469                                 0x00000000, 0x00000000, 0x00000000,
470                                 0x00000000, 0x00000000, 0x00000000,
471                         },
472                         .caps_start = 0,
473                         .num_caps = 1,
474                         .num_msi_vectors = 0,
475                         .msi_64bits = 0,
476                         .num_msix_vectors = 0,
477                         .msix_region_size = 0x0,
478                         .msix_address = 0x0,
479                 },
480                 /* PCIDevice: 00:02.0 */
481                 {
482                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
483                         .iommu = 0,
484                         .domain = 0x0,
485                         .bdf = 0x10,
486                         .bar_mask = {
487                                 0xffc00000, 0xffffffff, 0x00000000,
488                                 0xf0000000, 0xffffffff, 0x00000000,
489                         },
490                         .caps_start = 1,
491                         .num_caps = 3,
492                         .num_msi_vectors = 1,
493                         .msi_64bits = 0,
494                         .num_msix_vectors = 0,
495                         .msix_region_size = 0x0,
496                         .msix_address = 0x0,
497                 },
498                 /* PCIDevice: 00:14.0 */
499                 {
500                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
501                         .iommu = 1,
502                         .domain = 0x0,
503                         .bdf = 0xa0,
504                         .bar_mask = {
505                                 0xffff0000, 0xffffffff, 0x00000000,
506                                 0x00000000, 0x00000000, 0x00000000,
507                         },
508                         .caps_start = 4,
509                         .num_caps = 2,
510                         .num_msi_vectors = 8,
511                         .msi_64bits = 1,
512                         .num_msix_vectors = 0,
513                         .msix_region_size = 0x0,
514                         .msix_address = 0x0,
515                 },
516                 /* PCIDevice: 00:16.0 */
517                 {
518                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
519                         .iommu = 1,
520                         .domain = 0x0,
521                         .bdf = 0xb0,
522                         .bar_mask = {
523                                 0xfffffff0, 0xffffffff, 0x00000000,
524                                 0x00000000, 0x00000000, 0x00000000,
525                         },
526                         .caps_start = 6,
527                         .num_caps = 2,
528                         .num_msi_vectors = 1,
529                         .msi_64bits = 1,
530                         .num_msix_vectors = 0,
531                         .msix_region_size = 0x0,
532                         .msix_address = 0x0,
533                 },
534                 /* PCIDevice: 00:19.0 */
535                 {
536                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
537                         .iommu = 1,
538                         .domain = 0x0,
539                         .bdf = 0xc8,
540                         .bar_mask = {
541                                 0xfffe0000, 0xfffff000, 0xffffffe0,
542                                 0x00000000, 0x00000000, 0x00000000,
543                         },
544                         .caps_start = 8,
545                         .num_caps = 3,
546                         .num_msi_vectors = 1,
547                         .msi_64bits = 1,
548                         .num_msix_vectors = 0,
549                         .msix_region_size = 0x0,
550                         .msix_address = 0x0,
551                 },
552                 /* PCIDevice: 00:1a.0 */
553                 {
554                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
555                         .iommu = 1,
556                         .domain = 0x0,
557                         .bdf = 0xd0,
558                         .bar_mask = {
559                                 0xfffffc00, 0x00000000, 0x00000000,
560                                 0x00000000, 0x00000000, 0x00000000,
561                         },
562                         .caps_start = 11,
563                         .num_caps = 3,
564                         .num_msi_vectors = 0,
565                         .msi_64bits = 0,
566                         .num_msix_vectors = 0,
567                         .msix_region_size = 0x0,
568                         .msix_address = 0x0,
569                 },
570                 /* PCIDevice: 00:1b.0 */
571                 {
572                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
573                         .iommu = 1,
574                         .domain = 0x0,
575                         .bdf = 0xd8,
576                         .bar_mask = {
577                                 0xffffc000, 0xffffffff, 0x00000000,
578                                 0x00000000, 0x00000000, 0x00000000,
579                         },
580                         .caps_start = 14,
581                         .num_caps = 3,
582                         .num_msi_vectors = 1,
583                         .msi_64bits = 1,
584                         .num_msix_vectors = 0,
585                         .msix_region_size = 0x0,
586                         .msix_address = 0x0,
587                 },
588                 /* PCIDevice: 00:1c.0 */
589                 {
590                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
591                         .iommu = 1,
592                         .domain = 0x0,
593                         .bdf = 0xe0,
594                         .bar_mask = {
595                                 0x00000000, 0x00000000, 0x00000000,
596                                 0x00000000, 0x00000000, 0x00000000,
597                         },
598                         .caps_start = 17,
599                         .num_caps = 4,
600                         .num_msi_vectors = 1,
601                         .msi_64bits = 0,
602                         .num_msix_vectors = 0,
603                         .msix_region_size = 0x0,
604                         .msix_address = 0x0,
605                 },
606                 /* PCIDevice: 00:1c.2 */
607                 {
608                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
609                         .iommu = 1,
610                         .domain = 0x0,
611                         .bdf = 0xe2,
612                         .bar_mask = {
613                                 0x00000000, 0x00000000, 0x00000000,
614                                 0x00000000, 0x00000000, 0x00000000,
615                         },
616                         .caps_start = 17,
617                         .num_caps = 4,
618                         .num_msi_vectors = 1,
619                         .msi_64bits = 0,
620                         .num_msix_vectors = 0,
621                         .msix_region_size = 0x0,
622                         .msix_address = 0x0,
623                 },
624                 /* PCIDevice: 00:1d.0 */
625                 {
626                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
627                         .iommu = 1,
628                         .domain = 0x0,
629                         .bdf = 0xe8,
630                         .bar_mask = {
631                                 0xfffffc00, 0x00000000, 0x00000000,
632                                 0x00000000, 0x00000000, 0x00000000,
633                         },
634                         .caps_start = 11,
635                         .num_caps = 3,
636                         .num_msi_vectors = 0,
637                         .msi_64bits = 0,
638                         .num_msix_vectors = 0,
639                         .msix_region_size = 0x0,
640                         .msix_address = 0x0,
641                 },
642                 /* PCIDevice: 00:1e.0 */
643                 {
644                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
645                         .iommu = 1,
646                         .domain = 0x0,
647                         .bdf = 0xf0,
648                         .bar_mask = {
649                                 0x00000000, 0x00000000, 0x00000000,
650                                 0x00000000, 0x00000000, 0x00000000,
651                         },
652                         .caps_start = 21,
653                         .num_caps = 1,
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:1f.0 */
661                 {
662                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
663                         .iommu = 1,
664                         .domain = 0x0,
665                         .bdf = 0xf8,
666                         .bar_mask = {
667                                 0x00000000, 0x00000000, 0x00000000,
668                                 0x00000000, 0x00000000, 0x00000000,
669                         },
670                         .caps_start = 0,
671                         .num_caps = 1,
672                         .num_msi_vectors = 0,
673                         .msi_64bits = 0,
674                         .num_msix_vectors = 0,
675                         .msix_region_size = 0x0,
676                         .msix_address = 0x0,
677                 },
678                 /* PCIDevice: 00:1f.2 */
679                 {
680                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
681                         .iommu = 1,
682                         .domain = 0x0,
683                         .bdf = 0xfa,
684                         .bar_mask = {
685                                 0xfffffff8, 0xfffffffc, 0xfffffff8,
686                                 0xfffffffc, 0xffffffe0, 0xfffff800,
687                         },
688                         .caps_start = 22,
689                         .num_caps = 4,
690                         .num_msi_vectors = 1,
691                         .msi_64bits = 0,
692                         .num_msix_vectors = 0,
693                         .msix_region_size = 0x0,
694                         .msix_address = 0x0,
695                 },
696                 /* PCIDevice: 00:1f.3 */
697                 {
698                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
699                         .iommu = 1,
700                         .domain = 0x0,
701                         .bdf = 0xfb,
702                         .bar_mask = {
703                                 0xffffff00, 0xffffffff, 0x00000000,
704                                 0x00000000, 0x00000000, 0xffffffe0,
705                         },
706                         .caps_start = 0,
707                         .num_caps = 0,
708                         .num_msi_vectors = 0,
709                         .msi_64bits = 0,
710                         .num_msix_vectors = 0,
711                         .msix_region_size = 0x0,
712                         .msix_address = 0x0,
713                 },
714                 /* PCIDevice: 02:00.0 */
715                 {
716                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
717                         .iommu = 1,
718                         .domain = 0x0,
719                         .bdf = 0x200,
720                         .bar_mask = {
721                                 0xfffffff8, 0xfffff000, 0x00000000,
722                                 0x00000000, 0x00000000, 0xfffff000,
723                         },
724                         .caps_start = 26,
725                         .num_caps = 3,
726                         .num_msi_vectors = 8,
727                         .msi_64bits = 1,
728                         .num_msix_vectors = 0,
729                         .msix_region_size = 0x0,
730                         .msix_address = 0x0,
731                 },
732                 /* PCIDevice: 02:00.1 */
733                 {
734                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
735                         .iommu = 1,
736                         .domain = 0x0,
737                         .bdf = 0x201,
738                         .bar_mask = {
739                                 0xfffffff8, 0xfffff000, 0x00000000,
740                                 0x00000000, 0x00000000, 0xfffff000,
741                         },
742                         .caps_start = 26,
743                         .num_caps = 3,
744                         .num_msi_vectors = 8,
745                         .msi_64bits = 1,
746                         .num_msix_vectors = 0,
747                         .msix_region_size = 0x0,
748                         .msix_address = 0x0,
749                 },
750         },
751
752         .pci_caps = {
753                 /* PCIDevice: 00:00.0 */
754                 /* PCIDevice: 00:1f.0 */
755                 {
756                         .id = 0x9,
757                         .start = 0xe0,
758                         .len = 2,
759                         .flags = 0,
760                 },
761                 /* PCIDevice: 00:02.0 */
762                 {
763                         .id = 0x5,
764                         .start = 0x90,
765                         .len = 10,
766                         .flags = JAILHOUSE_PCICAPS_WRITE,
767                 },
768                 {
769                         .id = 0x1,
770                         .start = 0xd0,
771                         .len = 8,
772                         .flags = JAILHOUSE_PCICAPS_WRITE,
773                 },
774                 {
775                         .id = 0x13,
776                         .start = 0xa4,
777                         .len = 2,
778                         .flags = 0,
779                 },
780                 /* PCIDevice: 00:14.0 */
781                 {
782                         .id = 0x1,
783                         .start = 0x70,
784                         .len = 8,
785                         .flags = JAILHOUSE_PCICAPS_WRITE,
786                 },
787                 {
788                         .id = 0x5,
789                         .start = 0x80,
790                         .len = 14,
791                         .flags = JAILHOUSE_PCICAPS_WRITE,
792                 },
793                 /* PCIDevice: 00:16.0 */
794                 {
795                         .id = 0x1,
796                         .start = 0x50,
797                         .len = 8,
798                         .flags = JAILHOUSE_PCICAPS_WRITE,
799                 },
800                 {
801                         .id = 0x5,
802                         .start = 0x8c,
803                         .len = 14,
804                         .flags = JAILHOUSE_PCICAPS_WRITE,
805                 },
806                 /* PCIDevice: 00:19.0 */
807                 {
808                         .id = 0x1,
809                         .start = 0xc8,
810                         .len = 8,
811                         .flags = JAILHOUSE_PCICAPS_WRITE,
812                 },
813                 {
814                         .id = 0x5,
815                         .start = 0xd0,
816                         .len = 14,
817                         .flags = JAILHOUSE_PCICAPS_WRITE,
818                 },
819                 {
820                         .id = 0x13,
821                         .start = 0xe0,
822                         .len = 2,
823                         .flags = 0,
824                 },
825                 /* PCIDevice: 00:1a.0 */
826                 /* PCIDevice: 00:1d.0 */
827                 {
828                         .id = 0x1,
829                         .start = 0x50,
830                         .len = 8,
831                         .flags = JAILHOUSE_PCICAPS_WRITE,
832                 },
833                 {
834                         .id = 0xa,
835                         .start = 0x58,
836                         .len = 2,
837                         .flags = 0,
838                 },
839                 {
840                         .id = 0x13,
841                         .start = 0x98,
842                         .len = 2,
843                         .flags = 0,
844                 },
845                 /* PCIDevice: 00:1b.0 */
846                 {
847                         .id = 0x1,
848                         .start = 0x50,
849                         .len = 8,
850                         .flags = JAILHOUSE_PCICAPS_WRITE,
851                 },
852                 {
853                         .id = 0x5,
854                         .start = 0x60,
855                         .len = 14,
856                         .flags = JAILHOUSE_PCICAPS_WRITE,
857                 },
858                 {
859                         .id = 0x10,
860                         .start = 0x70,
861                         .len = 2,
862                         .flags = 0,
863                 },
864                 /* PCIDevice: 00:1c.0 */
865                 /* PCIDevice: 00:1c.2 */
866                 {
867                         .id = 0x10,
868                         .start = 0x40,
869                         .len = 2,
870                         .flags = 0,
871                 },
872                 {
873                         .id = 0x5,
874                         .start = 0x80,
875                         .len = 10,
876                         .flags = JAILHOUSE_PCICAPS_WRITE,
877                 },
878                 {
879                         .id = 0xd,
880                         .start = 0x90,
881                         .len = 2,
882                         .flags = 0,
883                 },
884                 {
885                         .id = 0x1,
886                         .start = 0xa0,
887                         .len = 8,
888                         .flags = JAILHOUSE_PCICAPS_WRITE,
889                 },
890                 /* PCIDevice: 00:1e.0 */
891                 {
892                         .id = 0xd,
893                         .start = 0x50,
894                         .len = 2,
895                         .flags = 0,
896                 },
897                 /* PCIDevice: 00:1f.2 */
898                 {
899                         .id = 0x5,
900                         .start = 0x80,
901                         .len = 10,
902                         .flags = JAILHOUSE_PCICAPS_WRITE,
903                 },
904                 {
905                         .id = 0x1,
906                         .start = 0x70,
907                         .len = 8,
908                         .flags = JAILHOUSE_PCICAPS_WRITE,
909                 },
910                 {
911                         .id = 0x12,
912                         .start = 0xa8,
913                         .len = 2,
914                         .flags = 0,
915                 },
916                 {
917                         .id = 0x13,
918                         .start = 0xb0,
919                         .len = 2,
920                         .flags = 0,
921                 },
922                 /* PCIDevice: 02:00.0 */
923                 /* PCIDevice: 02:00.1 */
924                 {
925                         .id = 0x5,
926                         .start = 0x50,
927                         .len = 14,
928                         .flags = JAILHOUSE_PCICAPS_WRITE,
929                 },
930                 {
931                         .id = 0x1,
932                         .start = 0x78,
933                         .len = 8,
934                         .flags = JAILHOUSE_PCICAPS_WRITE,
935                 },
936                 {
937                         .id = 0x10,
938                         .start = 0x80,
939                         .len = 2,
940                         .flags = 0,
941                 },
942         },
943 };
944