From f6385bb27bde44099fe2b90dc05a42c8cd124361 Mon Sep 17 00:00:00 2001 From: Ola Redell Date: Thu, 26 Oct 2017 22:08:20 +0200 Subject: added first set of recipe files for --- .../jailhouse/files/0001-ldflags-for-tools.patch | 13 ++ .../jailhouse/files/0002-no-ldflags-in-tools.patch | 13 ++ ...ound-if-changed-problem-in-tools-makefile.patch | 18 ++ .../jailhouse/files/0004-no-kbuild-of-tools.patch | 13 ++ .../jailhouse/files/jailhouse-config-bpi.h | 9 + .../jailhouse/files/plamics-bpi-root.c | 221 +++++++++++++++++++++ recipes-jailhouse/jailhouse/jailhouse.inc | 82 ++++++++ recipes-jailhouse/jailhouse/jailhouse_0.6.bb | 13 ++ 8 files changed, 382 insertions(+) create mode 100644 recipes-jailhouse/jailhouse/files/0001-ldflags-for-tools.patch create mode 100644 recipes-jailhouse/jailhouse/files/0002-no-ldflags-in-tools.patch create mode 100644 recipes-jailhouse/jailhouse/files/0003-workaround-if-changed-problem-in-tools-makefile.patch create mode 100644 recipes-jailhouse/jailhouse/files/0004-no-kbuild-of-tools.patch create mode 100644 recipes-jailhouse/jailhouse/files/jailhouse-config-bpi.h create mode 100644 recipes-jailhouse/jailhouse/files/plamics-bpi-root.c create mode 100644 recipes-jailhouse/jailhouse/jailhouse.inc create mode 100644 recipes-jailhouse/jailhouse/jailhouse_0.6.bb diff --git a/recipes-jailhouse/jailhouse/files/0001-ldflags-for-tools.patch b/recipes-jailhouse/jailhouse/files/0001-ldflags-for-tools.patch new file mode 100644 index 0000000..47b79ed --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/0001-ldflags-for-tools.patch @@ -0,0 +1,13 @@ +diff --git a/tools/Makefile b/tools/Makefile +index 4d91e7a..ecc5503 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -19,7 +19,7 @@ LINUXINCLUDE := -I$(src)/../driver + KBUILD_CFLAGS := -g -O3 -DLIBEXECDIR=\"$(libexecdir)\" \ + -Wall -Wextra -Wmissing-declarations -Wmissing-prototypes -Werror \ + -DJAILHOUSE_VERSION=\"$(shell cat $(src)/../VERSION)\" $(EXTRA_CFLAGS) +-LDFLAGS := ++LDFLAGS := $(EXTRA_LDLAGS) + + BINARIES := jailhouse + HELPERS := \ diff --git a/recipes-jailhouse/jailhouse/files/0002-no-ldflags-in-tools.patch b/recipes-jailhouse/jailhouse/files/0002-no-ldflags-in-tools.patch new file mode 100644 index 0000000..e94f69d --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/0002-no-ldflags-in-tools.patch @@ -0,0 +1,13 @@ +diff --git a/tools/Makefile b/tools/Makefile +index 4d91e7a..ecc5503 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -19,7 +19,7 @@ LINUXINCLUDE := -I$(src)/../driver + KBUILD_CFLAGS := -g -O3 -DLIBEXECDIR=\"$(libexecdir)\" \ + -Wall -Wextra -Wmissing-declarations -Wmissing-prototypes -Werror \ + -DJAILHOUSE_VERSION=\"$(shell cat $(src)/../VERSION)\" $(EXTRA_CFLAGS) +-LDFLAGS := ++#LDFLAGS := $(EXTRA_LDLAGS) + + BINARIES := jailhouse + HELPERS := \ diff --git a/recipes-jailhouse/jailhouse/files/0003-workaround-if-changed-problem-in-tools-makefile.patch b/recipes-jailhouse/jailhouse/files/0003-workaround-if-changed-problem-in-tools-makefile.patch new file mode 100644 index 0000000..7d02b55 --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/0003-workaround-if-changed-problem-in-tools-makefile.patch @@ -0,0 +1,18 @@ +Index: git/tools/Makefile +=================================================================== +--- git.orig/tools/Makefile ++++ git/tools/Makefile +@@ -55,10 +55,11 @@ endef + targets += jailhouse.o + + $(obj)/jailhouse: $(obj)/jailhouse.o +- $(call if_changed,ld) ++ $(LD) $(LDFLAGS) -o $@ $^ + + $(obj)/jailhouse-config-collect: $(src)/jailhouse-config-create $(src)/jailhouse-config-collect.tmpl +- $(call if_changed,gen_collect) ++ $< -g $@; \ ++ chmod +x $@ + + install-bin: $(BINARIES) $(DESTDIR)$(sbindir) + $(INSTALL_PROGRAM) $^ diff --git a/recipes-jailhouse/jailhouse/files/0004-no-kbuild-of-tools.patch b/recipes-jailhouse/jailhouse/files/0004-no-kbuild-of-tools.patch new file mode 100644 index 0000000..4e0f337 --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/0004-no-kbuild-of-tools.patch @@ -0,0 +1,13 @@ +Index: git/Kbuild +=================================================================== +--- git.orig/Kbuild ++++ git/Kbuild +@@ -11,7 +11,7 @@ + # the COPYING file in the top-level directory. + # + +-subdir-y := driver hypervisor configs inmates tools ++subdir-y := driver hypervisor configs inmates + + subdir-ccflags-y := -Werror + diff --git a/recipes-jailhouse/jailhouse/files/jailhouse-config-bpi.h b/recipes-jailhouse/jailhouse/files/jailhouse-config-bpi.h new file mode 100644 index 0000000..91f651c --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/jailhouse-config-bpi.h @@ -0,0 +1,9 @@ +#define CONFIG_ARM_GIC_V2 1 +#define CONFIG_MACH_SUN7I 1 + +/* Enable error tracing, + * c.f. https://github.com/siemens/jailhouse/blob/master/FAQ.md + * (Redefine macro: + * jailhouse/hypervisor/include/jailhouse/printk.h:trace_error(code)). + */ +#define CONFIG_TRACE_ERROR diff --git a/recipes-jailhouse/jailhouse/files/plamics-bpi-root.c b/recipes-jailhouse/jailhouse/files/plamics-bpi-root.c new file mode 100644 index 0000000..3d7b79f --- /dev/null +++ b/recipes-jailhouse/jailhouse/files/plamics-bpi-root.c @@ -0,0 +1,221 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Test configuration for Banana Pi board (A20 dual-core Cortex-A7, 1G RAM) + * + * Copyright (c) Siemens AG, 2014 + * + * Authors: + * Jan Kiszka + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + */ + +#include +#include + +#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) + +struct { + struct jailhouse_system header; + __u64 cpus[1]; + struct jailhouse_memory mem_regions[18]; + struct jailhouse_irqchip irqchips[1]; + struct jailhouse_pci_device pci_devices[1]; +} __attribute__((packed)) config = { + .header = { + .signature = JAILHOUSE_SYSTEM_SIGNATURE, + .revision = JAILHOUSE_CONFIG_REVISION, + .hypervisor_memory = { + .phys_start = 0x7c000000, + .size = 0x4000000, + }, + .debug_console = { + .address = 0x01c28000, + .size = 0x1000, + /* .clock_reg = 0x01c2006c, */ + /* .gate_nr = 16 */ + /* .divider = 0x0d, */ + .flags = JAILHOUSE_CON_TYPE_8250 | + JAILHOUSE_CON_FLAG_MMIO, + }, + .platform_info = { + .pci_mmconfig_base = 0x2000000, + .pci_mmconfig_end_bus = 0, + .pci_is_virtual = 1, + .arm = { + .gicd_base = 0x01c81000, + .gicc_base = 0x01c82000, + .gich_base = 0x01c84000, + .gicv_base = 0x01c86000, + .maintenance_irq = 25, + }, + }, + .root_cell = { + .name = "Banana-Pi", + + .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 = 108, + }, + }, + + .cpus = { + 0x3, + }, + + .mem_regions = { + /* SPI */ { + .phys_start = 0x01c05000, + .virt_start = 0x01c05000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + /* MMC */ { + .phys_start = 0x01c0f000, + .virt_start = 0x01c0f000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + /* USB + PMU1 */ { + .phys_start = 0x01c14000, + .virt_start = 0x01c14000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + /* SATA */ { + .phys_start = 0x01c18000, + .virt_start = 0x01c18000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + /* USB + PMU2 */ { + .phys_start = 0x01c1c000, + .virt_start = 0x01c1c000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + /* CCU */ { + .phys_start = 0x01c20000, + .virt_start = 0x01c20000, + .size = 0x400, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO | JAILHOUSE_MEM_IO_32, + }, + /* Ints */ { + .phys_start = 0x01c20400, + .virt_start = 0x01c20400, + .size = 0x400, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO | JAILHOUSE_MEM_IO_32, + }, + /* GPIO: ports A-G */ { + .phys_start = 0x01c20800, + .virt_start = 0x01c20800, + .size = 0xfc, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO | JAILHOUSE_MEM_IO_32, + }, + /* GPIO: port H */ { + .phys_start = 0x01c208fc, + .virt_start = 0x01c208fc, + .size = 0x24, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO | JAILHOUSE_MEM_IO_32, + }, + /* GPIO: port I */ { + .phys_start = 0x01c20920, + .virt_start = 0x01c20920, + .size = 0x24, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO | JAILHOUSE_MEM_IO_32, + }, + /* GPIO: intr config */ { + .phys_start = 0x01c20a00, + .virt_start = 0x01c20a00, + .size = 0x1c, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO | JAILHOUSE_MEM_IO_32, + }, + /* Timer */ { + .phys_start = 0x01c20c00, + .virt_start = 0x01c20c00, + .size = 0x400, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO | JAILHOUSE_MEM_IO_32, + }, + /* UART0-3 */ { + .phys_start = 0x01c28000, + .virt_start = 0x01c28000, + .size = 0x1000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + /* GMAC */ { + .phys_start = 0x01c50000, + .virt_start = 0x01c50000, + .size = 0x00010000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + /* HSTIMER */ { + .phys_start = 0x01c60000, + .virt_start = 0x01c60000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + /* RAM */ { + .phys_start = 0x40000000, + .virt_start = 0x40000000, + .size = 0x3bf00000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_EXECUTE, + }, + /* IVSHMEM shared memory region */ { + .phys_start = 0x7bf00000, + .virt_start = 0x7bf00000, + .size = 0x100000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE, + }, + /* Framebuffer */ { + .phys_start = 0x7f700000, + .virt_start = 0x7f700000, + .size = 9<<20, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_IO, + }, + }, + + .irqchips = { + /* GIC */ { + .address = 0x01c81000, + .pin_base = 32, + .pin_bitmap = { + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff + }, + }, + }, + + .pci_devices = { + { + .type = JAILHOUSE_PCI_TYPE_IVSHMEM, + .bdf = 0x00, + .bar_mask = { + 0xffffff00, 0xffffffff, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + }, + .shmem_region = 16, + .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED, + }, + }, +}; diff --git a/recipes-jailhouse/jailhouse/jailhouse.inc b/recipes-jailhouse/jailhouse/jailhouse.inc new file mode 100644 index 0000000..2c30725 --- /dev/null +++ b/recipes-jailhouse/jailhouse/jailhouse.inc @@ -0,0 +1,82 @@ +SUMMARY = "Jailhouse" +HOMEPAGE = "https://github.com/siemens/jailhouse" +SECTION = "jailhouse" +LICENSE = "GPL-2.0 & BSD-2-Clause" +LIC_FILES_CHKSUM = "file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \ + file://tools/root-cell-config.c.tmpl;beginline=6;endline=33;md5=2825581c1666c44a17955dc574cfbfb3 \ + file://hypervisor/include/jailhouse/hypercall.h;beginline=9;endline=36;md5=2825581c1666c44a17955dc574cfbfb3 \ + file://hypervisor/include/jailhouse/cell-config.h;beginline=9;endline=36;md5=2825581c1666c44a17955dc574cfbfb3 \ + file://hypervisor/arch/arm/include/asm/jailhouse_hypercall.h;beginline=9;endline=36;md5=2825581c1666c44a17955dc574cfbfb3 \ + file://hypervisor/arch/x86/include/asm/jailhouse_hypercall.h;beginline=9;endline=36;md5=2825581c1666c44a17955dc574cfbfb3 \ + file://driver/jailhouse.h;beginline=9;endline=36;md5=2825581c1666c44a17955dc574cfbfb3" + +DEPENDS = "virtual/kernel make-native python-mako-native dtc-native python-mako" + +S ="${WORKDIR}/git" + +JH_DATADIR="${datadir}/jailhouse" +CELL_DIR ?= "${JH_DATADIR}/cells" +CELLCONF_DIR ?= "${JH_DATADIR}/configs" +INMATES_DIR ?= "${JH_DATADIR}/inmates" + +export PACKAGECONFIG_CONFARGS + +inherit module pythonnative bash-completion + +do_configure() { + # Copy all cell configs included through PACKAGECONFIG + for arg in $(echo $PACKAGECONFIG_CONFARGS); do + if conf=$(echo $arg | grep -o "with-.*$"); + then + cp "${STAGING_DIR_HOST}/${CELLCONF_DIR}/${conf#with-}.c" ${S}/configs/ + fi + done +} + +USER_SPACE_CFLAGS = '${CFLAGS} -DLIBEXECDIR=\\\"${libexecdir}\\\" \ + -DJAILHOUSE_VERSION=\\\"$JAILHOUSE_VERSION\\\" \ + -Wall -Wextra -Wmissing-declarations -Wmissing-prototypes -Werror \ + -I../driver' + +TOOLS_SRC_DIR = "${S}/tools" +TOOLS_OBJ_DIR = "${S}/tools" + +do_compile() { + oe_runmake V=1 \ + ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX} \ + KDIR=${STAGING_KERNEL_BUILDDIR} + + cd ${TOOLS_SRC_DIR} + export JAILHOUSE_VERSION=$(cat ../VERSION) + oe_runmake V=1 \ + CFLAGS="${USER_SPACE_CFLAGS}" \ + src=${TOOLS_SRC_DIR} obj=${TOOLS_OBJ_DIR} \ + ${TOOLS_OBJ_DIR}/jailhouse-config-collect ${TOOLS_OBJ_DIR}/jailhouse +} + +do_install() { + oe_runmake \ + ARCH=${TARGET_ARCH} \ + CROSS_COMPILE=${TARGET_PREFIX} \ + KDIR=${STAGING_KERNEL_BUILDDIR} \ + DESTDIR=${D} install + + install -d ${D}${CELL_DIR} + install ${B}/configs/*.cell ${D}${CELL_DIR}/ + + install -d ${D}${INMATES_DIR} + install ${B}/inmates/demos/${TARGET_ARCH}/*.bin ${D}${INMATES_DIR} +} + +PACKAGE_BEFORE_PN = "kernel-module-jailhouse" +FILES_${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR}" + +PACKAGECONFIG ??= "freertos-cell freertos-demo1-cell freertos-demo3-cell freertos-ivshmem-demo" +PACKAGECONFIG[freertos-cell] = \ + "--with-freertos-cell,,freertos-cell,freertos-cell" +PACKAGECONFIG[freertos-demo1-cell] = \ + "--with-freertos-demo1-cell,,freertos-demo1-cell,freertos-demo1-cell" +PACKAGECONFIG[freertos-demo3-cell] = \ + "--with-freertos-demo3-cell,,freertos-demo3-cell,freertos-demo3-cell" +PACKAGECONFIG[freertos-ivshmem-demo] = \ + "--with-freertos-ivshmem-demo,,freertos-ivshmem-demo,freertos-ivshmem-demo" diff --git a/recipes-jailhouse/jailhouse/jailhouse_0.6.bb b/recipes-jailhouse/jailhouse/jailhouse_0.6.bb new file mode 100644 index 0000000..8a049d9 --- /dev/null +++ b/recipes-jailhouse/jailhouse/jailhouse_0.6.bb @@ -0,0 +1,13 @@ +require jailhouse.inc + +SRC_URI = "git://github.com/siemens/jailhouse.git;protocol=git \ + file://0002-no-ldflags-in-tools.patch \ + file://0003-workaround-if-changed-problem-in-tools-makefile.patch \ + file://0004-no-kbuild-of-tools.patch \ + " + +SRCREV = "81528e48763c8dfc10851c49968eb3d053d4b85c" + +#do_configure_append() { +# cp -av ${S}/ci/jailhouse-config-banana-pi.h ${S}/hypervisor/include/jailhouse/config.h +#} -- cgit v1.2.3-54-g00ecf