Hello everyone! I have been getting up to speed on the jailhouse project over the last few weeks and have a few questions that I was hoping you all could help with.
1) What are the rules for assigning virtual memory addresses to the inmates? All the demos show high ram starting at 0x00200000. When this memregion is too large it will overlap with the virtual addresses of any PCI device memregions assigned to the inmate. 2) Do the virtual addresses of PCI devices(memregions) need to match the physical address within nonroot cells? When I remove the overlap(seen in 3xmem) by separating the high ram memregion into parts that are assigned higher virtual addresses I receive this error and the inmate fails to boot: FATAL: Invalid PCI MMCONFIG write, device 0a:00.0, reg: 110, size: 4 RIP: 0xffffffff8206838f RSP: 0xffffc90000c4fc28 FLAGS: 10082 RAX: 0x0000000000002000 RBX: 0xffffc90010a00110 RCX: 0x0000000000000000 RDX: 0x00000000000000ff RSI: 0xffffc90010000000 RDI: 0x0000000000000000 CS: 10 BASE: 0x0000000000000000 AR-BYTES: a09b EFER.LMA 1 CR0: 0x0000000080050033 CR3: 0x0000000002a21000 CR4: 0x00000000000426e0 EFER: 0x0000000000000d01 Parking CPU 8 (Cell: "Inmate-2") 2) How can an inmate and the rootcell share a DMA memory region? I have assigned a USB addon card to the inmate, however the USB card shares a memory region with all the other USB ports. When I ignore the overlapping virtual addresses the inmate will boot and the other PCI device will be detected and used (VGA). Unfortunately the USB ports are detected but no devices can be supported. It appears as though the inmate is unable to use the DMA memregion reserved within the nonroot config. No errors are displayed in the jailhouse console. Looking through dmesg shows the following errors: [ 38.935495] xhci_hcd 0000:0a:00.0: Error while assigning device slot ID [ 38.935503] xhci_hcd 0000:0a:00.0: Max number of devices this xHCI host supports is 32. [ 38.935517] usb usb1-port1: couldn't allocate usb_device [ 51.222660] xhci_hcd 0000:0a:00.0: Error while assigning device slot ID [ 51.222667] xhci_hcd 0000:0a:00.0: Max number of devices this xHCI host supports is 32. [ 51.222673] usb usb2-port1: couldn't allocate usb_device [ 63.510447] xhci_hcd 0000:0a:00.0: Error while assigning device slot ID [ 63.510453] xhci_hcd 0000:0a:00.0: Max number of devices this xHCI host supports is 32. [ 63.510458] usb usb1-port3: couldn't allocate usb_device [ 75.798442] xhci_hcd 0000:0a:00.0: Error while assigning device slot ID [ 75.798449] xhci_hcd 0000:0a:00.0: Max number of devices this xHCI host supports is 32. [ 75.798454] usb usb1-port4: couldn't allocate usb_device Please let me know what you think the issue may be. I have been going through my kernel config to verify the appropriate modules are there. I'll be happy to provide any additional information you deem is necessary. Thank you for your help! -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to jailhouse-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
/* * Jailhouse, a Linux-based partitioning hypervisor * * Copyright (c) Siemens AG, 2014-2017 * * This work is licensed under the terms of the GNU GPL, version 2. See * the COPYING file in the top-level directory. * * Alternatively, you can use or redistribute this file under the following * BSD license: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * * Configuration for Supermicro X9DR3-F * created with '/usr/local/libexec/jailhouse/jailhouse config create extra-VGA-rootcell.c' * * NOTE: This config expects the following to be appended to your kernel cmdline * "memmap=0x304000000$0x100000000" */ #include <jailhouse/types.h> #include <jailhouse/cell-config.h> #include <jailhouse/config.h> #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) struct { struct jailhouse_system header; __u64 cpus[1]; struct jailhouse_memory mem_regions[100]; /* 98 */ struct jailhouse_irqchip irqchips[3]; __u8 pio_bitmap[0x2000]; struct jailhouse_pci_device pci_devices[143]; struct jailhouse_pci_capability pci_caps[103]; } __attribute__((packed)) config = { .header = { .signature = JAILHOUSE_SYSTEM_SIGNATURE, .revision = JAILHOUSE_CONFIG_REVISION, .flags = JAILHOUSE_SYS_VIRTUAL_DEBUG_CONSOLE, .hypervisor_memory = { .phys_start = 0x100000000, .size = 0x4000000, }, #if 0 .debug_console = { .address = 0x3f8, .type = JAILHOUSE_CON_TYPE_8250, .flags = JAILHOUSE_CON_ACCESS_PIO | JAILHOUSE_CON_REGDIST_1, }, #endif .platform_info = { .pci_mmconfig_base = 0x80000000, .pci_mmconfig_end_bus = 0xff, .x86 = { .pm_timer_address = 0x408, .vtd_interrupt_limit = 256, .iommu_units = { { .base = 0xfbffe000, .size = 0x1000, }, { .base = 0xd7ffc000, .size = 0x1000, }, }, }, }, .root_cell = { .name = "RootCell", .cpu_set_size = sizeof(config.cpus), .num_memory_regions = ARRAY_SIZE(config.mem_regions), .num_irqchips = ARRAY_SIZE(config.irqchips), .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap), .num_pci_devices = ARRAY_SIZE(config.pci_devices), .num_pci_caps = ARRAY_SIZE(config.pci_caps), }, }, .cpus = { 0x0000000000000fff, }, .mem_regions = { /* MemRegion: 00000000-0009abff : System RAM */ { .phys_start = 0x0, .virt_start = 0x0, .size = 0x9b000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: 000a0000-000bffff : PCI Bus 0000:00 */ { .phys_start = 0xa0000, .virt_start = 0xa0000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 00100000-7df39fff : System RAM */ { .phys_start = 0x100000, .virt_start = 0x100000, .size = 0x7de3a000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: 7df3a000-7e0ecfff : Reserved, APEI ERST */ { .phys_start = 0x7df3a000, .virt_start = 0x7df3a000, .size = 0x1b3000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 7e0ed000-7e2e7fff : ACPI Non-volatile Storage */ { .phys_start = 0x7e0ed000, .virt_start = 0x7e0ed000, .size = 0x1fb000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 7f364000-7f7fffff : ACPI Non-volatile Storage */ { .phys_start = 0x7f364000, .virt_start = 0x7f364000, .size = 0x49c000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 7f800000-7fffffff : RAM buffer */ { .phys_start = 0x7f800000, .virt_start = 0x7f800000, .size = 0x800000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: 80000000-8fffffff : PCI Bus, PCI MMCONFIG */ { .phys_start = 0x80000000, .virt_start = 0x80000000, .size = 0x10000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: d5000000-d5ffffff : mgadrmfb_vram */ { .phys_start = 0xd5000000, .virt_start = 0xd5000000, .size = 0x1000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d6000000-d67fffff : isci */ { .phys_start = 0xd6000000, .virt_start = 0xd6000000, .size = 0x800000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d6800000-d68f7fff : 0000:03:00.0 */ { .phys_start = 0xd6800000, .virt_start = 0xd6800000, .size = 0xf8000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d68f8000-d68f9fff : isci */ { .phys_start = 0xd68f8000, .virt_start = 0xd68f8000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d68fb000-d68fffff : isci */ { .phys_start = 0xd68fb000, .virt_start = 0xd68fb000, .size = 0x5000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d6a00000-d6a0ffff : 0000:08:00.0 */ { .phys_start = 0xd6a00000, .virt_start = 0xd6a00000, .size = 0x10000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d6b00000-d6b0ffff : 0000:06:00.0 */ { .phys_start = 0xd6b00000, .virt_start = 0xd6b00000, .size = 0x10000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d6c00000-d6c1ffff : 0000:04:00.1 */ { .phys_start = 0xd6c00000, .virt_start = 0xd6c00000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d6c20000-d6c3ffff : 0000:04:00.1 */ { .phys_start = 0xd6c20000, .virt_start = 0xd6c20000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d6c40000-d6c5ffff : 0000:04:00.0 */ { .phys_start = 0xd6c40000, .virt_start = 0xd6c40000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d6c60000-d6c7ffff : 0000:04:00.0 */ { .phys_start = 0xd6c60000, .virt_start = 0xd6c60000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7000000-d77fffff : 0000:0b:03.0 */ { .phys_start = 0xd7000000, .virt_start = 0xd7000000, .size = 0x800000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7800000-d7803fff : mgadrmfb_mmio */ { .phys_start = 0xd7800000, .virt_start = 0xd7800000, .size = 0x4000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7900000-d79fffff : PCI Bus 0000:03 */ { .phys_start = 0xd7900000, .virt_start = 0xd7900000, .size = 0x100000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7a00000-d7a03fff : 0000:01:00.0 */ { .phys_start = 0xd7a00000, .virt_start = 0xd7a00000, .size = 0x4000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7b00000-d7b00fff : xhci-hcd */ { .phys_start = 0xd7b00000, .virt_start = 0xd7b00000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7c00000-d7c007ff : 0000:09:04.0 */ { .phys_start = 0xd7c00000, .virt_start = 0xd7c00000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7c01000-d7c011ff : 0000:09:04.0 */ { .phys_start = 0xd7c01000, .virt_start = 0xd7c01000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7d00000-d7d07fff : 0000:07:04.0 */ { .phys_start = 0xd7d00000, .virt_start = 0xd7d00000, .size = 0x8000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7d08000-d7d081ff : 0000:07:04.0 */ { .phys_start = 0xd7d08000, .virt_start = 0xd7d08000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7e00000-d7e1ffff : igb */ { .phys_start = 0xd7e00000, .virt_start = 0xd7e00000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7e20000-d7e3ffff : igb */ { .phys_start = 0xd7e20000, .virt_start = 0xd7e20000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7e41000-d7e43fff : igb */ { .phys_start = 0xd7e41000, .virt_start = 0xd7e41000, .size = 0x3000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7e45000-d7e47fff : igb */ { .phys_start = 0xd7e45000, .virt_start = 0xd7e45000, .size = 0x3000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f00000-d7f01fff : ioatdma */ { .phys_start = 0xd7f00000, .virt_start = 0xd7f00000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f03000-d7f03fff : ioatdma */ { .phys_start = 0xd7f03000, .virt_start = 0xd7f03000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f04000-d7f05fff : ioatdma */ { .phys_start = 0xd7f04000, .virt_start = 0xd7f04000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f07000-d7f07fff : ioatdma */ { .phys_start = 0xd7f07000, .virt_start = 0xd7f07000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f08000-d7f09fff : ioatdma */ { .phys_start = 0xd7f08000, .virt_start = 0xd7f08000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f0b000-d7f0bfff : ioatdma */ { .phys_start = 0xd7f0b000, .virt_start = 0xd7f0b000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f0c000-d7f0dfff : ioatdma */ { .phys_start = 0xd7f0c000, .virt_start = 0xd7f0c000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f0f000-d7f0ffff : ioatdma */ { .phys_start = 0xd7f0f000, .virt_start = 0xd7f0f000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f10000-d7f11fff : ioatdma */ { .phys_start = 0xd7f10000, .virt_start = 0xd7f10000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f13000-d7f13fff : ioatdma */ { .phys_start = 0xd7f13000, .virt_start = 0xd7f13000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f14000-d7f15fff : ioatdma */ { .phys_start = 0xd7f14000, .virt_start = 0xd7f14000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f17000-d7f17fff : ioatdma */ { .phys_start = 0xd7f17000, .virt_start = 0xd7f17000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f18000-d7f19fff : ioatdma */ { .phys_start = 0xd7f18000, .virt_start = 0xd7f18000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f1b000-d7f1bfff : ioatdma */ { .phys_start = 0xd7f1b000, .virt_start = 0xd7f1b000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f1c000-d7f1dfff : ioatdma */ { .phys_start = 0xd7f1c000, .virt_start = 0xd7f1c000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f1f000-d7f1ffff : ioatdma */ { .phys_start = 0xd7f1f000, .virt_start = 0xd7f1f000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f20000-d7f20fff : 0000:00:1f.6 */ { .phys_start = 0xd7f20000, .virt_start = 0xd7f20000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f21000-d7f210ff : 0000:00:1f.3 */ { .phys_start = 0xd7f21000, .virt_start = 0xd7f21000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f22000-d7f227ff : ahci */ { .phys_start = 0xd7f22000, .virt_start = 0xd7f22000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f23000-d7f233ff : ehci_hcd */ { .phys_start = 0xd7f23000, .virt_start = 0xd7f23000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f24000-d7f243ff : ehci_hcd */ { .phys_start = 0xd7f24000, .virt_start = 0xd7f24000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f25000-d7f2500f : 0000:00:16.0 */ { .phys_start = 0xd7f25000, .virt_start = 0xd7f25000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: d7f26000-d7f26fff : 0000:00:05.4 */ { .phys_start = 0xd7f26000, .virt_start = 0xd7f26000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, #if 1 /* MemRegion: d8000000-dfffffff : 0000:83:00.0 */ { .phys_start = 0xd8000000, .virt_start = 0xd8000000, .size = 0x8000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: e0000000-e1ffffff : 0000:83:00.0 */ { .phys_start = 0xe0000000, .virt_start = 0xe0000000, .size = 0x2000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: e8000000-efffffff : 0000:82:00.0 */ { .phys_start = 0xe8000000, .virt_start = 0xe8000000, .size = 0x8000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f0000000-f1ffffff : 0000:82:00.0 */ { .phys_start = 0xf0000000, .virt_start = 0xf0000000, .size = 0x2000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f8000000-f8ffffff : 0000:83:00.0 */ { .phys_start = 0xf8000000, .virt_start = 0xf8000000, .size = 0x1000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9000000-f907ffff : 0000:83:00.0 */ { .phys_start = 0xf9000000, .virt_start = 0xf9000000, .size = 0x80000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, #endif /* MemRegion: f9080000-f9083fff : ICH HD audio */ { .phys_start = 0xf9080000, .virt_start = 0xf9080000, .size = 0x4000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9100000-f9101fff : ioatdma */ { .phys_start = 0xf9100000, .virt_start = 0xf9100000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9103000-f9103fff : ioatdma */ { .phys_start = 0xf9103000, .virt_start = 0xf9103000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9104000-f9105fff : ioatdma */ { .phys_start = 0xf9104000, .virt_start = 0xf9104000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9107000-f9107fff : ioatdma */ { .phys_start = 0xf9107000, .virt_start = 0xf9107000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9108000-f9109fff : ioatdma */ { .phys_start = 0xf9108000, .virt_start = 0xf9108000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f910b000-f910bfff : ioatdma */ { .phys_start = 0xf910b000, .virt_start = 0xf910b000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f910c000-f910dfff : ioatdma */ { .phys_start = 0xf910c000, .virt_start = 0xf910c000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f910f000-f910ffff : ioatdma */ { .phys_start = 0xf910f000, .virt_start = 0xf910f000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9110000-f9111fff : ioatdma */ { .phys_start = 0xf9110000, .virt_start = 0xf9110000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9113000-f9113fff : ioatdma */ { .phys_start = 0xf9113000, .virt_start = 0xf9113000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9114000-f9115fff : ioatdma */ { .phys_start = 0xf9114000, .virt_start = 0xf9114000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9117000-f9117fff : ioatdma */ { .phys_start = 0xf9117000, .virt_start = 0xf9117000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9118000-f9119fff : ioatdma */ { .phys_start = 0xf9118000, .virt_start = 0xf9118000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f911b000-f911bfff : ioatdma */ { .phys_start = 0xf911b000, .virt_start = 0xf911b000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f911c000-f911dfff : ioatdma */ { .phys_start = 0xf911c000, .virt_start = 0xf911c000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f911f000-f911ffff : ioatdma */ { .phys_start = 0xf911f000, .virt_start = 0xf911f000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f9120000-f9120fff : 0000:80:05.4 */ { .phys_start = 0xf9120000, .virt_start = 0xf9120000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, #if 1 /* MemRegion: fa000000-faffffff : 0000:82:00.0 */ { .phys_start = 0xfa000000, .virt_start = 0xfa000000, .size = 0x1000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fb000000-fb07ffff : 0000:82:00.0 */ { .phys_start = 0xfb000000, .virt_start = 0xfb000000, .size = 0x80000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, #endif /* MemRegion: fb080000-fb083fff : ICH HD audio */ { .phys_start = 0xfb080000, .virt_start = 0xfb080000, .size = 0x4000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fb200000-fb200fff : xhci-hcd */ { .phys_start = 0xfb200000, .virt_start = 0xfb200000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fc000000-fcffffff : pnp 00:00 */ { .phys_start = 0xfc000000, .virt_start = 0xfc000000, .size = 0x1000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fd000000-fdffffff : pnp 00:00 */ { .phys_start = 0xfd000000, .virt_start = 0xfd000000, .size = 0x1000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fe000000-feafffff : pnp 00:00 */ { .phys_start = 0xfe000000, .virt_start = 0xfe000000, .size = 0xb00000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: feb00000-febfffff : pnp 00:00 */ { .phys_start = 0xfeb00000, .virt_start = 0xfeb00000, .size = 0x100000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fed00000-fed003ff : PNP0103:00 */ { .phys_start = 0xfed00000, .virt_start = 0xfed00000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fed08000-fed08fff : pnp 00:07 */ { .phys_start = 0xfed08000, .virt_start = 0xfed08000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fed0e000-fed0ffff : PCI Bus 0000:00 */ { .phys_start = 0xfed0e000, .virt_start = 0xfed0e000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fed45000-fedfffff : pnp 00:00 */ { .phys_start = 0xfed45000, .virt_start = 0xfed45000, .size = 0xbb000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 404000000-4833fffff : System RAM */ { .phys_start = 0x404000000, .virt_start = 0x404000000, .size = 0x7f400000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: 483400000-484ffffff : Kernel */ { .phys_start = 0x483400000, .virt_start = 0x483400000, .size = 0x1c00000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: 485000000-87fffffff : System RAM */ { .phys_start = 0x485000000, .virt_start = 0x485000000, .size = 0x3fb000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: 000c0000-000dffff : ROMs */ { .phys_start = 0xc0000, .virt_start = 0xc0000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 000e0000-000fffff : Reserved, System ROM */ { .phys_start = 0xe0000, .virt_start = 0xe0000, .size = 0x20000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 7f233000-7f241fff : ACPI DMAR RMRR */ /* PCI device: 0a:00.0 */ /* PCI device: 81:00.0 */ /* PCI device: 00:1d.0 */ /* PCI device: 00:1a.0 */ { .phys_start = 0x7f233000, .virt_start = 0x7f233000, .size = 0xf000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: 104000000-283fffffff : JAILHOUSE First Inmate Memory */ { .phys_start = 0x104000000, /* MemRegion(single): 104000000-4035fffff */ .virt_start = 0x104000000, .size = 0x180000000, /* Original single Inmate 0x2ff600000 */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 284000000-403ffffff : JAILHOUSE Second Inmate Memory */ { .phys_start = 0x284000000, .virt_start = 0x284000000, .size = 0x180000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: 284000000-403ffffff : IVSHMEM shared memory region */ { .phys_start = 0x404000000, .virt_start = 0x404000000, .size = 0x120000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, }, .irqchips = { /* IOAPIC 0, GSI base 0 */ { .address = 0xfec00000, .id = 0x100ff, .pin_bitmap = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff }, }, /* IOAPIC 2, GSI base 24 */ { .address = 0xfec01000, .id = 0x1002c, .pin_bitmap = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff }, }, /* IOAPIC 3, GSI base 48 */ { .address = 0xfec40000, .id = 0x802c, .pin_bitmap = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff }, }, }, .pio_bitmap = { [ 0/8 ... 0x3f/8] = -1, /* -1 */ [ 0x40/8 ... 0x47/8] = 0xf0, /* PIT */ [ 0x48/8 ... 0x5f/8] = -1, [ 0x60/8 ... 0x67/8] = 0xec, /* HACK: NMI status/control */ [ 0x68/8 ... 0x6f/8] = -1, [ 0x70/8 ... 0x77/8] = 0xfc, /* RTC 0xfc */ [ 0x78/8 ... 0x3af/8] = 0, /* 0 */ [ 0x3b0/8 ... 0x3df/8] = 0x00, /* 0x00 VGA */ [ 0x3e0/8 ... 0xcff/8] = 0, /* 0 */ [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: PCI bus */ }, .pci_devices = { /* PCIDevice: 00:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x0, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 6, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:01.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x8, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 6, .num_caps = 10, .num_msi_vectors = 2, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:01.1 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x9, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 6, .num_caps = 10, .num_msi_vectors = 2, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:02.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x10, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 6, .num_caps = 10, .num_msi_vectors = 2, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:03.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x18, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 6, .num_caps = 10, .num_msi_vectors = 2, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:03.2 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x1a, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 6, .num_caps = 10, .num_msi_vectors = 2, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:04.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x20, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xd7f1e000, }, /* PCIDevice: 00:04.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x21, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xd7f1a000, }, /* PCIDevice: 00:04.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x22, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xd7f16000, }, /* PCIDevice: 00:04.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x23, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xd7f12000, }, /* PCIDevice: 00:04.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x24, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xd7f0e000, }, /* PCIDevice: 00:04.5 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x25, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xd7f0a000, }, /* PCIDevice: 00:04.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x26, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xd7f06000, }, /* PCIDevice: 00:04.7 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x27, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xd7f02000, }, /* PCIDevice: 00:05.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x28, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 20, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:05.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x2a, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 20, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:05.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x2c, .bar_mask = { 0xfffff000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 22, .num_caps = 1, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:16.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xb0, .bar_mask = { 0xfffffff0, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 23, .num_caps = 2, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:1a.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xd0, .bar_mask = { 0xfffffc00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 25, .num_caps = 3, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:1d.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xe8, .bar_mask = { 0xfffffc00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 25, .num_caps = 3, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:1e.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0xf0, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 28, .num_caps = 1, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:1f.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xf8, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 29, .num_caps = 1, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:1f.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xfa, .bar_mask = { 0xfffffff8, 0xfffffffc, 0xfffffff8, 0xfffffffc, 0xffffffe0, 0xfffff800, }, .caps_start = 30, .num_caps = 4, .num_msi_vectors = 1, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:1f.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xfb, .bar_mask = { 0xffffff00, 0xffffffff, 0x00000000, 0x00000000, 0xffffffe0, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 00:1f.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xfe, .bar_mask = { 0xfffff000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 34, .num_caps = 1, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 01:00.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x100, .bar_mask = { 0xffffc000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 35, .num_caps = 5, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 02:08.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x240, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 40, .num_caps = 6, .num_msi_vectors = 1, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 03:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x300, .bar_mask = { 0xffff8000, 0xffffffff, 0xff800000, 0xffffffff, 0xffffff00, 0xffffff00, }, .caps_start = 46, .num_caps = 7, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 4, .msix_region_size = 0x1000, .msix_address = 0xd68fa000, }, /* PCIDevice: 04:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x400, .bar_mask = { 0xfffe0000, 0x00000000, 0xffffffe0, 0xffffc000, 0x00000000, 0x00000000, }, .caps_start = 53, .num_caps = 11, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 10, .msix_region_size = 0x1000, .msix_address = 0xd7e44000, }, /* PCIDevice: 04:00.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x401, .bar_mask = { 0xfffe0000, 0x00000000, 0xffffffe0, 0xffffc000, 0x00000000, 0x00000000, }, .caps_start = 64, .num_caps = 10, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 10, .msix_region_size = 0x1000, .msix_address = 0xd7e40000, }, /* PCIDevice: 06:00.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x600, .bar_mask = { 0xffff0000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 74, .num_caps = 4, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 07:04.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x720, .bar_mask = { 0xfffffe00, 0x00000000, 0xffff8000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 78, .num_caps = 3, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 08:00.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x800, .bar_mask = { 0xffff0000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 74, .num_caps = 4, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 09:04.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x920, .bar_mask = { 0xfffffe00, 0x00000000, 0xfffff800, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 78, .num_caps = 3, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 0a:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xa00, .bar_mask = { 0xffffe000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 81, .num_caps = 6, .num_msi_vectors = 8, .msi_64bits = 1, .num_msix_vectors = 8, .msix_region_size = 0x1000, .msix_address = 0xd7b01000, }, /* PCIDevice: 0b:03.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xb18, .bar_mask = { 0xff000000, 0xffffc000, 0xff800000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 87, .num_caps = 1, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:08.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f40, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:08.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f43, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 88, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:08.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f44, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:09.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f48, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:09.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f4b, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 88, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:09.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f4c, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0a.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f50, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0a.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f51, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0a.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f52, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0a.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f53, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0b.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f58, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0b.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f5b, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0c.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f60, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0c.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f61, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0c.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f62, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0c.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f66, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0c.7 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f67, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0d.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f68, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0d.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f69, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0d.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f6a, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0d.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f6e, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0e.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f70, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0e.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f71, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0f.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f78, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0f.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f79, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0f.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f7a, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0f.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f7b, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0f.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f7c, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0f.5 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f7d, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:0f.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f7e, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:10.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f80, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:10.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f81, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:10.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f82, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:10.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f83, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:10.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f84, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:10.5 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f85, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:10.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f86, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:10.7 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f87, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:11.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f88, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:13.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f98, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:13.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f99, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:13.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f9c, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:13.5 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f9d, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 7f:13.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x7f9e, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 80:01.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x8008, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 6, .num_caps = 10, .num_msi_vectors = 2, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 80:02.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x8010, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 6, .num_caps = 10, .num_msi_vectors = 2, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 80:03.0 */ { .type = JAILHOUSE_PCI_TYPE_BRIDGE, .iommu = 1, .domain = 0x0, .bdf = 0x8018, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 6, .num_caps = 10, .num_msi_vectors = 2, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 80:04.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8020, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xf911e000, }, /* PCIDevice: 80:04.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8021, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xf911a000, }, /* PCIDevice: 80:04.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8022, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xf9116000, }, /* PCIDevice: 80:04.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8023, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xf9112000, }, /* PCIDevice: 80:04.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8024, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xf910e000, }, /* PCIDevice: 80:04.5 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8025, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xf910a000, }, /* PCIDevice: 80:04.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8026, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xf9106000, }, /* PCIDevice: 80:04.7 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8027, .bar_mask = { 0xffffc000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 16, .num_caps = 4, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 1, .msix_region_size = 0x1000, .msix_address = 0xf9102000, }, /* PCIDevice: 80:05.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x8028, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 20, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 80:05.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x802a, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 20, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 80:05.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0x802c, .bar_mask = { 0xfffff000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 22, .num_caps = 1, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 81:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8100, .bar_mask = { 0xffffe000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 81, .num_caps = 6, .num_msi_vectors = 8, .msi_64bits = 1, .num_msix_vectors = 8, .msix_region_size = 0x1000, .msix_address = 0xfb201000, }, /* PCIDevice: 82:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8200, .bar_mask = { 0xff000000, 0xf8000000, 0xffffffff, 0xfe000000, 0xffffffff, 0xffffff80, }, .caps_start = 92, .num_caps = 7, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 82:00.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8201, .bar_mask = { 0xffffc000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 99, .num_caps = 4, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 83:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8300, .bar_mask = { 0xff000000, 0xf8000000, 0xffffffff, 0xfe000000, 0xffffffff, 0xffffff80, }, .caps_start = 92, .num_caps = 7, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 83:00.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8301, .bar_mask = { 0xffffc000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 99, .num_caps = 4, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:08.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff40, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:08.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff43, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 88, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:08.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff44, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:09.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff48, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:09.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff4b, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 88, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:09.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff4c, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0a.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff50, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0a.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff51, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0a.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff52, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0a.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff53, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0b.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff58, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0b.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff5b, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0c.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff60, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0c.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff61, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0c.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff62, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0c.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff66, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0c.7 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff67, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0d.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff68, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0d.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff69, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0d.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff6a, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0d.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff6e, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0e.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff70, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0e.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff71, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0f.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff78, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0f.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff79, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0f.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff7a, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0f.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff7b, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0f.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff7c, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0f.5 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff7d, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:0f.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff7e, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:10.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff80, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:10.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff81, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:10.2 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff82, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:10.3 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff83, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:10.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff84, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:10.5 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff85, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:10.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff86, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:10.7 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff87, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 90, .num_caps = 2, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:11.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff88, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:13.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff98, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:13.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff99, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:13.4 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff9c, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:13.5 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff9d, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: ff:13.6 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xff9e, .bar_mask = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 0, .num_caps = 0, .num_msi_vectors = 0, .msi_64bits = 0, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, #if 0 /* IVSHMEM */ { .type = JAILHOUSE_PCI_TYPE_IVSHMEM, .iommu = 1, .domain = 0x0000, .bdf = 0x0f << 3, .bar_mask = { 0Xffffff00, 0xffffffff, 0x00000000, 0x00000000, 0xffffffe0, 0xffffffff, }, .num_msix_vectors = 1, .shmem_region = 3, .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH, }, #endif }, .pci_caps = { /* PCIDevice: 00:00.0 */ { .id = 0x10, .start = 0x90, .len = 60, .flags = 0, }, { .id = 0x1, .start = 0xe0, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x144, .len = 4, .flags = 0, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x1d0, .len = 4, .flags = 0, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x280, .len = 4, .flags = 0, }, /* PCIDevice: 00:01.0 */ /* PCIDevice: 00:01.1 */ /* PCIDevice: 00:02.0 */ /* PCIDevice: 00:03.0 */ /* PCIDevice: 00:03.2 */ /* PCIDevice: 80:01.0 */ /* PCIDevice: 80:02.0 */ /* PCIDevice: 80:03.0 */ { .id = 0xd, .start = 0x40, .len = 2, .flags = 0, }, { .id = 0x5, .start = 0x60, .len = 20, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0x90, .len = 60, .flags = 0, }, { .id = 0x1, .start = 0xe0, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0xd | JAILHOUSE_PCI_EXT_CAP, .start = 0x110, .len = 4, .flags = 0, }, { .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, .start = 0x148, .len = 4, .flags = 0, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x1d0, .len = 4, .flags = 0, }, { .id = 0x19 | JAILHOUSE_PCI_EXT_CAP, .start = 0x250, .len = 4, .flags = 0, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x280, .len = 4, .flags = 0, }, /* PCIDevice: 00:04.0 */ /* PCIDevice: 00:04.1 */ /* PCIDevice: 00:04.2 */ /* PCIDevice: 00:04.3 */ /* PCIDevice: 00:04.4 */ /* PCIDevice: 00:04.5 */ /* PCIDevice: 00:04.6 */ /* PCIDevice: 00:04.7 */ /* PCIDevice: 80:04.0 */ /* PCIDevice: 80:04.1 */ /* PCIDevice: 80:04.2 */ /* PCIDevice: 80:04.3 */ /* PCIDevice: 80:04.4 */ /* PCIDevice: 80:04.5 */ /* PCIDevice: 80:04.6 */ /* PCIDevice: 80:04.7 */ { .id = 0x11, .start = 0x80, .len = 12, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0x90, .len = 60, .flags = 0, }, { .id = 0x1, .start = 0xe0, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, /* PCIDevice: 00:05.0 */ /* PCIDevice: 00:05.2 */ /* PCIDevice: 80:05.0 */ /* PCIDevice: 80:05.2 */ { .id = 0x10, .start = 0x40, .len = 60, .flags = 0, }, { .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, /* PCIDevice: 00:05.4 */ /* PCIDevice: 80:05.4 */ { .id = 0x1, .start = 0x6c, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, /* PCIDevice: 00:16.0 */ { .id = 0x1, .start = 0x50, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x8c, .len = 14, .flags = JAILHOUSE_PCICAPS_WRITE, }, /* PCIDevice: 00:1a.0 */ /* PCIDevice: 00:1d.0 */ { .id = 0x1, .start = 0x50, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0xa, .start = 0x58, .len = 2, .flags = 0, }, { .id = 0x13, .start = 0x98, .len = 2, .flags = 0, }, /* PCIDevice: 00:1e.0 */ { .id = 0xd, .start = 0x50, .len = 2, .flags = 0, }, /* PCIDevice: 00:1f.0 */ { .id = 0x9, .start = 0xe0, .len = 2, .flags = 0, }, /* PCIDevice: 00:1f.2 */ { .id = 0x5, .start = 0x80, .len = 10, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x1, .start = 0x70, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x12, .start = 0xa8, .len = 2, .flags = 0, }, { .id = 0x13, .start = 0xb0, .len = 2, .flags = 0, }, /* PCIDevice: 00:1f.6 */ { .id = 0x1, .start = 0x50, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, /* PCIDevice: 01:00.0 */ { .id = 0x10, .start = 0x40, .len = 60, .flags = 0, }, { .id = 0x1, .start = 0x80, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0xd, .start = 0x88, .len = 2, .flags = 0, }, { .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0x19 | JAILHOUSE_PCI_EXT_CAP, .start = 0x200, .len = 4, .flags = 0, }, /* PCIDevice: 02:08.0 */ { .id = 0x10, .start = 0x40, .len = 60, .flags = 0, }, { .id = 0x1, .start = 0x80, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0xd, .start = 0x88, .len = 2, .flags = 0, }, { .id = 0x5, .start = 0x90, .len = 10, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0xd | JAILHOUSE_PCI_EXT_CAP, .start = 0x138, .len = 4, .flags = 0, }, /* PCIDevice: 03:00.0 */ { .id = 0x1, .start = 0x98, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0xc4, .len = 60, .flags = 0, }, { .id = 0x11, .start = 0xa0, .len = 12, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0xe | JAILHOUSE_PCI_EXT_CAP, .start = 0x138, .len = 4, .flags = 0, }, { .id = 0x17 | JAILHOUSE_PCI_EXT_CAP, .start = 0x180, .len = 4, .flags = 0, }, { .id = 0x10 | JAILHOUSE_PCI_EXT_CAP, .start = 0x140, .len = 64, .flags = 0, }, /* PCIDevice: 04:00.0 */ { .id = 0x1, .start = 0x40, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x50, .len = 24, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x11, .start = 0x70, .len = 12, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0xa0, .len = 60, .flags = 0, }, { .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0x3 | JAILHOUSE_PCI_EXT_CAP, .start = 0x140, .len = 4, .flags = 0, }, { .id = 0xe | JAILHOUSE_PCI_EXT_CAP, .start = 0x150, .len = 4, .flags = 0, }, { .id = 0x10 | JAILHOUSE_PCI_EXT_CAP, .start = 0x160, .len = 64, .flags = 0, }, { .id = 0x17 | JAILHOUSE_PCI_EXT_CAP, .start = 0x1a0, .len = 4, .flags = 0, }, { .id = 0x18 | JAILHOUSE_PCI_EXT_CAP, .start = 0x1c0, .len = 4, .flags = 0, }, { .id = 0xd | JAILHOUSE_PCI_EXT_CAP, .start = 0x1d0, .len = 4, .flags = 0, }, /* PCIDevice: 04:00.1 */ { .id = 0x1, .start = 0x40, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x50, .len = 24, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x11, .start = 0x70, .len = 12, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0xa0, .len = 60, .flags = 0, }, { .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0x3 | JAILHOUSE_PCI_EXT_CAP, .start = 0x140, .len = 4, .flags = 0, }, { .id = 0xe | JAILHOUSE_PCI_EXT_CAP, .start = 0x150, .len = 4, .flags = 0, }, { .id = 0x10 | JAILHOUSE_PCI_EXT_CAP, .start = 0x160, .len = 64, .flags = 0, }, { .id = 0x17 | JAILHOUSE_PCI_EXT_CAP, .start = 0x1a0, .len = 4, .flags = 0, }, { .id = 0xd | JAILHOUSE_PCI_EXT_CAP, .start = 0x1d0, .len = 4, .flags = 0, }, /* PCIDevice: 06:00.0 */ /* PCIDevice: 08:00.0 */ { .id = 0x1, .start = 0x40, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x50, .len = 14, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0x60, .len = 20, .flags = 0, }, { .id = 0x4 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, /* PCIDevice: 07:04.0 */ /* PCIDevice: 09:04.0 */ { .id = 0x1, .start = 0x40, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x0, .start = 0x48, .len = 2, .flags = 0, }, { .id = 0x3, .start = 0x4c, .len = 2, .flags = 0, }, /* PCIDevice: 0a:00.0 */ /* PCIDevice: 81:00.0 */ { .id = 0x1, .start = 0x50, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x70, .len = 14, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x11, .start = 0x90, .len = 12, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0xa0, .len = 60, .flags = 0, }, { .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0x18 | JAILHOUSE_PCI_EXT_CAP, .start = 0x150, .len = 4, .flags = 0, }, /* PCIDevice: 0b:03.0 */ { .id = 0x1, .start = 0xdc, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, /* PCIDevice: 7f:08.3 */ /* PCIDevice: 7f:09.3 */ /* PCIDevice: ff:08.3 */ /* PCIDevice: ff:09.3 */ { .id = 0x10, .start = 0x40, .len = 20, .flags = 0, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, /* PCIDevice: 7f:08.4 */ /* PCIDevice: 7f:09.4 */ /* PCIDevice: 7f:0f.0 */ /* PCIDevice: 7f:0f.1 */ /* PCIDevice: 7f:0f.2 */ /* PCIDevice: 7f:0f.3 */ /* PCIDevice: 7f:0f.4 */ /* PCIDevice: 7f:0f.5 */ /* PCIDevice: 7f:10.0 */ /* PCIDevice: 7f:10.1 */ /* PCIDevice: 7f:10.2 */ /* PCIDevice: 7f:10.3 */ /* PCIDevice: 7f:10.4 */ /* PCIDevice: 7f:10.5 */ /* PCIDevice: 7f:10.6 */ /* PCIDevice: 7f:10.7 */ /* PCIDevice: ff:08.4 */ /* PCIDevice: ff:09.4 */ /* PCIDevice: ff:0f.0 */ /* PCIDevice: ff:0f.1 */ /* PCIDevice: ff:0f.2 */ /* PCIDevice: ff:0f.3 */ /* PCIDevice: ff:0f.4 */ /* PCIDevice: ff:0f.5 */ /* PCIDevice: ff:10.0 */ /* PCIDevice: ff:10.1 */ /* PCIDevice: ff:10.2 */ /* PCIDevice: ff:10.3 */ /* PCIDevice: ff:10.4 */ /* PCIDevice: ff:10.5 */ /* PCIDevice: ff:10.6 */ /* PCIDevice: ff:10.7 */ { .id = 0x10, .start = 0x40, .len = 20, .flags = 0, }, { .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, /* PCIDevice: 82:00.0 */ /* PCIDevice: 83:00.0 */ { .id = 0x1, .start = 0x60, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x68, .len = 14, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0x78, .len = 60, .flags = 0, }, { .id = 0x9, .start = 0xb4, .len = 2, .flags = 0, }, { .id = 0x2 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0x4 | JAILHOUSE_PCI_EXT_CAP, .start = 0x128, .len = 4, .flags = 0, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x600, .len = 4, .flags = 0, }, /* PCIDevice: 82:00.1 */ /* PCIDevice: 83:00.1 */ { .id = 0x1, .start = 0x60, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x68, .len = 14, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0x78, .len = 60, .flags = 0, }, { .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, }, };
00000000-00000fff : Reserved 00001000-0009abff : System RAM 0009ac00-0009ffff : Reserved 000a0000-000bffff : PCI Bus 0000:80 000a0000-000bffff : PCI Bus 0000:00 000c0000-000dffff : PCI Bus 0000:00 000c0000-000c7fff : Video ROM 000c8000-000c87ff : Adapter ROM 000c8800-000c97ff : Adapter ROM 000e0000-000fffff : Reserved 000f0000-000fffff : System ROM 00100000-7df39fff : System RAM 04000000-0bffffff : Crash kernel 7df3a000-7e0ecfff : Reserved 7df97018-7df9703e : APEI ERST 7df9703f-7df9903e : APEI ERST 7e0ed000-7e2e7fff : ACPI Non-volatile Storage 7e2e8000-7f363fff : Reserved 7f364000-7f7fffff : ACPI Non-volatile Storage 7f800000-7fffffff : RAM buffer 80000000-d7ffffff : PCI Bus 0000:00 80000000-8fffffff : PCI MMCONFIG 0000 [bus 00-ff] 80000000-8fffffff : Reserved d5000000-d5ffffff : PCI Bus 0000:0b d5000000-d5ffffff : 0000:0b:03.0 d5000000-d5ffffff : mgadrmfb_vram d6000000-d68fffff : PCI Bus 0000:01 d6000000-d68fffff : PCI Bus 0000:02 d6000000-d68fffff : PCI Bus 0000:03 d6000000-d67fffff : 0000:03:00.0 d6000000-d67fffff : isci d6800000-d68f7fff : 0000:03:00.0 d68f8000-d68fffff : 0000:03:00.0 d68f8000-d68fffff : isci d6a00000-d6afffff : PCI Bus 0000:08 d6a00000-d6a0ffff : 0000:08:00.0 d6b00000-d6bfffff : PCI Bus 0000:06 d6b00000-d6b0ffff : 0000:06:00.0 d6c00000-d6cfffff : PCI Bus 0000:04 d6c00000-d6c1ffff : 0000:04:00.1 d6c20000-d6c3ffff : 0000:04:00.1 d6c40000-d6c5ffff : 0000:04:00.0 d6c60000-d6c7ffff : 0000:04:00.0 d7000000-d78fffff : PCI Bus 0000:0b d7000000-d77fffff : 0000:0b:03.0 d7800000-d7803fff : 0000:0b:03.0 d7800000-d7803fff : mgadrmfb_mmio d7900000-d7afffff : PCI Bus 0000:01 d7900000-d79fffff : PCI Bus 0000:02 d7900000-d79fffff : PCI Bus 0000:03 d7a00000-d7a03fff : 0000:01:00.0 d7b00000-d7bfffff : PCI Bus 0000:0a d7b00000-d7b01fff : 0000:0a:00.0 d7b00000-d7b01fff : xhci-hcd d7c00000-d7cfffff : PCI Bus 0000:08 d7c00000-d7cfffff : PCI Bus 0000:09 d7c00000-d7c007ff : 0000:09:04.0 d7c01000-d7c011ff : 0000:09:04.0 d7d00000-d7dfffff : PCI Bus 0000:06 d7d00000-d7dfffff : PCI Bus 0000:07 d7d00000-d7d07fff : 0000:07:04.0 d7d08000-d7d081ff : 0000:07:04.0 d7e00000-d7efffff : PCI Bus 0000:04 d7e00000-d7e1ffff : 0000:04:00.1 d7e00000-d7e1ffff : igb d7e20000-d7e3ffff : 0000:04:00.0 d7e20000-d7e3ffff : igb d7e40000-d7e43fff : 0000:04:00.1 d7e40000-d7e43fff : igb d7e44000-d7e47fff : 0000:04:00.0 d7e44000-d7e47fff : igb d7f00000-d7f03fff : 0000:00:04.7 d7f00000-d7f03fff : ioatdma d7f04000-d7f07fff : 0000:00:04.6 d7f04000-d7f07fff : ioatdma d7f08000-d7f0bfff : 0000:00:04.5 d7f08000-d7f0bfff : ioatdma d7f0c000-d7f0ffff : 0000:00:04.4 d7f0c000-d7f0ffff : ioatdma d7f10000-d7f13fff : 0000:00:04.3 d7f10000-d7f13fff : ioatdma d7f14000-d7f17fff : 0000:00:04.2 d7f14000-d7f17fff : ioatdma d7f18000-d7f1bfff : 0000:00:04.1 d7f18000-d7f1bfff : ioatdma d7f1c000-d7f1ffff : 0000:00:04.0 d7f1c000-d7f1ffff : ioatdma d7f20000-d7f20fff : 0000:00:1f.6 d7f21000-d7f210ff : 0000:00:1f.3 d7f22000-d7f227ff : 0000:00:1f.2 d7f22000-d7f227ff : ahci d7f23000-d7f233ff : 0000:00:1d.0 d7f23000-d7f233ff : ehci_hcd d7f24000-d7f243ff : 0000:00:1a.0 d7f24000-d7f243ff : ehci_hcd d7f25000-d7f2500f : 0000:00:16.0 d7f26000-d7f26fff : 0000:00:05.4 d7ffc000-d7ffcfff : dmar1 d8000000-fbffffff : PCI Bus 0000:80 d8000000-e1ffffff : PCI Bus 0000:83 d8000000-dfffffff : 0000:83:00.0 e0000000-e1ffffff : 0000:83:00.0 e8000000-f1ffffff : PCI Bus 0000:82 e8000000-efffffff : 0000:82:00.0 f0000000-f1ffffff : 0000:82:00.0 f8000000-f90fffff : PCI Bus 0000:83 f8000000-f8ffffff : 0000:83:00.0 f9000000-f907ffff : 0000:83:00.0 f9080000-f9083fff : 0000:83:00.1 f9080000-f9083fff : ICH HD audio f9100000-f9103fff : 0000:80:04.7 f9100000-f9103fff : ioatdma f9104000-f9107fff : 0000:80:04.6 f9104000-f9107fff : ioatdma f9108000-f910bfff : 0000:80:04.5 f9108000-f910bfff : ioatdma f910c000-f910ffff : 0000:80:04.4 f910c000-f910ffff : ioatdma f9110000-f9113fff : 0000:80:04.3 f9110000-f9113fff : ioatdma f9114000-f9117fff : 0000:80:04.2 f9114000-f9117fff : ioatdma f9118000-f911bfff : 0000:80:04.1 f9118000-f911bfff : ioatdma f911c000-f911ffff : 0000:80:04.0 f911c000-f911ffff : ioatdma f9120000-f9120fff : 0000:80:05.4 fa000000-fb0fffff : PCI Bus 0000:82 fa000000-faffffff : 0000:82:00.0 fb000000-fb07ffff : 0000:82:00.0 fb080000-fb083fff : 0000:82:00.1 fb080000-fb083fff : ICH HD audio fb200000-fb2fffff : PCI Bus 0000:81 fb200000-fb201fff : 0000:81:00.0 fb200000-fb201fff : xhci-hcd fbffe000-fbffefff : dmar0 fc000000-fcffffff : pnp 00:00 fd000000-fdffffff : pnp 00:00 fe000000-feafffff : pnp 00:00 feb00000-febfffff : pnp 00:00 fec00000-fec003ff : IOAPIC 0 fec01000-fec013ff : IOAPIC 1 fec40000-fec403ff : IOAPIC 2 fed00000-fed003ff : HPET 0 fed00000-fed003ff : PNP0103:00 fed08000-fed08fff : pnp 00:07 fed0e000-fed0ffff : PCI Bus 0000:00 fed1c000-fed3ffff : Reserved fed1c000-fed1ffff : pnp 00:07 fed1f410-fed1f414 : iTCO_wdt.0.auto fed1f410-fed1f414 : iTCO_wdt.0.auto fed45000-fedfffff : pnp 00:00 fee00000-fee00fff : Local APIC ff000000-403ffffff : Reserved ff000000-ffffffff : pnp 00:07 404000000-87fffffff : System RAM 645800000-6462031d0 : Kernel code 6462031d1-646a5737f : Kernel data 646fc7000-6472b4fff : Kernel bss
0002-03af : PCI Bus 0000:00 0000-001f : dma1 0020-0021 : pic1 0040-0043 : timer0 0050-0053 : timer1 0060-0060 : keyboard 0061-0061 : PNP0800:00 0064-0064 : keyboard 0070-0071 : rtc0 0080-008f : dma page reg 00a0-00a1 : pic2 00b2-00b2 : APEI ERST 00c0-00df : dma2 00f0-00ff : PNP0C04:00 00f0-00ff : fpu 02f8-02ff : serial 03b0-03df : PCI Bus 0000:80 03b0-03df : PCI Bus 0000:00 03c0-03df : vga+ 03e0-0cf7 : PCI Bus 0000:00 03f8-03ff : serial 0400-0453 : pnp 00:07 0400-0403 : ACPI PM1a_EVT_BLK 0404-0405 : ACPI PM1a_CNT_BLK 0408-040b : ACPI PM_TMR 0420-042f : ACPI GPE0_BLK 0430-0433 : iTCO_wdt.0.auto 0430-0433 : iTCO_wdt 0450-0450 : ACPI PM2_CNT_BLK 0454-0457 : pnp 00:08 0458-047f : pnp 00:07 0460-047f : iTCO_wdt.0.auto 0460-047f : iTCO_wdt 04d0-04d1 : pnp 00:06 0500-057f : pnp 00:07 0a00-0a7f : pnp 00:02 0ca2-0ca2 : IPI0001:00 0ca2-0ca2 : IPMI Address 1 0ca2-0ca2 : ipmi_si 0ca3-0ca3 : IPI0001:00 0ca3-0ca3 : IPMI Address 2 0ca3-0ca3 : ipmi_si 0cf8-0cff : PCI conf1 0d00-9fff : PCI Bus 0000:00 1180-119f : pnp 00:07 7000-7fff : PCI Bus 0000:04 7000-701f : 0000:04:00.1 7020-703f : 0000:04:00.0 8000-8fff : PCI Bus 0000:01 8000-8fff : PCI Bus 0000:02 8000-8fff : PCI Bus 0000:03 8000-80ff : 0000:03:00.0 8100-81ff : 0000:03:00.0 9000-901f : 0000:00:1f.3 9000-901f : i801_smbus 9020-903f : 0000:00:1f.2 9020-903f : ahci 9040-9043 : 0000:00:1f.2 9040-9043 : ahci 9050-9057 : 0000:00:1f.2 9050-9057 : ahci 9060-9063 : 0000:00:1f.2 9060-9063 : ahci 9070-9077 : 0000:00:1f.2 9070-9077 : ahci a000-ffff : PCI Bus 0000:80 e000-efff : PCI Bus 0000:83 e000-e07f : 0000:83:00.0 f000-ffff : PCI Bus 0000:82 f000-f07f : 0000:82:00.0
/* * Jailhouse, a Linux-based partitioning hypervisor * * Configuration for Linux inmate, 1 CPU, 74 MB RAM, ~1MB shmem, serial ports * * Copyright (c) Siemens AG, 2013-2015 * * Authors: * Jan Kiszka <jan.kis...@siemens.com> * * This work is licensed under the terms of the GNU GPL, version 2. See * the COPYING file in the top-level directory. */ #include <jailhouse/types.h> #include <jailhouse/cell-config.h> #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; struct jailhouse_memory mem_regions[10]; /* 10 */ struct jailhouse_cache cache_regions[1]; struct jailhouse_irqchip irqchips[1]; __u8 pio_bitmap[0x2000]; struct jailhouse_pci_device pci_devices[3]; struct jailhouse_pci_capability pci_caps[17]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, .revision = JAILHOUSE_CONFIG_REVISION, .name = "Inmate-2", .flags = JAILHOUSE_CELL_PASSIVE_COMMREG | JAILHOUSE_CELL_VIRTUAL_CONSOLE_PERMITTED, .cpu_set_size = sizeof(config.cpus), .num_memory_regions = ARRAY_SIZE(config.mem_regions), .num_cache_regions = ARRAY_SIZE(config.cache_regions), .num_irqchips = ARRAY_SIZE(config.irqchips), .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap), .num_pci_devices = ARRAY_SIZE(config.pci_devices), .num_pci_caps = ARRAY_SIZE(config.pci_caps), }, .cpus = { 0x380, }, .mem_regions = { /* low RAM */ { .phys_start = 0x104000000, .virt_start = 0, /* 0 */ .size = 0x00100000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA | JAILHOUSE_MEM_LOADABLE, }, /* communication region */ { .virt_start = 0x00100000, .size = 0x00001000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_COMM_REGION, }, //High ram virtual address appears to overlap all other mem regions. /* high RAM 1 */ { .phys_start = 0x104100000, .virt_start = 0x00200000, /* 0x00200000 x0b290000, */ .size = 0x28ff00000, /* 0xd7900000, 0x7f033000, 0x28ff00000, */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA | JAILHOUSE_MEM_LOADABLE, }, /* MemRegion: 7f233000-7f241fff : ACPI DMAR RMRR */ /* PCI device: 0a:00.0 */ /* PCI device: 81:00.0 */ /* PCI device: 00:1d.0 */ /* PCI device: 00:1a.0 */ { .phys_start = 0x7f233000, .virt_start = 0x7f233000, .size = 0xf000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, }, /* MemRegion: d7b00000-d7b00fff : xhci-hcd USB */ { .phys_start = 0xd7b00000, .virt_start = 0xd7b00000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: e8000000-efffffff : 0000:82:00.0 */ { .phys_start = 0xe8000000, .virt_start = 0xe8000000, .size = 0x8000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: f0000000-f1ffffff : 0000:82:00.0 */ { .phys_start = 0xf0000000, .virt_start = 0xf0000000, .size = 0x2000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fa000000-faffffff : 0000:82:00.0 */ { .phys_start = 0xfa000000, .virt_start = 0xfa000000, .size = 0x1000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, /* MemRegion: fb000000-fb07ffff : 0000:82:00.0 */ { .phys_start = 0xfb000000, .virt_start = 0xfb000000, .size = 0x80000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, }, }, .cache_regions = { { .start = 0, .size = 2, .type = JAILHOUSE_CACHE_L3, }, }, .irqchips = { /* IOAPIC */ { .address = 0xfec00000, .id = 0xff00, /* 0xff00 0x100ff, */ .pin_bitmap = { (1 << 3) | (1 << 4), }, }, }, .pio_bitmap = { [0x0000/8 ... 0x006f/8] = -1, /* [ 0/8 ... 0x2f7/8] = -1, */ [0x0070/8 ... 0x0077/8] = 0xfc, /*0xfc RTC0 added */ [0x0078/8 ... 0x02df/8] = -1, /* -1 */ // [0x02e0/8 ... 0x02f7/8] = -1, /* 0 */ [0x02f8/8 ... 0x02ff/8] = 0, /* serial2 */ [0x0300/8 ... 0x03af/8] = -1, /* ### -1 ### [ 0x300/8 ... 0x3f7/8] */ [0x03b0/8 ... 0x03df/8] = -1, /* VGA PCI Bus */ // [0x03e0/8 ... 0x03f7/8] = -1, /* -1 */ [0x03f8/8 ... 0x03ff/8] = 0, /* serial1 */ [0x0400/8 ... 0x0cf7/8] = -1, /* -1 */ [0x0cf8/8 ... 0x0cff/8] = -1, /* -1 PCI conf1 */ [0x0d00/8 ... 0x7fff/8] = -1, /* -1 */ [0x8000/8 ... 0xffff/8] = 0, }, .pci_devices = { /* PCIDevice: 82:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8200, .bar_mask = { 0xff000000, 0xf8000000, 0xffffffff, 0xfe000000, 0xffffffff, 0xffffff80, }, .caps_start = 0, .num_caps = 7, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 82:00.1 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 0, .domain = 0x0, .bdf = 0x8201, .bar_mask = { 0xffffc000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 7, .num_caps = 4, .num_msi_vectors = 1, .msi_64bits = 1, .num_msix_vectors = 0, .msix_region_size = 0x0, .msix_address = 0x0, }, /* PCIDevice: 0a:00.0 */ { .type = JAILHOUSE_PCI_TYPE_DEVICE, .iommu = 1, .domain = 0x0, .bdf = 0xa00, .bar_mask = { 0xffffe000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, .caps_start = 11, .num_caps = 6, .num_msi_vectors = 8, .msi_64bits = 1, .num_msix_vectors = 8, .msix_region_size = 0x1000, .msix_address = 0xd7b01000, }, }, .pci_caps = { /* PCIDevice: 82:00.0 */ /* PCIDevice: 83:00.0 */ { .id = 0x1, .start = 0x60, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x68, .len = 14, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0x78, .len = 60, .flags = 0, }, { .id = 0x9, .start = 0xb4, .len = 2, .flags = 0, }, { .id = 0x2 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0x4 | JAILHOUSE_PCI_EXT_CAP, .start = 0x128, .len = 4, .flags = 0, }, { .id = 0xb | JAILHOUSE_PCI_EXT_CAP, .start = 0x600, .len = 4, .flags = 0, }, /* PCIDevice: 82:00.1 */ /* PCIDevice: 83:00.1 */ { .id = 0x1, .start = 0x60, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x68, .len = 14, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0x78, .len = 60, .flags = 0, }, { .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, /* PCIDevice: 0a:00.0 */ /* PCIDevice: 81:00.0 */ { .id = 0x1, .start = 0x50, .len = 8, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x5, .start = 0x70, .len = 14, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x11, .start = 0x90, .len = 12, .flags = JAILHOUSE_PCICAPS_WRITE, }, { .id = 0x10, .start = 0xa0, .len = 60, .flags = 0, }, { .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, .start = 0x100, .len = 4, .flags = 0, }, { .id = 0x18 | JAILHOUSE_PCI_EXT_CAP, .start = 0x150, .len = 4, .flags = 0, }, } };