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.

Reply via email to