From: Jan Kiszka <[email protected]> In order to support the Ultra96 board with the 0.10 release, we need to add the missing config files. Do that via the upstream patch.
Signed-off-by: Jan Kiszka <[email protected]> --- .../files/0001-configs-Add-Ultra96-board.patch | 402 +++++++++++++++++++++ recipes-jailhouse/jailhouse/jailhouse_0.10.bb | 1 + 2 files changed, 403 insertions(+) create mode 100644 recipes-jailhouse/jailhouse/files/0001-configs-Add-Ultra96-board.patch diff --git a/recipes-jailhouse/jailhouse/files/0001-configs-Add-Ultra96-board.patch b/recipes-jailhouse/jailhouse/files/0001-configs-Add-Ultra96-board.patch new file mode 100644 index 0000000..bd91e83 --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/0001-configs-Add-Ultra96-board.patch @@ -0,0 +1,402 @@ +From e3cf65e67a605ead840f6d21d07627172185d13d Mon Sep 17 00:00:00 2001 +From: Jan Kiszka <[email protected]> +Date: Sun, 6 Jan 2019 22:05:59 +0100 +Subject: [PATCH] configs: Add Ultra96 board + +This is very similar to the ZCU102 eval board, but still different. +However, we can share at least the inmate device tree. + +Signed-off-by: Jan Kiszka <[email protected]> +--- + Documentation/setup-on-zynqmp-zcu102.md | 6 +- + ...{inmate-zynqmp-zcu102.dts => inmate-zynqmp.dts} | 9 +- + configs/arm64/ultra96-gic-demo.c | 72 +++++++++++++ + configs/arm64/ultra96-linux-demo.c | 116 ++++++++++++++++++++ + configs/arm64/ultra96.c | 117 +++++++++++++++++++++ + 5 files changed, 313 insertions(+), 7 deletions(-) + rename configs/arm64/dts/{inmate-zynqmp-zcu102.dts => inmate-zynqmp.dts} (89%) + create mode 100644 configs/arm64/ultra96-gic-demo.c + create mode 100644 configs/arm64/ultra96-linux-demo.c + create mode 100644 configs/arm64/ultra96.c + +diff --git a/Documentation/setup-on-zynqmp-zcu102.md b/Documentation/setup-on-zynqmp-zcu102.md +index 58de6227..535933ff 100644 +--- a/Documentation/setup-on-zynqmp-zcu102.md ++++ b/Documentation/setup-on-zynqmp-zcu102.md +@@ -138,8 +138,8 @@ is essential to do a new Linux image but with + + The files `image/linux/Image` and `image/linux/rootfs.cpio` have to be copied + from the Petalinux project to the rootfs. Besides, +-`configs/arm64/dts/inmate-zynqmp-zcu102.dtb` file has to be copied from +-Jailhouse project. ++`configs/arm64/dts/inmate-zynqmp.dtb` file has to be copied from Jailhouse ++project. + + To load Linux in the guest cell: + +@@ -163,7 +163,7 @@ To load Linux in the guest cell: + Activating hypervisor + [ 39.844953] The Jailhouse is opening. + +- # jailhouse cell linux zynqmp-zcu102-linux-demo.cell Image -d inmate-zynqmp-zcu102.dtb -i rootfs.cpio -c "console=ttyPS0,115200" ++ # jailhouse cell linux zynqmp-zcu102-linux-demo.cell Image -d inmate-zynqmp.dtb -i rootfs.cpio -c "console=ttyPS0,115200" + [ 81.967652] CPU2: shutdown + [ 81.970285] psci: CPU2 killed. + [ 82.015619] CPU3: shutdown +diff --git a/configs/arm64/dts/inmate-zynqmp-zcu102.dts b/configs/arm64/dts/inmate-zynqmp.dts +similarity index 89% +rename from configs/arm64/dts/inmate-zynqmp-zcu102.dts +rename to configs/arm64/dts/inmate-zynqmp.dts +index 0e6dc122..e608f0ad 100644 +--- a/configs/arm64/dts/inmate-zynqmp-zcu102.dts ++++ b/configs/arm64/dts/inmate-zynqmp.dts +@@ -1,10 +1,11 @@ + /* + * Jailhouse, a Linux-based partitioning hypervisor + * +- * Device tree for Linux inmate test on ZynqMP ZCU102 board, +- * corresponds to configs/arm64/zynqmp-zcu102-linux-demo.c ++ * Device tree for Linux inmate test on ZynqMP ZCU102 and Ultra96 boards, ++ * corresponds to configs/arm64/zynqmp-zcu102-linux-demo.c and ++ * configs/arm64/ultra96-linux-demo.c. + * +- * Copyright (c) Siemens AG, 2016 ++ * Copyright (c) Siemens AG, 2016-2019 + * + * Authors: + * Jan Kiszka <[email protected]> +@@ -18,7 +19,7 @@ + /dts-v1/; + + / { +- model = "Jailhouse cell on ZynqMP ZCU102"; ++ model = "Jailhouse cell on ZynqMP"; + + #address-cells = <2>; + #size-cells = <2>; +diff --git a/configs/arm64/ultra96-gic-demo.c b/configs/arm64/ultra96-gic-demo.c +new file mode 100644 +index 00000000..12556335 +--- /dev/null ++++ b/configs/arm64/ultra96-gic-demo.c +@@ -0,0 +1,72 @@ ++/* ++ * Jailhouse, a Linux-based partitioning hypervisor ++ * ++ * Configuration for gic-demo inmate on Avnet Ultra96 board: ++ * 1 CPU, 64K RAM, 1 serial port ++ * ++ * Copyright (c) Siemens AG, 2016-2019 ++ * ++ * Authors: ++ * Jan Kiszka <[email protected]> ++ * ++ * 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[3]; ++} __attribute__((packed)) config = { ++ .cell = { ++ .signature = JAILHOUSE_CELL_DESC_SIGNATURE, ++ .revision = JAILHOUSE_CONFIG_REVISION, ++ .name = "gic-demo", ++ .flags = JAILHOUSE_CELL_PASSIVE_COMMREG, ++ ++ .cpu_set_size = sizeof(config.cpus), ++ .num_memory_regions = ARRAY_SIZE(config.mem_regions), ++ .num_irqchips = 0, ++ .pio_bitmap_size = 0, ++ .num_pci_devices = 0, ++ ++ .console = { ++ .address = 0xff010000, ++ .type = JAILHOUSE_CON_TYPE_XUARTPS, ++ .flags = JAILHOUSE_CON_ACCESS_MMIO | ++ JAILHOUSE_CON_REGDIST_4, ++ }, ++ }, ++ ++ .cpus = { ++ 0x8, ++ }, ++ ++ .mem_regions = { ++ /* UART */ { ++ .phys_start = 0xff010000, ++ .virt_start = 0xff010000, ++ .size = 0x1000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, ++ }, ++ /* RAM */ { ++ .phys_start = 0x7bfe0000, ++ .virt_start = 0, ++ .size = 0x00010000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, ++ }, ++ /* communication region */ { ++ .virt_start = 0x80000000, ++ .size = 0x00001000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_COMM_REGION, ++ }, ++ } ++}; +diff --git a/configs/arm64/ultra96-linux-demo.c b/configs/arm64/ultra96-linux-demo.c +new file mode 100644 +index 00000000..e6b33466 +--- /dev/null ++++ b/configs/arm64/ultra96-linux-demo.c +@@ -0,0 +1,116 @@ ++/* ++ * Jailhouse, a Linux-based partitioning hypervisor ++ * ++ * Configuration for linux-demo inmate on Avnet Ultra96 board: ++ * 2 CPUs, 128M RAM, serial port 2 ++ * ++ * Copyright (c) Siemens AG, 2014-2019 ++ * ++ * Authors: ++ * Jan Kiszka <[email protected]> ++ * ++ * 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[5]; ++ struct jailhouse_irqchip irqchips[1]; ++ struct jailhouse_pci_device pci_devices[1]; ++} __attribute__((packed)) config = { ++ .cell = { ++ .signature = JAILHOUSE_CELL_DESC_SIGNATURE, ++ .revision = JAILHOUSE_CONFIG_REVISION, ++ .name = "Ultra96-linux-demo", ++ .flags = JAILHOUSE_CELL_PASSIVE_COMMREG, ++ ++ .cpu_set_size = sizeof(config.cpus), ++ .num_memory_regions = ARRAY_SIZE(config.mem_regions), ++ .num_irqchips = ARRAY_SIZE(config.irqchips), ++ .num_pci_devices = ARRAY_SIZE(config.pci_devices), ++ ++ .vpci_irq_base = 140-32, ++ ++ .console = { ++ .address = 0xff010000, ++ .type= JAILHOUSE_CON_TYPE_XUARTPS, ++ .flags = JAILHOUSE_CON_ACCESS_MMIO | ++ JAILHOUSE_CON_REGDIST_4, ++ }, ++ }, ++ ++ .cpus = { ++ 0xc, ++ }, ++ ++ .mem_regions = { ++ /* UART */ { ++ .phys_start = 0xff010000, ++ .virt_start = 0xff010000, ++ .size = 0x1000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, ++ }, ++ /* RAM */ { ++ .phys_start = 0x7bef0000, ++ .virt_start = 0, ++ .size = 0x10000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, ++ }, ++ /* RAM */ { ++ .phys_start = 0x74000000, ++ .virt_start = 0x74000000, ++ .size = 0x7ef0000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA | ++ JAILHOUSE_MEM_LOADABLE, ++ }, ++ /* IVSHMEM shared memory region */ { ++ .phys_start = 0x7bf00000, ++ .virt_start = 0x7bf00000, ++ .size = 0x100000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_ROOTSHARED, ++ }, ++ /* communication region */ { ++ .virt_start = 0x80000000, ++ .size = 0x00001000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_COMM_REGION, ++ }, ++ }, ++ ++ .irqchips = { ++ /* GIC */ { ++ .address = 0xf9010000, ++ .pin_base = 32, ++ .pin_bitmap = { ++ 1 << (54 - 32), ++ 0, ++ 0, ++ (1 << (140 - 128)) | (1 << (142 - 128)) ++ }, ++ }, ++ }, ++ ++ .pci_devices = { ++ /* 00:00.0 */ { ++ .type = JAILHOUSE_PCI_TYPE_IVSHMEM, ++ .bdf = 0 << 3, ++ .bar_mask = { ++ 0xffffff00, 0xffffffff, 0x00000000, ++ 0x00000000, 0x00000000, 0x00000000, ++ }, ++ .shmem_region = 3, ++ .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH, ++ }, ++ }, ++}; +diff --git a/configs/arm64/ultra96.c b/configs/arm64/ultra96.c +new file mode 100644 +index 00000000..1fc54356 +--- /dev/null ++++ b/configs/arm64/ultra96.c +@@ -0,0 +1,117 @@ ++/* ++ * Jailhouse, a Linux-based partitioning hypervisor ++ * ++ * Configuration for Avnet Ultra96 board ++ * ++ * Copyright (c) Siemens AG, 2016-2019 ++ * ++ * Authors: ++ * Jan Kiszka <[email protected]> ++ * ++ * 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_system header; ++ __u64 cpus[1]; ++ struct jailhouse_memory mem_regions[3]; ++ struct jailhouse_irqchip irqchips[1]; ++ struct jailhouse_pci_device pci_devices[1]; ++} __attribute__((packed)) config = { ++ .header = { ++ .signature = JAILHOUSE_SYSTEM_SIGNATURE, ++ .revision = JAILHOUSE_CONFIG_REVISION, ++ .flags = JAILHOUSE_SYS_VIRTUAL_DEBUG_CONSOLE, ++ .hypervisor_memory = { ++ .phys_start = 0x7c000000, ++ .size = 0x00400000, ++ }, ++ .debug_console = { ++ .address = 0xff010000, ++ .size = 0x1000, ++ .type = JAILHOUSE_CON_TYPE_XUARTPS, ++ .flags = JAILHOUSE_CON_ACCESS_MMIO | ++ JAILHOUSE_CON_REGDIST_4, ++ }, ++ .platform_info = { ++ .pci_mmconfig_base = 0xfc000000, ++ .pci_mmconfig_end_bus = 0, ++ .pci_is_virtual = 1, ++ .arm = { ++ .gic_version = 2, ++ .gicd_base = 0xf9010000, ++ .gicc_base = 0xf902f000, ++ .gich_base = 0xf9040000, ++ .gicv_base = 0xf906f000, ++ .maintenance_irq = 25, ++ }, ++ }, ++ .root_cell = { ++ .name = "Ultra96", ++ ++ .cpu_set_size = sizeof(config.cpus), ++ .num_memory_regions = ARRAY_SIZE(config.mem_regions), ++ .num_irqchips = ARRAY_SIZE(config.irqchips), ++ .num_pci_devices = ARRAY_SIZE(config.pci_devices), ++ ++ .vpci_irq_base = 136-32, ++ }, ++ }, ++ ++ .cpus = { ++ 0xf, ++ }, ++ ++ .mem_regions = { ++ /* MMIO (permissive) */ { ++ .phys_start = 0xfd000000, ++ .virt_start = 0xfd000000, ++ .size = 0x03000000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_IO, ++ }, ++ /* RAM */ { ++ .phys_start = 0x0, ++ .virt_start = 0x0, ++ .size = 0x7c000000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | ++ JAILHOUSE_MEM_EXECUTE, ++ }, ++ /* IVSHMEM shared memory region for 00:00.0 */ { ++ .phys_start = 0x7bf00000, ++ .virt_start = 0x7bf00000, ++ .size = 0x100000, ++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, ++ }, ++ }, ++ ++ .irqchips = { ++ /* GIC */ { ++ .address = 0xf9010000, ++ .pin_base = 32, ++ .pin_bitmap = { ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ }, ++ }, ++ }, ++ ++ .pci_devices = { ++ /* 0001:00:00.0 */ { ++ .type = JAILHOUSE_PCI_TYPE_IVSHMEM, ++ .domain = 1, ++ .bdf = 0 << 3, ++ .bar_mask = { ++ 0xffffff00, 0xffffffff, 0x00000000, ++ 0x00000000, 0x00000000, 0x00000000, ++ }, ++ .shmem_region = 2, ++ .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH, ++ }, ++ }, ++}; +-- +2.16.4 + diff --git a/recipes-jailhouse/jailhouse/jailhouse_0.10.bb b/recipes-jailhouse/jailhouse/jailhouse_0.10.bb index c1cbb99..42616db 100644 --- a/recipes-jailhouse/jailhouse/jailhouse_0.10.bb +++ b/recipes-jailhouse/jailhouse/jailhouse_0.10.bb @@ -13,5 +13,6 @@ require jailhouse.inc SRC_URI += "file://0001-configs-Add-support-for-MACCHIATObin-board.patch" SRC_URI += "file://0001-configs-orangepi0-Permit-access-to-another-clock.patch" +SRC_URI += "file://0001-configs-Add-Ultra96-board.patch" SRCREV = "f596aa7355bc2134650544bdf1e13f1f55d3f2fc" -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
