* [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
@ 2019-07-05 15:03 Nikhil Devshatwar
2019-07-07 9:34 ` [EXTERNAL] " Subhajit Paul
2019-07-08 17:08 ` Denys Dmytriyenko
0 siblings, 2 replies; 6+ messages in thread
From: Nikhil Devshatwar @ 2019-07-05 15:03 UTC (permalink / raw)
To: meta-ti, denys; +Cc: karthik.ramanan
From: Denys Dmytriyenko <denys@ti.com>
Builds the Jailhouse kernel module, hypervisor binaries
and all the cell configs for root cell and other demos.
Generate the linux-demo loader script without initramfs.
Supports am65x and j7-evm machines
[nikhil.nd@ti.com: Update for public trees]
Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
---
Changes from v1:
* Fix issues with building tools
* Remove the makefile patch
recipes-bsp/jailhouse/jailhouse-arch.inc | 20 +++++
recipes-bsp/jailhouse/jailhouse_git.bb | 141 +++++++++++++++++++++++++++++++
2 files changed, 161 insertions(+)
create mode 100644 recipes-bsp/jailhouse/jailhouse-arch.inc
create mode 100644 recipes-bsp/jailhouse/jailhouse_git.bb
diff --git a/recipes-bsp/jailhouse/jailhouse-arch.inc b/recipes-bsp/jailhouse/jailhouse-arch.inc
new file mode 100644
index 0000000..e06ec23
--- /dev/null
+++ b/recipes-bsp/jailhouse/jailhouse-arch.inc
@@ -0,0 +1,20 @@
+# Set jailhouse architecture JH_ARCH variable
+#
+# return value must match one of architectures supported by jailhouse
+#
+valid_jh_archs = "x86 arm"
+
+def map_jh_arch(a, d):
+ import re
+
+ valid_jh_archs = d.getVar('valid_jh_archs', True).split()
+
+ if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
+ elif re.match('armeb$', a): return 'arm'
+ elif re.match('aarch64$', a): return 'arm64'
+ elif re.match('aarch64_be$', a): return 'arm64'
+ elif a in valid_jh_archs: return a
+ else:
+ bb.error("cannot map '%s' to a jailhouse supported architecture" % a)
+
+export JH_ARCH = "${@map_jh_arch(d.getVar('TARGET_ARCH', True), d)}"
diff --git a/recipes-bsp/jailhouse/jailhouse_git.bb b/recipes-bsp/jailhouse/jailhouse_git.bb
new file mode 100644
index 0000000..18b984f
--- /dev/null
+++ b/recipes-bsp/jailhouse/jailhouse_git.bb
@@ -0,0 +1,141 @@
+SUMMARY = "Linux-based partitioning hypervisor"
+DESCRIPTION = "Jailhouse is a partitioning Hypervisor based on Linux. It is able to run bare-metal applications or (adapted) \
+operating systems besides Linux. For this purpose, it configures CPU and device virtualization features of the hardware \
+platform in a way that none of these domains, called 'cells' here, can interfere with each other in an unacceptable way."
+HOMEPAGE = "https://github.com/siemens/jailhouse"
+SECTION = "jailhouse"
+LICENSE = "GPL-2.0 & BSD-2-Clause"
+
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
+"
+
+PV = "0.10+git${SRCPV}"
+SRCREV = "5c6aa2b78c6485e9455d9d1441df3d695e1a8b4e"
+BRANCH = "ti-jailhouse-0.10"
+
+SRC_URI = " \
+ git://git.ti.com/jailhouse/ti-jailhouse.git;protocol=git;branch=${BRANCH} \
+"
+
+DEPENDS = "virtual/kernel dtc-native python-mako-native python-mako make-native"
+RDEPENDS_${PN} += "\
+ python-curses\
+ python-datetime\
+ python-argparse\
+ python-mmap\
+"
+
+S = "${WORKDIR}/git"
+
+require jailhouse-arch.inc
+inherit module pythonnative bash-completion deploy
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+JH_DATADIR ?= "${datadir}/jailhouse"
+JH_EXEC_DIR ?= "${libexecdir}/jailhouse"
+CELL_DIR ?= "${JH_DATADIR}/cells"
+CELLCONF_DIR ?= "${JH_DATADIR}/configs"
+INMATES_DIR ?= "${JH_DATADIR}/inmates"
+
+JH_CONFIG ?= "${S}/ci/jailhouse-config-x86.h"
+JH_CONFIG_k3 ?= "${S}/ci/jailhouse-config-k3.h"
+
+JH_CELL_FILES ?= "*.cell"
+JH_CELL_FILES_k3 ?= "k3-*.cell"
+
+JH_INMATE_DTB ?= ""
+JH_INMATE_DTB_am65xx-evm ?= "inmate-k3-am654.dtb"
+JH_INMATE_DTB_j7-evm ?= "inmate-k3-j721e-evm.dtb"
+
+JH_LINUX_DEMO_CELL ?= ""
+JH_LINUX_DEMO_CELL_am65xx-evm ?= "k3-am654-linux-demo.cell"
+JH_LINUX_DEMO_CELL_j7-evm ?= "k3-j721e-evm-linux-demo.cell"
+
+JH_SYSCONFIG_CELL ?= ""
+JH_SYSCONFIG_CELL_am65xx-evm ?= "k3-am654.cell"
+JH_SYSCONFIG_CELL_j7-evm ?= "k3-j721e-evm.cell"
+
+JH_CMDLINE ?= ""
+JH_CMDLINE_k3 ?= "console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlycon=ns16550a,mmio32,0x2810000"
+
+do_configure() {
+ if [ -d ${STAGING_DIR_HOST}/${CELLCONF_DIR} ];
+ then
+ cp ${STAGING_DIR_HOST}/${CELLCONF_DIR}/*.c ${S}/configs/
+ fi
+
+ cp -av ${JH_CONFIG} ${S}/include/jailhouse/config.h
+}
+
+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=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR}
+}
+
+python __anonymous () {
+ d.appendVarFlag('do_install', 'depends', ' virtual/kernel:do_deploy')
+ initrd = d.getVar('INITRAMFS_IMAGE', True)
+ if initrd:
+ d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
+}
+
+do_install() {
+ oe_runmake ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR} DESTDIR=${D} install
+
+ install -d ${D}${CELL_DIR}
+ install -m 0644 ${B}/configs/${JH_ARCH}/${JH_CELL_FILES} ${D}${CELL_DIR}/
+
+ install -d ${D}${INMATES_DIR}
+ install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
+
+ install -d ${D}/boot
+
+ if [ -n "${JH_INMATE_DTB}" -a -n "${JH_LINUX_DEMO_CELL}" ]; then
+ cd ${TOOLS_SRC_DIR}
+
+ echo "#! /bin/sh" > ${D}${JH_DATADIR}/linux-demo.sh
+ echo "jailhouse enable ${CELL_DIR}/${JH_SYSCONFIG_CELL}" >> ${D}${JH_DATADIR}/linux-demo.sh
+ ./jailhouse-cell-linux -w ${D}${JH_DATADIR}/${JH_INMATE_DTB} \
+ -a ${JH_ARCH} -c "${JH_CMDLINE}" \
+ -d ../configs/${JH_ARCH}/dts/${JH_INMATE_DTB} \
+ ${D}${CELL_DIR}/${JH_LINUX_DEMO_CELL} \
+ ${DEPLOY_DIR_IMAGE}/Image \
+ | tr -cd '\11\12\15\40-\176' \
+ >> ${D}${JH_DATADIR}/linux-demo.sh
+
+ sed -i -e 's,^Modified device tree written.*,,g' ${D}${JH_DATADIR}/linux-demo.sh
+ sed -i -e 's,\${D},,g' ${D}${JH_DATADIR}/linux-demo.sh
+ sed -i -e 's, linux-loader.bin, ${JH_EXEC_DIR}/linux-loader.bin,g' ${D}${JH_DATADIR}/linux-demo.sh
+ sed -i -e 's,\${DEPLOY_DIR_IMAGE},/boot,g' ${D}${JH_DATADIR}/linux-demo.sh
+ sed -i -e '/^\s*$/d' ${D}${JH_DATADIR}/linux-demo.sh
+ chmod +x ${D}${JH_DATADIR}/linux-demo.sh
+ fi
+}
+
+
+PACKAGE_BEFORE_PN = "kernel-module-jailhouse"
+FILES_${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR} /boot"
+
+INSANE_SKIP_${PN} = "ldflags"
+
+KERNEL_MODULE_AUTOLOAD += "jailhouse"
+
+# Any extra cells/inmates from external recipes/packages
+CELLS = ""
+
+python __anonymous () {
+ # Setup DEPENDS and RDEPENDS to included cells"
+ cells = d.getVar('CELLS', True) or ""
+ for cell in cells.split():
+ d.appendVar('DEPENDS', ' ' + cell)
+ d.appendVar('RDEPENDS_${PN}', ' ' + cell)
+}
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [EXTERNAL] [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
2019-07-05 15:03 [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo Nikhil Devshatwar
@ 2019-07-07 9:34 ` Subhajit Paul
2019-07-07 14:00 ` Devshatwar, Nikhil
2019-07-08 17:08 ` Denys Dmytriyenko
1 sibling, 1 reply; 6+ messages in thread
From: Subhajit Paul @ 2019-07-07 9:34 UTC (permalink / raw)
To: meta-ti
On 05/07/19 8:33 PM, Nikhil Devshatwar wrote:
> From: Denys Dmytriyenko <denys@ti.com>
>
> Builds the Jailhouse kernel module, hypervisor binaries
> and all the cell configs for root cell and other demos.
> Generate the linux-demo loader script without initramfs.
>
> Supports am65x and j7-evm machines
>
> [nikhil.nd@ti.com: Update for public trees]
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
> ---
> Changes from v1:
> * Fix issues with building tools
> * Remove the makefile patch
>
> recipes-bsp/jailhouse/jailhouse-arch.inc | 20 +++++
> recipes-bsp/jailhouse/jailhouse_git.bb | 141 +++++++++++++++++++++++++++++++
> 2 files changed, 161 insertions(+)
> create mode 100644 recipes-bsp/jailhouse/jailhouse-arch.inc
> create mode 100644 recipes-bsp/jailhouse/jailhouse_git.bb
>
> diff --git a/recipes-bsp/jailhouse/jailhouse-arch.inc b/recipes-bsp/jailhouse/jailhouse-arch.inc
> new file mode 100644
> index 0000000..e06ec23
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse-arch.inc
> @@ -0,0 +1,20 @@
> +# Set jailhouse architecture JH_ARCH variable
> +#
> +# return value must match one of architectures supported by jailhouse
> +#
> +valid_jh_archs = "x86 arm"
> +
> +def map_jh_arch(a, d):
> + import re
> +
> + valid_jh_archs = d.getVar('valid_jh_archs', True).split()
> +
> + if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
> + elif re.match('armeb$', a): return 'arm'
> + elif re.match('aarch64$', a): return 'arm64'
> + elif re.match('aarch64_be$', a): return 'arm64'
> + elif a in valid_jh_archs: return a
> + else:
> + bb.error("cannot map '%s' to a jailhouse supported architecture" % a)
> +
> +export JH_ARCH = "${@map_jh_arch(d.getVar('TARGET_ARCH', True), d)}"
> diff --git a/recipes-bsp/jailhouse/jailhouse_git.bb b/recipes-bsp/jailhouse/jailhouse_git.bb
> new file mode 100644
> index 0000000..18b984f
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse_git.bb
> @@ -0,0 +1,141 @@
> +SUMMARY = "Linux-based partitioning hypervisor"
> +DESCRIPTION = "Jailhouse is a partitioning Hypervisor based on Linux. It is able to run bare-metal applications or (adapted) \
> +operating systems besides Linux. For this purpose, it configures CPU and device virtualization features of the hardware \
> +platform in a way that none of these domains, called 'cells' here, can interfere with each other in an unacceptable way."
> +HOMEPAGE = "https://github.com/siemens/jailhouse"
> +SECTION = "jailhouse"
> +LICENSE = "GPL-2.0 & BSD-2-Clause"
> +
> +LIC_FILES_CHKSUM = " \
> + file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
> +"
> +
> +PV = "0.10+git${SRCPV}"
> +SRCREV = "5c6aa2b78c6485e9455d9d1441df3d695e1a8b4e"
> +BRANCH = "ti-jailhouse-0.10"
> +
> +SRC_URI = " \
> + git://git.ti.com/jailhouse/ti-jailhouse.git;protocol=git;branch=${BRANCH} \
> +"
> +
> +DEPENDS = "virtual/kernel dtc-native python-mako-native python-mako make-native"
> +RDEPENDS_${PN} += "\
> + python-curses\
> + python-datetime\
> + python-argparse\
> + python-mmap\
> +"
> +
> +S = "${WORKDIR}/git"
> +
> +require jailhouse-arch.inc
> +inherit module pythonnative bash-completion deploy
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +JH_DATADIR ?= "${datadir}/jailhouse"
> +JH_EXEC_DIR ?= "${libexecdir}/jailhouse"
> +CELL_DIR ?= "${JH_DATADIR}/cells"
> +CELLCONF_DIR ?= "${JH_DATADIR}/configs"
> +INMATES_DIR ?= "${JH_DATADIR}/inmates"
> +
> +JH_CONFIG ?= "${S}/ci/jailhouse-config-x86.h"
> +JH_CONFIG_k3 ?= "${S}/ci/jailhouse-config-k3.h"
> +
> +JH_CELL_FILES ?= "*.cell"
> +JH_CELL_FILES_k3 ?= "k3-*.cell"
> +
> +JH_INMATE_DTB ?= ""
> +JH_INMATE_DTB_am65xx-evm ?= "inmate-k3-am654.dtb"
> +JH_INMATE_DTB_j7-evm ?= "inmate-k3-j721e-evm.dtb"
> +
> +JH_LINUX_DEMO_CELL ?= ""
> +JH_LINUX_DEMO_CELL_am65xx-evm ?= "k3-am654-linux-demo.cell"
> +JH_LINUX_DEMO_CELL_j7-evm ?= "k3-j721e-evm-linux-demo.cell"
> +
> +JH_SYSCONFIG_CELL ?= ""
> +JH_SYSCONFIG_CELL_am65xx-evm ?= "k3-am654.cell"
> +JH_SYSCONFIG_CELL_j7-evm ?= "k3-j721e-evm.cell"
> +
> +JH_CMDLINE ?= ""
> +JH_CMDLINE_k3 ?= "console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlycon=ns16550a,mmio32,0x2810000"
> +
> +do_configure() {
> + if [ -d ${STAGING_DIR_HOST}/${CELLCONF_DIR} ];
> + then
> + cp ${STAGING_DIR_HOST}/${CELLCONF_DIR}/*.c ${S}/configs/
> + fi
> +
> + cp -av ${JH_CONFIG} ${S}/include/jailhouse/config.h
> +}
> +
> +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=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR}
> +}
> +
> +python __anonymous () {
> + d.appendVarFlag('do_install', 'depends', ' virtual/kernel:do_deploy')
> + initrd = d.getVar('INITRAMFS_IMAGE', True)
> + if initrd:
> + d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
> +}
> +
> +do_install() {
> + oe_runmake ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR} DESTDIR=${D} install
> +
> + install -d ${D}${CELL_DIR}
> + install -m 0644 ${B}/configs/${JH_ARCH}/${JH_CELL_FILES} ${D}${CELL_DIR}/
> +
> + install -d ${D}${INMATES_DIR}
> + install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
> +
> + install -d ${D}/boot
> +
> + if [ -n "${JH_INMATE_DTB}" -a -n "${JH_LINUX_DEMO_CELL}" ]; then
> + cd ${TOOLS_SRC_DIR}
> +
> + echo "#! /bin/sh" > ${D}${JH_DATADIR}/linux-demo.sh
> + echo "jailhouse enable ${CELL_DIR}/${JH_SYSCONFIG_CELL}" >> ${D}${JH_DATADIR}/linux-demo.sh
> + ./jailhouse-cell-linux -w ${D}${JH_DATADIR}/${JH_INMATE_DTB} \
> + -a ${JH_ARCH} -c "${JH_CMDLINE}" \
> + -d ../configs/${JH_ARCH}/dts/${JH_INMATE_DTB} \
> + ${D}${CELL_DIR}/${JH_LINUX_DEMO_CELL} \
> + ${DEPLOY_DIR_IMAGE}/Image \
> + | tr -cd '\11\12\15\40-\176' \
> + >> ${D}${JH_DATADIR}/linux-demo.sh
> +
> + sed -i -e 's,^Modified device tree written.*,,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${D},,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's, linux-loader.bin, ${JH_EXEC_DIR}/linux-loader.bin,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${DEPLOY_DIR_IMAGE},/boot,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e '/^\s*$/d' ${D}${JH_DATADIR}/linux-demo.sh
> + chmod +x ${D}${JH_DATADIR}/linux-demo.sh
> + fi
> +}
> +
> +
> +PACKAGE_BEFORE_PN = "kernel-module-jailhouse"
> +FILES_${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR} /boot"
> +
> +INSANE_SKIP_${PN} = "ldflags"
> +
> +KERNEL_MODULE_AUTOLOAD += "jailhouse"
I think we should not autoload this.
- Subhajit
> +
> +# Any extra cells/inmates from external recipes/packages
> +CELLS = ""
> +
> +python __anonymous () {
> + # Setup DEPENDS and RDEPENDS to included cells"
> + cells = d.getVar('CELLS', True) or ""
> + for cell in cells.split():
> + d.appendVar('DEPENDS', ' ' + cell)
> + d.appendVar('RDEPENDS_${PN}', ' ' + cell)
> +}
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [EXTERNAL] [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
2019-07-07 9:34 ` [EXTERNAL] " Subhajit Paul
@ 2019-07-07 14:00 ` Devshatwar, Nikhil
2019-07-08 16:08 ` Paul, Subhajit
0 siblings, 1 reply; 6+ messages in thread
From: Devshatwar, Nikhil @ 2019-07-07 14:00 UTC (permalink / raw)
To: Paul, Subhajit, meta-ti@yoctoproject.org
-----Original Message-----
From: meta-ti-bounces@yoctoproject.org [mailto:meta-ti-bounces@yoctoproject.org] On Behalf Of Paul, Subhajit
Sent: Sunday, July 7, 2019 3:04 PM
To: meta-ti@yoctoproject.org
Subject: Re: [meta-ti] [EXTERNAL] [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
On 05/07/19 8:33 PM, Nikhil Devshatwar wrote:
> From: Denys Dmytriyenko <denys@ti.com>
>
> Builds the Jailhouse kernel module, hypervisor binaries
> and all the cell configs for root cell and other demos.
> Generate the linux-demo loader script without initramfs.
>
> Supports am65x and j7-evm machines
>
> [nikhil.nd@ti.com: Update for public trees]
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
> ---
> Changes from v1:
> * Fix issues with building tools
> * Remove the makefile patch
>
> recipes-bsp/jailhouse/jailhouse-arch.inc | 20 +++++
> recipes-bsp/jailhouse/jailhouse_git.bb | 141 +++++++++++++++++++++++++++++++
> 2 files changed, 161 insertions(+)
> create mode 100644 recipes-bsp/jailhouse/jailhouse-arch.inc
> create mode 100644 recipes-bsp/jailhouse/jailhouse_git.bb
>
> diff --git a/recipes-bsp/jailhouse/jailhouse-arch.inc b/recipes-bsp/jailhouse/jailhouse-arch.inc
> new file mode 100644
> index 0000000..e06ec23
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse-arch.inc
> @@ -0,0 +1,20 @@
> +# Set jailhouse architecture JH_ARCH variable
> +#
> +# return value must match one of architectures supported by jailhouse
> +#
> +valid_jh_archs = "x86 arm"
> +
> +def map_jh_arch(a, d):
> + import re
> +
> + valid_jh_archs = d.getVar('valid_jh_archs', True).split()
> +
> + if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
> + elif re.match('armeb$', a): return 'arm'
> + elif re.match('aarch64$', a): return 'arm64'
> + elif re.match('aarch64_be$', a): return 'arm64'
> + elif a in valid_jh_archs: return a
> + else:
> + bb.error("cannot map '%s' to a jailhouse supported architecture" % a)
> +
> +export JH_ARCH = "${@map_jh_arch(d.getVar('TARGET_ARCH', True), d)}"
> diff --git a/recipes-bsp/jailhouse/jailhouse_git.bb b/recipes-bsp/jailhouse/jailhouse_git.bb
> new file mode 100644
> index 0000000..18b984f
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse_git.bb
> @@ -0,0 +1,141 @@
> +SUMMARY = "Linux-based partitioning hypervisor"
> +DESCRIPTION = "Jailhouse is a partitioning Hypervisor based on Linux. It is able to run bare-metal applications or (adapted) \
> +operating systems besides Linux. For this purpose, it configures CPU and device virtualization features of the hardware \
> +platform in a way that none of these domains, called 'cells' here, can interfere with each other in an unacceptable way."
> +HOMEPAGE = "https://github.com/siemens/jailhouse"
> +SECTION = "jailhouse"
> +LICENSE = "GPL-2.0 & BSD-2-Clause"
> +
> +LIC_FILES_CHKSUM = " \
> + file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
> +"
> +
> +PV = "0.10+git${SRCPV}"
> +SRCREV = "5c6aa2b78c6485e9455d9d1441df3d695e1a8b4e"
> +BRANCH = "ti-jailhouse-0.10"
> +
> +SRC_URI = " \
> + git://git.ti.com/jailhouse/ti-jailhouse.git;protocol=git;branch=${BRANCH} \
> +"
> +
> +DEPENDS = "virtual/kernel dtc-native python-mako-native python-mako make-native"
> +RDEPENDS_${PN} += "\
> + python-curses\
> + python-datetime\
> + python-argparse\
> + python-mmap\
> +"
> +
> +S = "${WORKDIR}/git"
> +
> +require jailhouse-arch.inc
> +inherit module pythonnative bash-completion deploy
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +JH_DATADIR ?= "${datadir}/jailhouse"
> +JH_EXEC_DIR ?= "${libexecdir}/jailhouse"
> +CELL_DIR ?= "${JH_DATADIR}/cells"
> +CELLCONF_DIR ?= "${JH_DATADIR}/configs"
> +INMATES_DIR ?= "${JH_DATADIR}/inmates"
> +
> +JH_CONFIG ?= "${S}/ci/jailhouse-config-x86.h"
> +JH_CONFIG_k3 ?= "${S}/ci/jailhouse-config-k3.h"
> +
> +JH_CELL_FILES ?= "*.cell"
> +JH_CELL_FILES_k3 ?= "k3-*.cell"
> +
> +JH_INMATE_DTB ?= ""
> +JH_INMATE_DTB_am65xx-evm ?= "inmate-k3-am654.dtb"
> +JH_INMATE_DTB_j7-evm ?= "inmate-k3-j721e-evm.dtb"
> +
> +JH_LINUX_DEMO_CELL ?= ""
> +JH_LINUX_DEMO_CELL_am65xx-evm ?= "k3-am654-linux-demo.cell"
> +JH_LINUX_DEMO_CELL_j7-evm ?= "k3-j721e-evm-linux-demo.cell"
> +
> +JH_SYSCONFIG_CELL ?= ""
> +JH_SYSCONFIG_CELL_am65xx-evm ?= "k3-am654.cell"
> +JH_SYSCONFIG_CELL_j7-evm ?= "k3-j721e-evm.cell"
> +
> +JH_CMDLINE ?= ""
> +JH_CMDLINE_k3 ?= "console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlycon=ns16550a,mmio32,0x2810000"
> +
> +do_configure() {
> + if [ -d ${STAGING_DIR_HOST}/${CELLCONF_DIR} ];
> + then
> + cp ${STAGING_DIR_HOST}/${CELLCONF_DIR}/*.c ${S}/configs/
> + fi
> +
> + cp -av ${JH_CONFIG} ${S}/include/jailhouse/config.h
> +}
> +
> +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=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR}
> +}
> +
> +python __anonymous () {
> + d.appendVarFlag('do_install', 'depends', ' virtual/kernel:do_deploy')
> + initrd = d.getVar('INITRAMFS_IMAGE', True)
> + if initrd:
> + d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
> +}
> +
> +do_install() {
> + oe_runmake ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR} DESTDIR=${D} install
> +
> + install -d ${D}${CELL_DIR}
> + install -m 0644 ${B}/configs/${JH_ARCH}/${JH_CELL_FILES} ${D}${CELL_DIR}/
> +
> + install -d ${D}${INMATES_DIR}
> + install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
> +
> + install -d ${D}/boot
> +
> + if [ -n "${JH_INMATE_DTB}" -a -n "${JH_LINUX_DEMO_CELL}" ]; then
> + cd ${TOOLS_SRC_DIR}
> +
> + echo "#! /bin/sh" > ${D}${JH_DATADIR}/linux-demo.sh
> + echo "jailhouse enable ${CELL_DIR}/${JH_SYSCONFIG_CELL}" >> ${D}${JH_DATADIR}/linux-demo.sh
> + ./jailhouse-cell-linux -w ${D}${JH_DATADIR}/${JH_INMATE_DTB} \
> + -a ${JH_ARCH} -c "${JH_CMDLINE}" \
> + -d ../configs/${JH_ARCH}/dts/${JH_INMATE_DTB} \
> + ${D}${CELL_DIR}/${JH_LINUX_DEMO_CELL} \
> + ${DEPLOY_DIR_IMAGE}/Image \
> + | tr -cd '\11\12\15\40-\176' \
> + >> ${D}${JH_DATADIR}/linux-demo.sh
> +
> + sed -i -e 's,^Modified device tree written.*,,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${D},,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's, linux-loader.bin, ${JH_EXEC_DIR}/linux-loader.bin,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${DEPLOY_DIR_IMAGE},/boot,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e '/^\s*$/d' ${D}${JH_DATADIR}/linux-demo.sh
> + chmod +x ${D}${JH_DATADIR}/linux-demo.sh
> + fi
> +}
> +
> +
> +PACKAGE_BEFORE_PN = "kernel-module-jailhouse"
> +FILES_${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR} /boot"
> +
> +INSANE_SKIP_${PN} = "ldflags"
> +
> +KERNEL_MODULE_AUTOLOAD += "jailhouse"
I think we should not autoload this.
This only autloads the kernel module, Jailhouse is not installed yet.
The Root cell Linux continues to run in non virtualized environment.
- Subhajit
> +
> +# Any extra cells/inmates from external recipes/packages
> +CELLS = ""
> +
> +python __anonymous () {
> + # Setup DEPENDS and RDEPENDS to included cells"
> + cells = d.getVar('CELLS', True) or ""
> + for cell in cells.split():
> + d.appendVar('DEPENDS', ' ' + cell)
> + d.appendVar('RDEPENDS_${PN}', ' ' + cell)
> +}
--
_______________________________________________
meta-ti mailing list
meta-ti@yoctoproject.org
https://lists.yoctoproject.org/listinfo/meta-ti
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [EXTERNAL] [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
2019-07-07 14:00 ` Devshatwar, Nikhil
@ 2019-07-08 16:08 ` Paul, Subhajit
0 siblings, 0 replies; 6+ messages in thread
From: Paul, Subhajit @ 2019-07-08 16:08 UTC (permalink / raw)
To: Devshatwar, Nikhil, meta-ti@yoctoproject.org
Reviewed-by: Subhajit Paul <subhajit_paul@ti..com>
Tested-by: Subhajit Paul <subhajit_paul@ti..com>
-----Original Message-----
From: Devshatwar, Nikhil
Sent: Sunday, July 7, 2019 7:31 PM
To: Paul, Subhajit; meta-ti@yoctoproject.org
Subject: RE: [meta-ti] [EXTERNAL] [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
-----Original Message-----
From: meta-ti-bounces@yoctoproject.org [mailto:meta-ti-bounces@yoctoproject.org] On Behalf Of Paul, Subhajit
Sent: Sunday, July 7, 2019 3:04 PM
To: meta-ti@yoctoproject.org
Subject: Re: [meta-ti] [EXTERNAL] [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
On 05/07/19 8:33 PM, Nikhil Devshatwar wrote:
> From: Denys Dmytriyenko <denys@ti.com>
>
> Builds the Jailhouse kernel module, hypervisor binaries
> and all the cell configs for root cell and other demos.
> Generate the linux-demo loader script without initramfs.
>
> Supports am65x and j7-evm machines
>
> [nikhil.nd@ti.com: Update for public trees]
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
> ---
> Changes from v1:
> * Fix issues with building tools
> * Remove the makefile patch
>
> recipes-bsp/jailhouse/jailhouse-arch.inc | 20 +++++
> recipes-bsp/jailhouse/jailhouse_git.bb | 141 +++++++++++++++++++++++++++++++
> 2 files changed, 161 insertions(+)
> create mode 100644 recipes-bsp/jailhouse/jailhouse-arch.inc
> create mode 100644 recipes-bsp/jailhouse/jailhouse_git.bb
>
> diff --git a/recipes-bsp/jailhouse/jailhouse-arch.inc b/recipes-bsp/jailhouse/jailhouse-arch.inc
> new file mode 100644
> index 0000000..e06ec23
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse-arch.inc
> @@ -0,0 +1,20 @@
> +# Set jailhouse architecture JH_ARCH variable
> +#
> +# return value must match one of architectures supported by jailhouse
> +#
> +valid_jh_archs = "x86 arm"
> +
> +def map_jh_arch(a, d):
> + import re
> +
> + valid_jh_archs = d.getVar('valid_jh_archs', True).split()
> +
> + if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
> + elif re.match('armeb$', a): return 'arm'
> + elif re.match('aarch64$', a): return 'arm64'
> + elif re.match('aarch64_be$', a): return 'arm64'
> + elif a in valid_jh_archs: return a
> + else:
> + bb.error("cannot map '%s' to a jailhouse supported architecture" % a)
> +
> +export JH_ARCH = "${@map_jh_arch(d.getVar('TARGET_ARCH', True), d)}"
> diff --git a/recipes-bsp/jailhouse/jailhouse_git.bb b/recipes-bsp/jailhouse/jailhouse_git.bb
> new file mode 100644
> index 0000000..18b984f
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse_git.bb
> @@ -0,0 +1,141 @@
> +SUMMARY = "Linux-based partitioning hypervisor"
> +DESCRIPTION = "Jailhouse is a partitioning Hypervisor based on Linux. It is able to run bare-metal applications or (adapted) \
> +operating systems besides Linux. For this purpose, it configures CPU and device virtualization features of the hardware \
> +platform in a way that none of these domains, called 'cells' here, can interfere with each other in an unacceptable way."
> +HOMEPAGE = "https://github.com/siemens/jailhouse"
> +SECTION = "jailhouse"
> +LICENSE = "GPL-2.0 & BSD-2-Clause"
> +
> +LIC_FILES_CHKSUM = " \
> + file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
> +"
> +
> +PV = "0.10+git${SRCPV}"
> +SRCREV = "5c6aa2b78c6485e9455d9d1441df3d695e1a8b4e"
> +BRANCH = "ti-jailhouse-0.10"
> +
> +SRC_URI = " \
> + git://git.ti.com/jailhouse/ti-jailhouse.git;protocol=git;branch=${BRANCH} \
> +"
> +
> +DEPENDS = "virtual/kernel dtc-native python-mako-native python-mako make-native"
> +RDEPENDS_${PN} += "\
> + python-curses\
> + python-datetime\
> + python-argparse\
> + python-mmap\
> +"
> +
> +S = "${WORKDIR}/git"
> +
> +require jailhouse-arch.inc
> +inherit module pythonnative bash-completion deploy
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +JH_DATADIR ?= "${datadir}/jailhouse"
> +JH_EXEC_DIR ?= "${libexecdir}/jailhouse"
> +CELL_DIR ?= "${JH_DATADIR}/cells"
> +CELLCONF_DIR ?= "${JH_DATADIR}/configs"
> +INMATES_DIR ?= "${JH_DATADIR}/inmates"
> +
> +JH_CONFIG ?= "${S}/ci/jailhouse-config-x86.h"
> +JH_CONFIG_k3 ?= "${S}/ci/jailhouse-config-k3.h"
> +
> +JH_CELL_FILES ?= "*.cell"
> +JH_CELL_FILES_k3 ?= "k3-*.cell"
> +
> +JH_INMATE_DTB ?= ""
> +JH_INMATE_DTB_am65xx-evm ?= "inmate-k3-am654.dtb"
> +JH_INMATE_DTB_j7-evm ?= "inmate-k3-j721e-evm.dtb"
> +
> +JH_LINUX_DEMO_CELL ?= ""
> +JH_LINUX_DEMO_CELL_am65xx-evm ?= "k3-am654-linux-demo.cell"
> +JH_LINUX_DEMO_CELL_j7-evm ?= "k3-j721e-evm-linux-demo.cell"
> +
> +JH_SYSCONFIG_CELL ?= ""
> +JH_SYSCONFIG_CELL_am65xx-evm ?= "k3-am654.cell"
> +JH_SYSCONFIG_CELL_j7-evm ?= "k3-j721e-evm.cell"
> +
> +JH_CMDLINE ?= ""
> +JH_CMDLINE_k3 ?= "console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlycon=ns16550a,mmio32,0x2810000"
> +
> +do_configure() {
> + if [ -d ${STAGING_DIR_HOST}/${CELLCONF_DIR} ];
> + then
> + cp ${STAGING_DIR_HOST}/${CELLCONF_DIR}/*.c ${S}/configs/
> + fi
> +
> + cp -av ${JH_CONFIG} ${S}/include/jailhouse/config.h
> +}
> +
> +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=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR}
> +}
> +
> +python __anonymous () {
> + d.appendVarFlag('do_install', 'depends', ' virtual/kernel:do_deploy')
> + initrd = d.getVar('INITRAMFS_IMAGE', True)
> + if initrd:
> + d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
> +}
> +
> +do_install() {
> + oe_runmake ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR} DESTDIR=${D} install
> +
> + install -d ${D}${CELL_DIR}
> + install -m 0644 ${B}/configs/${JH_ARCH}/${JH_CELL_FILES} ${D}${CELL_DIR}/
> +
> + install -d ${D}${INMATES_DIR}
> + install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
> +
> + install -d ${D}/boot
> +
> + if [ -n "${JH_INMATE_DTB}" -a -n "${JH_LINUX_DEMO_CELL}" ]; then
> + cd ${TOOLS_SRC_DIR}
> +
> + echo "#! /bin/sh" > ${D}${JH_DATADIR}/linux-demo.sh
> + echo "jailhouse enable ${CELL_DIR}/${JH_SYSCONFIG_CELL}" >> ${D}${JH_DATADIR}/linux-demo.sh
> + ./jailhouse-cell-linux -w ${D}${JH_DATADIR}/${JH_INMATE_DTB} \
> + -a ${JH_ARCH} -c "${JH_CMDLINE}" \
> + -d ../configs/${JH_ARCH}/dts/${JH_INMATE_DTB} \
> + ${D}${CELL_DIR}/${JH_LINUX_DEMO_CELL} \
> + ${DEPLOY_DIR_IMAGE}/Image \
> + | tr -cd '\11\12\15\40-\176' \
> + >> ${D}${JH_DATADIR}/linux-demo.sh
> +
> + sed -i -e 's,^Modified device tree written.*,,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${D},,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's, linux-loader.bin, ${JH_EXEC_DIR}/linux-loader.bin,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${DEPLOY_DIR_IMAGE},/boot,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e '/^\s*$/d' ${D}${JH_DATADIR}/linux-demo.sh
> + chmod +x ${D}${JH_DATADIR}/linux-demo.sh
> + fi
> +}
> +
> +
> +PACKAGE_BEFORE_PN = "kernel-module-jailhouse"
> +FILES_${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR} /boot"
> +
> +INSANE_SKIP_${PN} = "ldflags"
> +
> +KERNEL_MODULE_AUTOLOAD += "jailhouse"
I think we should not autoload this.
This only autloads the kernel module, Jailhouse is not installed yet.
The Root cell Linux continues to run in non virtualized environment.
- Subhajit
> +
> +# Any extra cells/inmates from external recipes/packages
> +CELLS = ""
> +
> +python __anonymous () {
> + # Setup DEPENDS and RDEPENDS to included cells"
> + cells = d.getVar('CELLS', True) or ""
> + for cell in cells.split():
> + d.appendVar('DEPENDS', ' ' + cell)
> + d.appendVar('RDEPENDS_${PN}', ' ' + cell)
> +}
--
_______________________________________________
meta-ti mailing list
meta-ti@yoctoproject.org
https://lists.yoctoproject.org/listinfo/meta-ti
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
2019-07-05 15:03 [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo Nikhil Devshatwar
2019-07-07 9:34 ` [EXTERNAL] " Subhajit Paul
@ 2019-07-08 17:08 ` Denys Dmytriyenko
2019-07-08 18:36 ` Devshatwar, Nikhil
1 sibling, 1 reply; 6+ messages in thread
From: Denys Dmytriyenko @ 2019-07-08 17:08 UTC (permalink / raw)
To: Nikhil Devshatwar; +Cc: meta-ti, karthik.ramanan
On Fri, Jul 05, 2019 at 08:33:20PM +0530, Nikhil Devshatwar wrote:
> From: Denys Dmytriyenko <denys@ti.com>
>
> Builds the Jailhouse kernel module, hypervisor binaries
> and all the cell configs for root cell and other demos.
> Generate the linux-demo loader script without initramfs.
>
> Supports am65x and j7-evm machines
>
> [nikhil.nd@ti.com: Update for public trees]
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
> ---
> Changes from v1:
> * Fix issues with building tools
> * Remove the makefile patch
>
> recipes-bsp/jailhouse/jailhouse-arch.inc | 20 +++++
> recipes-bsp/jailhouse/jailhouse_git.bb | 141 +++++++++++++++++++++++++++++++
Why was this moved? This should reside in recipes-kernel, not recipes-bsp.
> 2 files changed, 161 insertions(+)
> create mode 100644 recipes-bsp/jailhouse/jailhouse-arch.inc
> create mode 100644 recipes-bsp/jailhouse/jailhouse_git.bb
>
> diff --git a/recipes-bsp/jailhouse/jailhouse-arch.inc b/recipes-bsp/jailhouse/jailhouse-arch.inc
> new file mode 100644
> index 0000000..e06ec23
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse-arch.inc
> @@ -0,0 +1,20 @@
> +# Set jailhouse architecture JH_ARCH variable
> +#
> +# return value must match one of architectures supported by jailhouse
> +#
> +valid_jh_archs = "x86 arm"
> +
> +def map_jh_arch(a, d):
> + import re
> +
> + valid_jh_archs = d.getVar('valid_jh_archs', True).split()
> +
> + if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
> + elif re.match('armeb$', a): return 'arm'
> + elif re.match('aarch64$', a): return 'arm64'
> + elif re.match('aarch64_be$', a): return 'arm64'
> + elif a in valid_jh_archs: return a
> + else:
> + bb.error("cannot map '%s' to a jailhouse supported architecture" % a)
> +
> +export JH_ARCH = "${@map_jh_arch(d.getVar('TARGET_ARCH', True), d)}"
> diff --git a/recipes-bsp/jailhouse/jailhouse_git.bb b/recipes-bsp/jailhouse/jailhouse_git.bb
> new file mode 100644
> index 0000000..18b984f
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse_git.bb
> @@ -0,0 +1,141 @@
> +SUMMARY = "Linux-based partitioning hypervisor"
> +DESCRIPTION = "Jailhouse is a partitioning Hypervisor based on Linux. It is able to run bare-metal applications or (adapted) \
> +operating systems besides Linux. For this purpose, it configures CPU and device virtualization features of the hardware \
> +platform in a way that none of these domains, called 'cells' here, can interfere with each other in an unacceptable way."
> +HOMEPAGE = "https://github.com/siemens/jailhouse"
> +SECTION = "jailhouse"
> +LICENSE = "GPL-2.0 & BSD-2-Clause"
> +
> +LIC_FILES_CHKSUM = " \
> + file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
> +"
> +
> +PV = "0.10+git${SRCPV}"
> +SRCREV = "5c6aa2b78c6485e9455d9d1441df3d695e1a8b4e"
> +BRANCH = "ti-jailhouse-0.10"
> +
> +SRC_URI = " \
> + git://git.ti.com/jailhouse/ti-jailhouse.git;protocol=git;branch=${BRANCH} \
> +"
> +
> +DEPENDS = "virtual/kernel dtc-native python-mako-native python-mako make-native"
> +RDEPENDS_${PN} += "\
> + python-curses\
> + python-datetime\
> + python-argparse\
> + python-mmap\
> +"
> +
> +S = "${WORKDIR}/git"
> +
> +require jailhouse-arch.inc
> +inherit module pythonnative bash-completion deploy
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +JH_DATADIR ?= "${datadir}/jailhouse"
> +JH_EXEC_DIR ?= "${libexecdir}/jailhouse"
> +CELL_DIR ?= "${JH_DATADIR}/cells"
> +CELLCONF_DIR ?= "${JH_DATADIR}/configs"
> +INMATES_DIR ?= "${JH_DATADIR}/inmates"
> +
> +JH_CONFIG ?= "${S}/ci/jailhouse-config-x86.h"
> +JH_CONFIG_k3 ?= "${S}/ci/jailhouse-config-k3.h"
> +
> +JH_CELL_FILES ?= "*.cell"
> +JH_CELL_FILES_k3 ?= "k3-*.cell"
> +
> +JH_INMATE_DTB ?= ""
> +JH_INMATE_DTB_am65xx-evm ?= "inmate-k3-am654.dtb"
> +JH_INMATE_DTB_j7-evm ?= "inmate-k3-j721e-evm.dtb"
> +
> +JH_LINUX_DEMO_CELL ?= ""
> +JH_LINUX_DEMO_CELL_am65xx-evm ?= "k3-am654-linux-demo.cell"
> +JH_LINUX_DEMO_CELL_j7-evm ?= "k3-j721e-evm-linux-demo.cell"
> +
> +JH_SYSCONFIG_CELL ?= ""
> +JH_SYSCONFIG_CELL_am65xx-evm ?= "k3-am654.cell"
> +JH_SYSCONFIG_CELL_j7-evm ?= "k3-j721e-evm.cell"
> +
> +JH_CMDLINE ?= ""
> +JH_CMDLINE_k3 ?= "console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlycon=ns16550a,mmio32,0x2810000"
> +
> +do_configure() {
> + if [ -d ${STAGING_DIR_HOST}/${CELLCONF_DIR} ];
> + then
> + cp ${STAGING_DIR_HOST}/${CELLCONF_DIR}/*.c ${S}/configs/
> + fi
> +
> + cp -av ${JH_CONFIG} ${S}/include/jailhouse/config.h
> +}
> +
> +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=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR}
> +}
> +
> +python __anonymous () {
> + d.appendVarFlag('do_install', 'depends', ' virtual/kernel:do_deploy')
> + initrd = d.getVar('INITRAMFS_IMAGE', True)
> + if initrd:
> + d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
> +}
> +
> +do_install() {
> + oe_runmake ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR} DESTDIR=${D} install
> +
> + install -d ${D}${CELL_DIR}
> + install -m 0644 ${B}/configs/${JH_ARCH}/${JH_CELL_FILES} ${D}${CELL_DIR}/
> +
> + install -d ${D}${INMATES_DIR}
> + install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
> +
> + install -d ${D}/boot
> +
> + if [ -n "${JH_INMATE_DTB}" -a -n "${JH_LINUX_DEMO_CELL}" ]; then
> + cd ${TOOLS_SRC_DIR}
> +
> + echo "#! /bin/sh" > ${D}${JH_DATADIR}/linux-demo.sh
> + echo "jailhouse enable ${CELL_DIR}/${JH_SYSCONFIG_CELL}" >> ${D}${JH_DATADIR}/linux-demo.sh
> + ./jailhouse-cell-linux -w ${D}${JH_DATADIR}/${JH_INMATE_DTB} \
> + -a ${JH_ARCH} -c "${JH_CMDLINE}" \
> + -d ../configs/${JH_ARCH}/dts/${JH_INMATE_DTB} \
> + ${D}${CELL_DIR}/${JH_LINUX_DEMO_CELL} \
> + ${DEPLOY_DIR_IMAGE}/Image \
> + | tr -cd '\11\12\15\40-\176' \
> + >> ${D}${JH_DATADIR}/linux-demo.sh
> +
> + sed -i -e 's,^Modified device tree written.*,,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${D},,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's, linux-loader.bin, ${JH_EXEC_DIR}/linux-loader.bin,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${DEPLOY_DIR_IMAGE},/boot,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e '/^\s*$/d' ${D}${JH_DATADIR}/linux-demo.sh
> + chmod +x ${D}${JH_DATADIR}/linux-demo.sh
> + fi
> +}
> +
> +
> +PACKAGE_BEFORE_PN = "kernel-module-jailhouse"
> +FILES_${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR} /boot"
> +
> +INSANE_SKIP_${PN} = "ldflags"
> +
> +KERNEL_MODULE_AUTOLOAD += "jailhouse"
> +
> +# Any extra cells/inmates from external recipes/packages
> +CELLS = ""
> +
> +python __anonymous () {
> + # Setup DEPENDS and RDEPENDS to included cells"
> + cells = d.getVar('CELLS', True) or ""
> + for cell in cells.split():
> + d.appendVar('DEPENDS', ' ' + cell)
> + d.appendVar('RDEPENDS_${PN}', ' ' + cell)
> +}
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
2019-07-08 17:08 ` Denys Dmytriyenko
@ 2019-07-08 18:36 ` Devshatwar, Nikhil
0 siblings, 0 replies; 6+ messages in thread
From: Devshatwar, Nikhil @ 2019-07-08 18:36 UTC (permalink / raw)
To: Dmytriyenko, Denys; +Cc: meta-ti@yoctoproject.org, R, Karthik
From: Dmytriyenko, Denys
Sent: Monday, July 8, 2019 10:39 PM
To: Devshatwar, Nikhil
Cc: meta-ti@yoctoproject.org; R, Karthik
Subject: Re: [[meta-ti] thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo
On Fri, Jul 05, 2019 at 08:33:20PM +0530, Nikhil Devshatwar wrote:
> From: Denys Dmytriyenko <denys@ti.com>
>
> Builds the Jailhouse kernel module, hypervisor binaries
> and all the cell configs for root cell and other demos.
> Generate the linux-demo loader script without initramfs.
>
> Supports am65x and j7-evm machines
>
> [nikhil.nd@ti.com: Update for public trees]
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
> ---
> Changes from v1:
> * Fix issues with building tools
> * Remove the makefile patch
>
> recipes-bsp/jailhouse/jailhouse-arch.inc | 20 +++++
> recipes-bsp/jailhouse/jailhouse_git.bb | 141 +++++++++++++++++++++++++++++++
Why was this moved? This should reside in recipes-kernel, not recipes-bsp.
I thought hypervisor falls in the same category as other BSP components like uboot, ATF
Regards,
Nikhil D
> 2 files changed, 161 insertions(+)
> create mode 100644 recipes-bsp/jailhouse/jailhouse-arch.inc
> create mode 100644 recipes-bsp/jailhouse/jailhouse_git.bb
>
> diff --git a/recipes-bsp/jailhouse/jailhouse-arch.inc b/recipes-bsp/jailhouse/jailhouse-arch.inc
> new file mode 100644
> index 0000000..e06ec23
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse-arch.inc
> @@ -0,0 +1,20 @@
> +# Set jailhouse architecture JH_ARCH variable
> +#
> +# return value must match one of architectures supported by jailhouse
> +#
> +valid_jh_archs = "x86 arm"
> +
> +def map_jh_arch(a, d):
> + import re
> +
> + valid_jh_archs = d.getVar('valid_jh_archs', True).split()
> +
> + if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
> + elif re.match('armeb$', a): return 'arm'
> + elif re.match('aarch64$', a): return 'arm64'
> + elif re.match('aarch64_be$', a): return 'arm64'
> + elif a in valid_jh_archs: return a
> + else:
> + bb.error("cannot map '%s' to a jailhouse supported architecture" % a)
> +
> +export JH_ARCH = "${@map_jh_arch(d.getVar('TARGET_ARCH', True), d)}"
> diff --git a/recipes-bsp/jailhouse/jailhouse_git.bb b/recipes-bsp/jailhouse/jailhouse_git.bb
> new file mode 100644
> index 0000000..18b984f
> --- /dev/null
> +++ b/recipes-bsp/jailhouse/jailhouse_git.bb
> @@ -0,0 +1,141 @@
> +SUMMARY = "Linux-based partitioning hypervisor"
> +DESCRIPTION = "Jailhouse is a partitioning Hypervisor based on Linux. It is able to run bare-metal applications or (adapted) \
> +operating systems besides Linux. For this purpose, it configures CPU and device virtualization features of the hardware \
> +platform in a way that none of these domains, called 'cells' here, can interfere with each other in an unacceptable way."
> +HOMEPAGE = "https://github.com/siemens/jailhouse"
> +SECTION = "jailhouse"
> +LICENSE = "GPL-2.0 & BSD-2-Clause"
> +
> +LIC_FILES_CHKSUM = " \
> + file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
> +"
> +
> +PV = "0.10+git${SRCPV}"
> +SRCREV = "5c6aa2b78c6485e9455d9d1441df3d695e1a8b4e"
> +BRANCH = "ti-jailhouse-0.10"
> +
> +SRC_URI = " \
> + git://git.ti.com/jailhouse/ti-jailhouse.git;protocol=git;branch=${BRANCH} \
> +"
> +
> +DEPENDS = "virtual/kernel dtc-native python-mako-native python-mako make-native"
> +RDEPENDS_${PN} += "\
> + python-curses\
> + python-datetime\
> + python-argparse\
> + python-mmap\
> +"
> +
> +S = "${WORKDIR}/git"
> +
> +require jailhouse-arch.inc
> +inherit module pythonnative bash-completion deploy
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +JH_DATADIR ?= "${datadir}/jailhouse"
> +JH_EXEC_DIR ?= "${libexecdir}/jailhouse"
> +CELL_DIR ?= "${JH_DATADIR}/cells"
> +CELLCONF_DIR ?= "${JH_DATADIR}/configs"
> +INMATES_DIR ?= "${JH_DATADIR}/inmates"
> +
> +JH_CONFIG ?= "${S}/ci/jailhouse-config-x86.h"
> +JH_CONFIG_k3 ?= "${S}/ci/jailhouse-config-k3.h"
> +
> +JH_CELL_FILES ?= "*.cell"
> +JH_CELL_FILES_k3 ?= "k3-*.cell"
> +
> +JH_INMATE_DTB ?= ""
> +JH_INMATE_DTB_am65xx-evm ?= "inmate-k3-am654.dtb"
> +JH_INMATE_DTB_j7-evm ?= "inmate-k3-j721e-evm.dtb"
> +
> +JH_LINUX_DEMO_CELL ?= ""
> +JH_LINUX_DEMO_CELL_am65xx-evm ?= "k3-am654-linux-demo.cell"
> +JH_LINUX_DEMO_CELL_j7-evm ?= "k3-j721e-evm-linux-demo.cell"
> +
> +JH_SYSCONFIG_CELL ?= ""
> +JH_SYSCONFIG_CELL_am65xx-evm ?= "k3-am654.cell"
> +JH_SYSCONFIG_CELL_j7-evm ?= "k3-j721e-evm.cell"
> +
> +JH_CMDLINE ?= ""
> +JH_CMDLINE_k3 ?= "console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlycon=ns16550a,mmio32,0x2810000"
> +
> +do_configure() {
> + if [ -d ${STAGING_DIR_HOST}/${CELLCONF_DIR} ];
> + then
> + cp ${STAGING_DIR_HOST}/${CELLCONF_DIR}/*.c ${S}/configs/
> + fi
> +
> + cp -av ${JH_CONFIG} ${S}/include/jailhouse/config.h
> +}
> +
> +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=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR}
> +}
> +
> +python __anonymous () {
> + d.appendVarFlag('do_install', 'depends', ' virtual/kernel:do_deploy')
> + initrd = d.getVar('INITRAMFS_IMAGE', True)
> + if initrd:
> + d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
> +}
> +
> +do_install() {
> + oe_runmake ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} KDIR=${STAGING_KERNEL_BUILDDIR} DESTDIR=${D} install
> +
> + install -d ${D}${CELL_DIR}
> + install -m 0644 ${B}/configs/${JH_ARCH}/${JH_CELL_FILES} ${D}${CELL_DIR}/
> +
> + install -d ${D}${INMATES_DIR}
> + install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
> +
> + install -d ${D}/boot
> +
> + if [ -n "${JH_INMATE_DTB}" -a -n "${JH_LINUX_DEMO_CELL}" ]; then
> + cd ${TOOLS_SRC_DIR}
> +
> + echo "#! /bin/sh" > ${D}${JH_DATADIR}/linux-demo.sh
> + echo "jailhouse enable ${CELL_DIR}/${JH_SYSCONFIG_CELL}" >> ${D}${JH_DATADIR}/linux-demo.sh
> + ./jailhouse-cell-linux -w ${D}${JH_DATADIR}/${JH_INMATE_DTB} \
> + -a ${JH_ARCH} -c "${JH_CMDLINE}" \
> + -d ../configs/${JH_ARCH}/dts/${JH_INMATE_DTB} \
> + ${D}${CELL_DIR}/${JH_LINUX_DEMO_CELL} \
> + ${DEPLOY_DIR_IMAGE}/Image \
> + | tr -cd '\11\12\15\40-\176' \
> + >> ${D}${JH_DATADIR}/linux-demo.sh
> +
> + sed -i -e 's,^Modified device tree written.*,,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${D},,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's, linux-loader.bin, ${JH_EXEC_DIR}/linux-loader.bin,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e 's,\${DEPLOY_DIR_IMAGE},/boot,g' ${D}${JH_DATADIR}/linux-demo.sh
> + sed -i -e '/^\s*$/d' ${D}${JH_DATADIR}/linux-demo.sh
> + chmod +x ${D}${JH_DATADIR}/linux-demo.sh
> + fi
> +}
> +
> +
> +PACKAGE_BEFORE_PN = "kernel-module-jailhouse"
> +FILES_${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR} /boot"
> +
> +INSANE_SKIP_${PN} = "ldflags"
> +
> +KERNEL_MODULE_AUTOLOAD += "jailhouse"
> +
> +# Any extra cells/inmates from external recipes/packages
> +CELLS = ""
> +
> +python __anonymous () {
> + # Setup DEPENDS and RDEPENDS to included cells"
> + cells = d.getVar('CELLS', True) or ""
> + for cell in cells.split():
> + d.appendVar('DEPENDS', ' ' + cell)
> + d.appendVar('RDEPENDS_${PN}', ' ' + cell)
> +}
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-07-08 18:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-05 15:03 [ thud PATCH v2] jailhouse: add recipe for Jailhouse module, FW, cells, inmates and basic demo Nikhil Devshatwar
2019-07-07 9:34 ` [EXTERNAL] " Subhajit Paul
2019-07-07 14:00 ` Devshatwar, Nikhil
2019-07-08 16:08 ` Paul, Subhajit
2019-07-08 17:08 ` Denys Dmytriyenko
2019-07-08 18:36 ` Devshatwar, Nikhil
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.