From abba110d97273c01d31cfd26f653e77dc5212005 Mon Sep 17 00:00:00 2001 From: Maxim Baryshnikov Date: Sun, 8 May 2016 10:59:22 +0200 Subject: [PATCH] jailhouse: configs: Change fiasco, novaboot and hpet config. Reserved memory layout for hypervisor was changed, so some correction were done in confs. Conflicts: configs/novabox.c --- configs/fiasco-demo.c | 14 +- configs/hpet-inmate-config.c | 2 +- configs/novabox.c | 937 +++++++++++++++++++++++++++++++++++ 3 files changed, 945 insertions(+), 8 deletions(-) create mode 100644 configs/novabox.c diff --git a/configs/fiasco-demo.c b/configs/fiasco-demo.c index 1414995..d7e9e6f 100755 --- a/configs/fiasco-demo.c +++ b/configs/fiasco-demo.c @@ -46,17 +46,17 @@ struct { /* low RAM */ { .phys_start = 0x3b600000, .virt_start = 0, - .size = 0x3bff000, + .size = 0x3c00000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA | JAILHOUSE_MEM_LOADABLE, }, - /* MemRegion: fee00000-feefffff : localAPIC */ + /* MemRegion: fec00000-fecfffff : localAPIC */ { - .phys_start = 0xfee00000, - .virt_start = 0xfee00000, - .size = 0x100000, + .phys_start = 0xfec00000, + .virt_start = 0xfec00000, + .size = 0x10000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_DMA, }, }, @@ -74,9 +74,9 @@ struct { [ 0x89/8 ... 0x99/8] = -1, [ 0xA0/8 ... 0xA8/8] = 0xfc, /* PIC Slave 0xA0 0xA1 */ [ 0xA9/8 ... 0x3f7/8] = -1, - [ 0x3f8/8 ... 0x3ff/8] = 0, /* serial1 */ + [ 0x3f8/8 ... 0x3ff/8] = 0, /* serial0 */ [ 0x400/8 ... 0xe00f/8] = -1, - [0xe010/8 ... 0xe017/8] = 0, /* OXPCIe952 serial1 */ + [0xe010/8 ... 0xe017/8] = -1, /* OXPCIe952 serial1 */ [0xe018/8 ... 0xffff/8] = -1, }, diff --git a/configs/hpet-inmate-config.c b/configs/hpet-inmate-config.c index 553be63..96ec18c 100755 --- a/configs/hpet-inmate-config.c +++ b/configs/hpet-inmate-config.c @@ -90,7 +90,7 @@ struct { [ 0/8 ... 0x3f7/8] = -1, [ 0x3f8/8 ... 0x3ff/8] = 0, /* serial1 */ [ 0x400/8 ... 0xe00f/8] = -1, - [0xe010/8 ... 0xe017/8] = 0, /* OXPCIe952 serial1 */ + [0xe010/8 ... 0xe017/8] = -1, /* OXPCIe952 serial1 */ [0xe018/8 ... 0xffff/8] = -1, }, }; \ No newline at end of file diff --git a/configs/novabox.c b/configs/novabox.c new file mode 100644 index 0000000..18656ff --- /dev/null +++ b/configs/novabox.c @@ -0,0 +1,937 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Copyright (c) Siemens AG, 2014, 2015 + * + * 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 Dell Inc. OptiPlex 7010 + * created with '/usr/local/libexec/jailhouse/jailhouse config create -r . novabox.c' + * + * NOTE: This config expects the following to be appended to your kernel cmdline + * "memmap=0x7c00000$0x37600000" + */ + +#include +#include + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) + +struct { + struct jailhouse_system header; + __u64 cpus[1]; + struct jailhouse_memory mem_regions[45]; + struct jailhouse_irqchip irqchips[1]; + __u8 pio_bitmap[0x2000]; + struct jailhouse_pci_device pci_devices[16]; + struct jailhouse_pci_capability pci_caps[29]; +} __attribute__((packed)) config = { + .header = { + .signature = JAILHOUSE_SYSTEM_SIGNATURE, + .hypervisor_memory = { + .phys_start = 0x37600000, + .size = 0x4000000, + }, + .platform_info.x86 = { + .mmconfig_base = 0xf8000000, + .mmconfig_end_bus = 0x3f, + .pm_timer_address = 0x408, + .iommu_base = { + 0xfed90000, + 0xfed91000, + }, + }, + .device_limit = 128, + .interrupt_limit = 256, + .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 = { + 0x000000000000000f, + }, + + .mem_regions = { + /* MemRegion: 00000000-0009d7ff : System RAM */ + { + .phys_start = 0x0, + .virt_start = 0x0, + .size = 0x9e000, + .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-00ffffff : System RAM */ + { + .phys_start = 0x100000, + .virt_start = 0x100000, + .size = 0xf00000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 01000000-02ffffff : Kernel */ + { + .phys_start = 0x1000000, + .virt_start = 0x1000000, + .size = 0x2000000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 03000000-1fffffff : System RAM */ + { + .phys_start = 0x3000000, + .virt_start = 0x3000000, + .size = 0x1d000000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 20200000-375fffff : System RAM */ + { + .phys_start = 0x20200000, + .virt_start = 0x20200000, + .size = 0x17400000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 3f200000-40003fff : System RAM */ + { + .phys_start = 0x3f200000, + .virt_start = 0x3f200000, + .size = 0xe04000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 40005000-d9b4dfff : System RAM */ + { + .phys_start = 0x40005000, + .virt_start = 0x40005000, + .size = 0x99b49000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: da174000-da3dbfff : ACPI Non-volatile Storage */ + { + .phys_start = 0xda174000, + .virt_start = 0xda174000, + .size = 0x268000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: da3dc000-da3e6fff : ACPI Tables */ + { + .phys_start = 0xda3dc000, + .virt_start = 0xda3dc000, + .size = 0xb000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: da3e7000-da3f3fff : ACPI Non-volatile Storage */ + { + .phys_start = 0xda3e7000, + .virt_start = 0xda3e7000, + .size = 0xd000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: da3f4000-da3f8fff : ACPI Tables */ + { + .phys_start = 0xda3f4000, + .virt_start = 0xda3f4000, + .size = 0x5000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: da3f9000-da43bfff : ACPI Non-volatile Storage */ + { + .phys_start = 0xda3f9000, + .virt_start = 0xda3f9000, + .size = 0x43000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: da43c000-daffffff : System RAM */ + { + .phys_start = 0xda43c000, + .virt_start = 0xda43c000, + .size = 0xbc4000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: db000000-db7fffff : RAM buffer */ + { + .phys_start = 0xdb000000, + .virt_start = 0xdb000000, + .size = 0x800000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: dfa00000-dfa00fff : pnp 00:08 */ + { + .phys_start = 0xdfa00000, + .virt_start = 0xdfa00000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: e0000000-efffffff : 0000:00:02.0 */ + { + .phys_start = 0xe0000000, + .virt_start = 0xe0000000, + .size = 0x10000000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7800000-f7bfffff : 0000:00:02.0 */ + { + .phys_start = 0xf7800000, + .virt_start = 0xf7800000, + .size = 0x400000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7c00000-f7c00fff : 0000:02:00.1 */ + { + .phys_start = 0xf7c00000, + .virt_start = 0xf7c00000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7c01000-f7c01fff : 0000:02:00.1 */ + { + .phys_start = 0xf7c01000, + .virt_start = 0xf7c01000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7c02000-f7c02fff : 0000:02:00.0 */ + { + .phys_start = 0xf7c02000, + .virt_start = 0xf7c02000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7c03000-f7c03fff : 0000:02:00.0 */ + { + .phys_start = 0xf7c03000, + .virt_start = 0xf7c03000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d00000-f7d1ffff : 0000:00:19.0 */ + { + .phys_start = 0xf7d00000, + .virt_start = 0xf7d00000, + .size = 0x20000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d20000-f7d2ffff : 0000:00:14.0 */ + { + .phys_start = 0xf7d20000, + .virt_start = 0xf7d20000, + .size = 0x10000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d30000-f7d33fff : 0000:00:1b.0 */ + { + .phys_start = 0xf7d30000, + .virt_start = 0xf7d30000, + .size = 0x4000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d35000-f7d350ff : 0000:00:1f.3 */ + { + .phys_start = 0xf7d35000, + .virt_start = 0xf7d35000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d36000-f7d367ff : ahci */ + { + .phys_start = 0xf7d36000, + .virt_start = 0xf7d36000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d37000-f7d373ff : ehci_hcd */ + { + .phys_start = 0xf7d37000, + .virt_start = 0xf7d37000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d38000-f7d383ff : ehci_hcd */ + { + .phys_start = 0xf7d38000, + .virt_start = 0xf7d38000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d39000-f7d39fff : 0000:00:19.0 */ + { + .phys_start = 0xf7d39000, + .virt_start = 0xf7d39000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: f7d3c000-f7d3c00f : 0000:00:16.0 */ + { + .phys_start = 0xf7d3c000, + .virt_start = 0xf7d3c000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed00000-fed003ff : HPET 0 */ + { + .phys_start = 0xfed00000, + .virt_start = 0xfed00000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed10000-fed17fff : pnp 00:08 */ + { + .phys_start = 0xfed10000, + .virt_start = 0xfed10000, + .size = 0x8000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed18000-fed18fff : pnp 00:08 */ + { + .phys_start = 0xfed18000, + .virt_start = 0xfed18000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed19000-fed19fff : pnp 00:08 */ + { + .phys_start = 0xfed19000, + .virt_start = 0xfed19000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed20000-fed3ffff : pnp 00:08 */ + { + .phys_start = 0xfed20000, + .virt_start = 0xfed20000, + .size = 0x20000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed40000-fed44fff : pnp 00:00 */ + { + .phys_start = 0xfed40000, + .virt_start = 0xfed40000, + .size = 0x5000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed45000-fed8ffff : pnp 00:08 */ + { + .phys_start = 0xfed45000, + .virt_start = 0xfed45000, + .size = 0x4b000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed90000-fed93fff : pnp 00:08 */ + { + .phys_start = 0xfed90000, + .virt_start = 0xfed90000, + .size = 0x4000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 100000000-11e5fffff : System RAM */ + { + .phys_start = 0x100000000, + .virt_start = 0x100000000, + .size = 0x1e600000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 11e600000-11fffffff : RAM buffer */ + { + .phys_start = 0x11e600000, + .virt_start = 0x11e600000, + .size = 0x1a00000, + .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: da0ed000-da112fff : ACPI DMAR RMRR */ + /* PCI device: 00:1d.0 */ + /* PCI device: 00:1a.0 */ + /* PCI device: 00:14.0 */ + { + .phys_start = 0xda0ed000, + .virt_start = 0xda0ed000, + .size = 0x26000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: db800000-df9fffff : ACPI DMAR RMRR */ + /* PCI device: 00:02.0 */ + { + .phys_start = 0xdb800000, + .virt_start = 0xdb800000, + .size = 0x4200000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 3f000000-3f1fffff : JAILHOUSE Inmate Memory */ + { + .phys_start = 0x3b600000, + .virt_start = 0x3b600000, + .size = 0x3C00000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + }, + + .irqchips = { + /* IOAPIC 2, GSI base 0 */ + { + .address = 0xfec00000, + .id = 0x1f0f8, + .pin_bitmap = 0xffffff, + }, + }, + + .pio_bitmap = { + [ 0/8 ... 0x3f/8] = -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 */ + [ 0x78/8 ... 0x7f/7] = -1, + [ 0x80/8 ... 0x87/8] = 0xfe, /* Linux: native_io_delay() */ + [ 0x88/8 ... 0xec/8] = -1, + [ 0xed/8 ... 0xf5/8] = 0xfe, /*port 0xed delay experimental*/ + [ 0xf6/8 ... 0x2f7/8] = -1, + [ 0x2f8/8 ... 0x2ff/8] = 0,/*serial 1*/ + [ 0x300/8 ... 0x3af/8] = -1, + [ 0x3b0/8 ... 0x3df/8] = 0x00, /* VGA */ + [ 0x3e0/8 ... 0x3f7/8] = -1, + [ 0x3f8/8 ... 0x3ff/8] = -1,/*serial 0*/ + [ 0x400/8 ... 0xeff/8] = -1, + [ 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 = 1, + .num_msi_vectors = 0, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:02.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 0, + .domain = 0x0, + .bdf = 0x10, + .bar_mask = { + 0xffc00000, 0xffffffff, 0x00000000, + 0xf0000000, 0xffffffff, 0x00000000, + }, + .caps_start = 1, + .num_caps = 3, + .num_msi_vectors = 1, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:14.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xa0, + .bar_mask = { + 0xffff0000, 0xffffffff, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 4, + .num_caps = 2, + .num_msi_vectors = 8, + .msi_64bits = 1, + .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 = 6, + .num_caps = 2, + .num_msi_vectors = 1, + .msi_64bits = 1, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:19.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xc8, + .bar_mask = { + 0xfffe0000, 0xfffff000, 0xffffffe0, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 8, + .num_caps = 3, + .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 = 11, + .num_caps = 3, + .num_msi_vectors = 0, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:1b.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xd8, + .bar_mask = { + 0xffffc000, 0xffffffff, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 14, + .num_caps = 3, + .num_msi_vectors = 1, + .msi_64bits = 1, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:1c.0 */ + { + .type = JAILHOUSE_PCI_TYPE_BRIDGE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xe0, + .bar_mask = { + 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 17, + .num_caps = 4, + .num_msi_vectors = 1, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:1c.2 */ + { + .type = JAILHOUSE_PCI_TYPE_BRIDGE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xe2, + .bar_mask = { + 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 17, + .num_caps = 4, + .num_msi_vectors = 1, + .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 = 11, + .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 = 21, + .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 = 0, + .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 = 22, + .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, 0x00000000, 0xffffffe0, + }, + .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: 02:00.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x200, + .bar_mask = { + 0xfffffff8, 0xfffff000, 0x00000000, + 0x00000000, 0x00000000, 0xfffff000, + }, + .caps_start = 26, + .num_caps = 3, + .num_msi_vectors = 8, + .msi_64bits = 1, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 02:00.1 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x201, + .bar_mask = { + 0xfffffff8, 0xfffff000, 0x00000000, + 0x00000000, 0x00000000, 0xfffff000, + }, + .caps_start = 26, + .num_caps = 3, + .num_msi_vectors = 8, + .msi_64bits = 1, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + }, + + .pci_caps = { + /* PCIDevice: 00:00.0 */ + /* PCIDevice: 00:1f.0 */ + { + .id = 0x9, + .start = 0xe0, + .len = 2, + .flags = 0, + }, + /* PCIDevice: 00:02.0 */ + { + .id = 0x5, + .start = 0x90, + .len = 10, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x1, + .start = 0xd0, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x13, + .start = 0xa4, + .len = 2, + .flags = 0, + }, + /* PCIDevice: 00:14.0 */ + { + .id = 0x1, + .start = 0x70, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x5, + .start = 0x80, + .len = 14, + .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:19.0 */ + { + .id = 0x1, + .start = 0xc8, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x5, + .start = 0xd0, + .len = 14, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x13, + .start = 0xe0, + .len = 2, + .flags = 0, + }, + /* 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:1b.0 */ + { + .id = 0x1, + .start = 0x50, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x5, + .start = 0x60, + .len = 14, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x10, + .start = 0x70, + .len = 2, + .flags = 0, + }, + /* PCIDevice: 00:1c.0 */ + /* PCIDevice: 00:1c.2 */ + { + .id = 0x10, + .start = 0x40, + .len = 2, + .flags = 0, + }, + { + .id = 0x5, + .start = 0x80, + .len = 10, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0xd, + .start = 0x90, + .len = 2, + .flags = 0, + }, + { + .id = 0x1, + .start = 0xa0, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + /* PCIDevice: 00:1e.0 */ + { + .id = 0xd, + .start = 0x50, + .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: 02:00.0 */ + /* PCIDevice: 02:00.1 */ + { + .id = 0x5, + .start = 0x50, + .len = 14, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x1, + .start = 0x78, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x10, + .start = 0x80, + .len = 2, + .flags = 0, + }, + }, +}; + -- 2.39.2