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

-- 
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