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