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