From: Jan Kiszka <jan.kis...@siemens.com> This requires dedicated configs for the system and the non-root Linux cell. We only add them for 'latest' because 0.9.1 is lacking the required EFI framebuffer and further fixes which are needed for this target. Thus, NUC6CAY will be --latest only.
Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- .../jailhouse/files/linux-nuc6cay-demo.c | 94 ++ recipes-jailhouse/jailhouse/files/nuc6cay.c | 1234 ++++++++++++++++++++ recipes-jailhouse/jailhouse/jailhouse.inc | 2 +- recipes-jailhouse/jailhouse/jailhouse_latest.bb | 6 + 4 files changed, 1335 insertions(+), 1 deletion(-) create mode 100644 recipes-jailhouse/jailhouse/files/linux-nuc6cay-demo.c create mode 100644 recipes-jailhouse/jailhouse/files/nuc6cay.c diff --git a/recipes-jailhouse/jailhouse/files/linux-nuc6cay-demo.c b/recipes-jailhouse/jailhouse/files/linux-nuc6cay-demo.c new file mode 100644 index 0000000..f4e0f65 --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/linux-nuc6cay-demo.c @@ -0,0 +1,94 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Configuration for Linux inmate, 2 CPUs, 74 MB RAM, ~1MB shmem, serial ports + * + * Copyright (c) Siemens AG, 2013-2018 + * + * 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[4]; + __u8 pio_bitmap[0x2000]; + struct jailhouse_pci_device pci_devices[1]; +} __attribute__((packed)) config = { + .cell = { + .signature = JAILHOUSE_CELL_DESC_SIGNATURE, + .revision = JAILHOUSE_CONFIG_REVISION, + .name = "linux-nuc6cay-demo", + .flags = JAILHOUSE_CELL_PASSIVE_COMMREG | + JAILHOUSE_CELL_VIRTUAL_CONSOLE_PERMITTED, + + .cpu_set_size = sizeof(config.cpus), + .num_memory_regions = ARRAY_SIZE(config.mem_regions), + .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap), + .num_pci_devices = ARRAY_SIZE(config.pci_devices), + }, + + .cpus = { + 0xc, + }, + + .mem_regions = { + /* low RAM */ { + .phys_start = 0x3a600000, + .virt_start = 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 */ { + .phys_start = 0x3a700000, + .virt_start = 0x00200000, + .size = 0x4a00000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA | + JAILHOUSE_MEM_LOADABLE, + }, + /* IVSHMEM shared memory region */ + { + .phys_start = 0x3f100000, + .virt_start = 0x3f100000, + .size = 0xff000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_ROOTSHARED, + }, + }, + + .pio_bitmap = { + [ 0/8 ... 0xffff/8] = -1, + }, + + .pci_devices = { + { + .type = JAILHOUSE_PCI_TYPE_IVSHMEM, + .domain = 0x0, + .bdf = 0x10 << 3, + .bar_mask = { + 0xffffff00, 0xffffffff, 0x00000000, + 0x00000000, 0xffffffe0, 0xffffffff, + }, + .num_msix_vectors = 1, + .shmem_region = 3, + .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH, + }, + }, +}; diff --git a/recipes-jailhouse/jailhouse/files/nuc6cay.c b/recipes-jailhouse/jailhouse/files/nuc6cay.c new file mode 100644 index 0000000..31191bb --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/nuc6cay.c @@ -0,0 +1,1234 @@ +/* + * 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. + */ + +#include <jailhouse/types.h> +#include <jailhouse/cell-config.h> + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) + +struct { + struct jailhouse_system header; + __u64 cpus[1]; + struct jailhouse_memory mem_regions[54]; + struct jailhouse_irqchip irqchips[1]; + __u8 pio_bitmap[0x2000]; + struct jailhouse_pci_device pci_devices[21]; + struct jailhouse_pci_capability pci_caps[53]; +} __attribute__((packed)) config = { + .header = { + .signature = JAILHOUSE_SYSTEM_SIGNATURE, + .revision = JAILHOUSE_CONFIG_REVISION, + .flags = JAILHOUSE_SYS_VIRTUAL_DEBUG_CONSOLE, + .hypervisor_memory = { + .phys_start = 0x3a000000, + .size = 0x600000, + }, + .debug_console = { + .address = 0x80000000, + .size = 0x7f0000, + .type = JAILHOUSE_CON_TYPE_EFIFB, + .flags = JAILHOUSE_CON_ACCESS_MMIO | + JAILHOUSE_CON_FB_1920x1080, + }, + .platform_info = { + .pci_mmconfig_base = 0xe0000000, + .pci_mmconfig_end_bus = 0xff, + .x86 = { + .pm_timer_address = 0x408, + .vtd_interrupt_limit = 256, + .iommu_units = { + { + .base = 0xfed64000, + .size = 0x1000, + }, + { + .base = 0xfed65000, + .size = 0x1000, + }, + }, + }, + }, + .root_cell = { + .name = "NUC6CAY", + .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 = { + 0xf, + }, + + .mem_regions = { + /* MemRegion: 00000000-0003efff : System RAM */ + { + .phys_start = 0x0, + .virt_start = 0x0, + .size = 0x3f000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 00040000-0009dfff : System RAM */ + { + .phys_start = 0x40000, + .virt_start = 0x40000, + .size = 0x5e000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 000f0000-0fffffff : System RAM */ + { + .phys_start = 0xf0000, + .virt_start = 0xf0000, + .size = 0xff10000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 12151000-39ffffff : System RAM */ + { + .phys_start = 0x12151000, + .virt_start = 0x12151000, + .size = 0x27eaf000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 3e200000-77709fff : System RAM */ + { + .phys_start = 0x3e200000, + .virt_start = 0x3e200000, + .size = 0x3950a000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 7982d000-79847fff : ACPI Tables */ + { + .phys_start = 0x7982d000, + .virt_start = 0x7982d000, + .size = 0x1b000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 79848000-798a7fff : ACPI Non-volatile Storage */ + { + .phys_start = 0x79848000, + .virt_start = 0x79848000, + .size = 0x60000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 798a8000-79bd1fff : reserved but used */ + { + .phys_start = 0x798a8000, + .virt_start = 0x798a8000, + .size = 0x32a000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 79bd2000-79c36fff : Unknown E820 type */ + { + .phys_start = 0x79bd2000, + .virt_start = 0x79bd2000, + .size = 0x65000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 79c37000-79fb9fff : System RAM */ + { + .phys_start = 0x79c37000, + .virt_start = 0x79c37000, + .size = 0x383000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 79fba000-79fbafff : ACPI Non-volatile Storage */ + { + .phys_start = 0x79fba000, + .virt_start = 0x79fba000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 79fe5000-7a9defff : System RAM */ + { + .phys_start = 0x79fe5000, + .virt_start = 0x79fe5000, + .size = 0x9fa000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 7a9e1000-7affffff : System RAM */ + { + .phys_start = 0x7a9e1000, + .virt_start = 0x7a9e1000, + .size = 0x61f000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 80000000-8fffffff : 0000:00:02.0 */ + { + .phys_start = 0x80000000, + .virt_start = 0x80000000, + .size = 0x10000000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 90000000-90ffffff : 0000:00:02.0 */ + { + .phys_start = 0x90000000, + .virt_start = 0x90000000, + .size = 0x1000000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91000000-910fffff : ICH HD audio */ + { + .phys_start = 0x91000000, + .virt_start = 0x91000000, + .size = 0x100000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91101000-91103fff : r8169 */ + { + .phys_start = 0x91101000, + .virt_start = 0x91101000, + .size = 0x3000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91104000-91104fff : r8169 */ + { + .phys_start = 0x91104000, + .virt_start = 0x91104000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91200000-91201fff : 0000:02:00.0 */ + { + .phys_start = 0x91200000, + .virt_start = 0x91200000, + .size = 0x2000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91300000-91300fff : rtsx_pci */ + { + .phys_start = 0x91300000, + .virt_start = 0x91300000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91400000-9140ffff : xhci-hcd */ + { + .phys_start = 0x91400000, + .virt_start = 0x91400000, + .size = 0x10000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91410000-91413fff : ICH HD audio */ + { + .phys_start = 0x91410000, + .virt_start = 0x91410000, + .size = 0x4000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91414000-91415fff : ahci */ + { + .phys_start = 0x91414000, + .virt_start = 0x91414000, + .size = 0x2000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91416000-914160ff : 0000:00:1f.1 */ + { + .phys_start = 0x91416000, + .virt_start = 0x91416000, + .size = 0x100, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91417000-91417fff : 0000:00:1a.0 */ + { + .phys_start = 0x91417000, + .virt_start = 0x91417000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91418000-91418fff : 0000:00:1a.0 */ + { + .phys_start = 0x91418000, + .virt_start = 0x91418000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91419000-91419fff : 0000:00:19.2 */ + { + .phys_start = 0x91419000, + .virt_start = 0x91419000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 9141a000-9141afff : lpss_dev, lpss_priv, idma64.4 */ + { + .phys_start = 0x9141a000, + .virt_start = 0x9141a000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 9141b000-9141bfff : 0000:00:19.1 */ + { + .phys_start = 0x9141b000, + .virt_start = 0x9141b000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 9141c000-9141cfff : lpss_dev, lpss_priv, idma64.3 */ + { + .phys_start = 0x9141c000, + .virt_start = 0x9141c000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 9141d000-9141dfff : 0000:00:19.0 */ + { + .phys_start = 0x9141d000, + .virt_start = 0x9141d000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 9141e000-9141efff : lpss_dev, lpss_priv, idma64.2 */ + { + .phys_start = 0x9141e000, + .virt_start = 0x9141e000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 9141f000-9141ffff : 0000:00:18.0 */ + { + .phys_start = 0x9141f000, + .virt_start = 0x9141f000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91420000-91420fff : serial, lpss_priv, idma64.1 */ + { + .phys_start = 0x91420000, + .virt_start = 0x91420000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91421000-91421fff : 0000:00:16.0 */ + { + .phys_start = 0x91421000, + .virt_start = 0x91421000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91422000-91422fff : lpss_dev, lpss_priv, idma64.0 */ + { + .phys_start = 0x91422000, + .virt_start = 0x91422000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91423000-914237ff : ahci */ + { + .phys_start = 0x91423000, + .virt_start = 0x91423000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91424000-914240ff : ahci */ + { + .phys_start = 0x91424000, + .virt_start = 0x91424000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 91427000-91427fff : mei_me */ + { + .phys_start = 0x91427000, + .virt_start = 0x91427000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fea00000-feafffff : pnp 00:03 */ + { + .phys_start = 0xfea00000, + .virt_start = 0xfea00000, + .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: fed03000-fed03fff : pnp 00:03 */ + { + .phys_start = 0xfed03000, + .virt_start = 0xfed03000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed06000-fed06fff : pnp 00:03 */ + { + .phys_start = 0xfed06000, + .virt_start = 0xfed06000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed08000-fed09fff : pnp 00:03 */ + { + .phys_start = 0xfed08000, + .virt_start = 0xfed08000, + .size = 0x2000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed1c000-fed1cfff : pnp 00:03 */ + { + .phys_start = 0xfed1c000, + .virt_start = 0xfed1c000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed40000-fed44fff : MSFT0101:00 */ + { + .phys_start = 0xfed40000, + .virt_start = 0xfed40000, + .size = 0x5000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: fed80000-fedbffff : pnp 00:03 */ + { + .phys_start = 0xfed80000, + .virt_start = 0xfed80000, + .size = 0x40000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* MemRegion: 100000000-127dfffff : System RAM */ + { + .phys_start = 0x100000000, + .virt_start = 0x100000000, + .size = 0x27e00000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 127e00000-129ffffff : Kernel */ + { + .phys_start = 0x127e00000, + .virt_start = 0x127e00000, + .size = 0x2200000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 12a000000-27fffffff : System RAM */ + { + .phys_start = 0x12a000000, + .virt_start = 0x12a000000, + .size = 0x156000000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 797c8000-797e7fff : ACPI DMAR RMRR */ + /* PCI device: 00:15.0 */ + { + .phys_start = 0x797c8000, + .virt_start = 0x797c8000, + .size = 0x20000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 7b800000-7fffffff : ACPI DMAR RMRR */ + /* PCI device: 00:02.0 */ + { + .phys_start = 0x7b800000, + .virt_start = 0x7b800000, + .size = 0x4800000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA, + }, + /* MemRegion: 3a600000-3f0fffff : JAILHOUSE Inmate Memory */ + { + .phys_start = 0x3a600000, + .virt_start = 0x3a600000, + .size = 0x4b00000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* IVSHMEM shared memory region */ + { + .phys_start = 0x3f100000, + .virt_start = 0x3f100000, + .size = 0xff000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + }, + + .irqchips = { + /* IOAPIC 1, GSI base 0 */ + { + .address = 0xfec00000, + .id = 0x1faf8, + .pin_bitmap = { + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff + }, + }, + }, + + .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 ... 0x3af/8] = -1, + [ 0x3b0/8 ... 0x3df/8] = 0x00, /* VGA */ + [ 0x3e0/8 ... 0x3ff/8] = -1, + [ 0x400/8 ... 0x47f/8] = 0, /* HACK: ACPI */ + [ 0x480/8 ... 0xcff/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 = 0, + .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 = { + 0xff000000, 0xffffffff, 0xf0000000, + 0xffffffff, 0xffffffc0, 0x00000000, + }, + .caps_start = 0, + .num_caps = 7, + .num_msi_vectors = 1, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:0e.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x70, + .bar_mask = { + 0xffffc000, 0xffffffff, 0x00000000, + 0x00000000, 0xfff00000, 0xffffffff, + }, + .caps_start = 7, + .num_caps = 5, + .num_msi_vectors = 1, + .msi_64bits = 1, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:0f.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x78, + .bar_mask = { + 0xfffff000, 0xffffffff, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 12, + .num_caps = 3, + .num_msi_vectors = 1, + .msi_64bits = 1, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:12.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x90, + .bar_mask = { + 0xffffe000, 0xffffff00, 0xfffffff8, + 0xfffffffc, 0xffffffe0, 0xfffff800, + }, + .caps_start = 15, + .num_caps = 3, + .num_msi_vectors = 1, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:13.0 */ + { + .type = JAILHOUSE_PCI_TYPE_BRIDGE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x98, + .bar_mask = { + 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 18, + .num_caps = 9, + .num_msi_vectors = 1, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:13.1 */ + { + .type = JAILHOUSE_PCI_TYPE_BRIDGE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x99, + .bar_mask = { + 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 18, + .num_caps = 9, + .num_msi_vectors = 1, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:13.2 */ + { + .type = JAILHOUSE_PCI_TYPE_BRIDGE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x9a, + .bar_mask = { + 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 18, + .num_caps = 9, + .num_msi_vectors = 1, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:15.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xa8, + .bar_mask = { + 0xffff0000, 0xffffffff, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 27, + .num_caps = 3, + .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 = { + 0xfffff000, 0xffffffff, 0xfffff000, + 0xffffffff, 0x00000000, 0x00000000, + }, + .caps_start = 30, + .num_caps = 2, + .num_msi_vectors = 0, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:18.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xc0, + .bar_mask = { + 0xfffff000, 0xffffffff, 0xfffff000, + 0xffffffff, 0x00000000, 0x00000000, + }, + .caps_start = 30, + .num_caps = 2, + .num_msi_vectors = 0, + .msi_64bits = 0, + .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 = { + 0xfffff000, 0xffffffff, 0xfffff000, + 0xffffffff, 0x00000000, 0x00000000, + }, + .caps_start = 30, + .num_caps = 2, + .num_msi_vectors = 0, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:19.1 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xc9, + .bar_mask = { + 0xfffff000, 0xffffffff, 0xfffff000, + 0xffffffff, 0x00000000, 0x00000000, + }, + .caps_start = 30, + .num_caps = 2, + .num_msi_vectors = 0, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:19.2 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xca, + .bar_mask = { + 0xfffff000, 0xffffffff, 0xfffff000, + 0xffffffff, 0x00000000, 0x00000000, + }, + .caps_start = 30, + .num_caps = 2, + .num_msi_vectors = 0, + .msi_64bits = 0, + .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 = { + 0xfffff000, 0xffffffff, 0xfffff000, + 0xffffffff, 0x00000000, 0x00000000, + }, + .caps_start = 30, + .num_caps = 2, + .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 = 0, + .num_msi_vectors = 0, + .msi_64bits = 0, + .num_msix_vectors = 0, + .msix_region_size = 0x0, + .msix_address = 0x0, + }, + /* PCIDevice: 00:1f.1 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0xf9, + .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: 01:00.0 */ + { + .type = JAILHOUSE_PCI_TYPE_DEVICE, + .iommu = 1, + .domain = 0x0, + .bdf = 0x100, + .bar_mask = { + 0xfffff000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 32, + .num_caps = 5, + .num_msi_vectors = 1, + .msi_64bits = 1, + .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 = { + 0xffffe000, 0xffffffff, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .caps_start = 37, + .num_caps = 7, + .num_msi_vectors = 1, + .msi_64bits = 1, + .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 = { + 0xffffff00, 0x00000000, 0xfffff000, + 0xffffffff, 0xffffc000, 0xffffffff, + }, + .caps_start = 44, + .num_caps = 9, + .num_msi_vectors = 1, + .msi_64bits = 1, + .num_msix_vectors = 4, + .msix_region_size = 0x1000, + .msix_address = 0x91100000, + }, + /* IVSHMEM: 00:10.0 */ + { + .type = JAILHOUSE_PCI_TYPE_IVSHMEM, + .iommu = 1, + .domain = 0x0, + .bdf = 0x10 << 3, + .bar_mask = { + 0xffffff00, 0xffffffff, 0x00000000, + 0x00000000, 0xffffffe0, 0xffffffff, + }, + .num_msix_vectors = 1, + .shmem_region = 53, + .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH, + }, + }, + + .pci_caps = { + /* PCIDevice: 00:02.0 */ + { + .id = 0x9, + .start = 0x40, + .len = 2, + .flags = 0, + }, + { + .id = 0x10, + .start = 0x70, + .len = 60, + .flags = 0, + }, + { + .id = 0x5, + .start = 0xac, + .len = 10, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x1, + .start = 0xd0, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x1b | JAILHOUSE_PCI_EXT_CAP, + .start = 0x100, + .len = 4, + .flags = 0, + }, + { + .id = 0xf | JAILHOUSE_PCI_EXT_CAP, + .start = 0x200, + .len = 4, + .flags = 0, + }, + { + .id = 0x13 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x300, + .len = 4, + .flags = 0, + }, + /* PCIDevice: 00:0e.0 */ + { + .id = 0x1, + .start = 0x50, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x9, + .start = 0x80, + .len = 2, + .flags = 0, + }, + { + .id = 0x5, + .start = 0x60, + .len = 14, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x10, + .start = 0x70, + .len = 20, + .flags = 0, + }, + { + .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x100, + .len = 4, + .flags = 0, + }, + /* PCIDevice: 00:0f.0 */ + { + .id = 0x1, + .start = 0x50, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x5, + .start = 0x8c, + .len = 14, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x9, + .start = 0xa4, + .len = 2, + .flags = 0, + }, + /* PCIDevice: 00:12.0 */ + { + .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, + }, + /* PCIDevice: 00:13.0 */ + /* PCIDevice: 00:13.1 */ + /* PCIDevice: 00:13.2 */ + { + .id = 0x10, + .start = 0x40, + .len = 60, + .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, + }, + { + .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x100, + .len = 4, + .flags = 0, + }, + { + .id = 0xd | JAILHOUSE_PCI_EXT_CAP, + .start = 0x140, + .len = 4, + .flags = 0, + }, + { + .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x150, + .len = 4, + .flags = 0, + }, + { + .id = 0x1e | JAILHOUSE_PCI_EXT_CAP, + .start = 0x200, + .len = 4, + .flags = 0, + }, + { + .id = 0x0 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x220, + .len = 4, + .flags = 0, + }, + /* PCIDevice: 00:15.0 */ + { + .id = 0x1, + .start = 0x70, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x5, + .start = 0x80, + .len = 14, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x9, + .start = 0x90, + .len = 2, + .flags = 0, + }, + /* PCIDevice: 00:16.0 */ + /* PCIDevice: 00:18.0 */ + /* PCIDevice: 00:19.0 */ + /* PCIDevice: 00:19.1 */ + /* PCIDevice: 00:19.2 */ + /* PCIDevice: 00:1a.0 */ + { + .id = 0x1, + .start = 0x80, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x9, + .start = 0x90, + .len = 2, + .flags = 0, + }, + /* PCIDevice: 01: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 = 0x70, + .len = 60, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x100, + .len = 4, + .flags = 0, + }, + { + .id = 0x3 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x140, + .len = 4, + .flags = 0, + }, + /* PCIDevice: 02:00.0 */ + { + .id = 0x1, + .start = 0xc8, + .len = 8, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x5, + .start = 0xd0, + .len = 14, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x10, + .start = 0x40, + .len = 60, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .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 = 0x18 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x14c, + .len = 4, + .flags = 0, + }, + { + .id = 0x1e | JAILHOUSE_PCI_EXT_CAP, + .start = 0x154, + .len = 4, + .flags = 0, + }, + /* PCIDevice: 03: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 = 0x70, + .len = 60, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x11, + .start = 0xb0, + .len = 12, + .flags = JAILHOUSE_PCICAPS_WRITE, + }, + { + .id = 0x1 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x100, + .len = 4, + .flags = 0, + }, + { + .id = 0x2 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x140, + .len = 4, + .flags = 0, + }, + { + .id = 0x3 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x160, + .len = 4, + .flags = 0, + }, + { + .id = 0x18 | JAILHOUSE_PCI_EXT_CAP, + .start = 0x170, + .len = 4, + .flags = 0, + }, + { + .id = 0x1e | JAILHOUSE_PCI_EXT_CAP, + .start = 0x178, + .len = 4, + .flags = 0, + }, + }, +}; diff --git a/recipes-jailhouse/jailhouse/jailhouse.inc b/recipes-jailhouse/jailhouse/jailhouse.inc index 2caf601..65585b3 100644 --- a/recipes-jailhouse/jailhouse/jailhouse.inc +++ b/recipes-jailhouse/jailhouse/jailhouse.inc @@ -11,7 +11,7 @@ python() { machine = d.getVar('MACHINE', True) - if machine in ['qemuamd64']: + if machine in ['qemuamd64', 'nuc6cay']: machine = 'x86-64' d.setVar('JAILHOUSE_CONFIG', machine + '_config.h') } diff --git a/recipes-jailhouse/jailhouse/jailhouse_latest.bb b/recipes-jailhouse/jailhouse/jailhouse_latest.bb index 962863e..a6a9de1 100644 --- a/recipes-jailhouse/jailhouse/jailhouse_latest.bb +++ b/recipes-jailhouse/jailhouse/jailhouse_latest.bb @@ -14,7 +14,13 @@ require jailhouse.inc SRCREV = "next" PV = "0.9999-next" +SRC_URI += " \ + file://nuc6cay.c \ + file://linux-nuc6cay-demo.c" + dpkg_runbuild_prepend() { bbplain $(printf "jailhouse-latest: Building revision %.12s\n" \ $(cat ${S}/.git/refs/heads/next)) + cp ${WORKDIR}/nuc6cay.c ${S}/configs/x86/ + cp ${WORKDIR}/linux-nuc6cay-demo.c ${S}/configs/x86/ } -- 2.16.4 -- 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.