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