summaryrefslogtreecommitdiffstats
path: root/meta-ti-extras/recipes-ti/jailhouse/jailhouse_git.bb
diff options
context:
space:
mode:
authorParesh Bhagat <p-bhagat@ti.com>2023-05-03 17:24:22 +0530
committerRyan Eatmon <reatmon@ti.com>2023-05-08 11:17:40 -0500
commit31eb1aa2b7a437d90c1bc525afcf5603fa884650 (patch)
treef4f209940fcd93f4e8561e444dc6d82b37f4f130 /meta-ti-extras/recipes-ti/jailhouse/jailhouse_git.bb
parentd3c2c6e8097c9913982a4d0746956949da81e058 (diff)
downloadmeta-ti-31eb1aa2b7a437d90c1bc525afcf5603fa884650.tar.gz
recipes-ti: Add recipe and patches for jailhouse support for am62xx
Add and enable Jailhouse support for TI's k3-am625-sk similarly to how other TI platforms were added and enabled in the past by adding platform-specific configuration variables for the root cell DTB overlay, and the Linux demo inmate DTB, configuration, and Kernel command line settings. Migrate the jailhouse recipe to kirkstone from dunfell. Switch to latest upstream source tree for jailhouse. The TI Jailhouse repo has gone stale and now upstream is really the happening place where new development happens including for new devices such as AM62x. Hence go ahead and switch to using the upstream repo. Update the platform-specific config files to such that the root cell DTB overlay gets included in the file system images. Enable additional console on ttyS3 (usually mapped to main_uart1) and ttyS2 for the Linux demo inmate to use. Add patches for the Jailhouse source tree for am62xx. Signed-off-by: Andreas Dannenberg <dannenberg@ti.com> Signed-off-by: Ricardo Salveti <ricardo@foundries.io> Signed-off-by: Paresh Bhagat <p-bhagat@ti.com> Signed-off-by: Ryan Eatmon <reatmon@ti.com>
Diffstat (limited to 'meta-ti-extras/recipes-ti/jailhouse/jailhouse_git.bb')
-rw-r--r--meta-ti-extras/recipes-ti/jailhouse/jailhouse_git.bb209
1 files changed, 209 insertions, 0 deletions
diff --git a/meta-ti-extras/recipes-ti/jailhouse/jailhouse_git.bb b/meta-ti-extras/recipes-ti/jailhouse/jailhouse_git.bb
new file mode 100644
index 00000000..05cc21b3
--- /dev/null
+++ b/meta-ti-extras/recipes-ti/jailhouse/jailhouse_git.bb
@@ -0,0 +1,209 @@
1SUMMARY = "Linux-based partitioning hypervisor"
2DESCRIPTION = "Jailhouse is a partitioning Hypervisor based on Linux. It is able to run bare-metal applications or (adapted) \
3operating systems besides Linux. For this purpose, it configures CPU and device virtualization features of the hardware \
4platform in a way that none of these domains, called 'cells' here, can interfere with each other in an unacceptable way."
5HOMEPAGE = "https://github.com/siemens/jailhouse"
6SECTION = "jailhouse"
7LICENSE = "GPL-2.0-only & BSD-2-Clause"
8
9LIC_FILES_CHKSUM = " \
10 file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
11"
12
13TARGET_CC_ARCH += "${LDFLAGS}"
14
15PV = "0.12+git${SRCPV}"
16SRCREV = "e57d1eff6d55aeed5f977fe4e2acfb6ccbdd7560"
17BRANCH = "master"
18
19SRC_URI = " \
20 git://github.com/siemens/jailhouse.git;protocol=https;branch=${BRANCH} \
21 file://0001-configs-arm64-k3-am625-sk-Add-crypto-memory-region.patch \
22 file://0002-configs-arm64-k3-am625-sk-Switch-inmate-boot-console.patch \
23 file://0003-configs-arm64-k3-am625-sk-Add-VTM-memory-region.patch \
24 file://0001-configs-k3-use-intx-for-bar_mask.patch \
25 file://0004-configs-arm64-k3-am625-sk-Add-GPMC-memory-region.patch \
26"
27
28DEPENDS = "virtual/kernel dtc-native python3-mako-native python3-mako make-native"
29RDEPENDS:${PN} += "\
30 python3-curses\
31 python3-datetime\
32 python3-mmap\
33"
34
35require jailhouse-arch.inc
36inherit module python3native bash-completion deploy setuptools3
37
38S = "${WORKDIR}/git"
39B = "${S}"
40
41PACKAGE_ARCH = "${MACHINE_ARCH}"
42COMPATIBLE_MACHINE = "(ti-soc)"
43
44JH_DATADIR ?= "${datadir}/jailhouse"
45JH_EXEC_DIR ?= "${libexecdir}/jailhouse"
46CELL_DIR ?= "${JH_DATADIR}/cells"
47CELLCONF_DIR ?= "${JH_DATADIR}/configs"
48INMATES_DIR ?= "${JH_DATADIR}/inmates"
49
50JH_CELL_FILES ?= "*.cell"
51JH_CELL_FILES:k3 ?= "k3-*.cell"
52
53JH_INMATE_DTB ?= ""
54JH_INMATE_DTB:am62xx ?= "inmate-k3-am625-sk.dtb"
55JH_INMATE_DTB:am65xx ?= "inmate-k3-am654-idk.dtb"
56JH_INMATE_DTB:j7 ?= "inmate-k3-j721e-evm.dtb"
57JH_INMATE_DTB:j7200-evm ?= "inmate-k3-j7200-evm.dtb"
58
59JH_LINUX_DEMO_CELL ?= ""
60JH_LINUX_DEMO_CELL:am62xx ?= "k3-am625-sk-linux-demo.cell"
61JH_LINUX_DEMO_CELL:am65xx ?= "k3-am654-idk-linux-demo.cell"
62JH_LINUX_DEMO_CELL:j7 ?= "k3-j721e-evm-linux-demo.cell"
63JH_LINUX_DEMO_CELL:j7200-evm ?= "k3-j7200-evm-linux-demo.cell"
64
65JH_SYSCONFIG_CELL ?= ""
66JH_SYSCONFIG_CELL:am62xx ?= "k3-am625-sk.cell"
67JH_SYSCONFIG_CELL:am65xx ?= "k3-am654-idk.cell"
68JH_SYSCONFIG_CELL:j7 ?= "k3-j721e-evm.cell"
69JH_SYSCONFIG_CELL:j7200-evm ?= "k3-j7200-evm.cell"
70
71INITRAMFS_IMAGE ?= ""
72JH_RAMFS_IMAGE ?= "${INITRAMFS_IMAGE}"
73
74JH_CMDLINE ?= ""
75JH_CMDLINE:am62xx ?= "console=ttyS3,115200n8 earlycon=ns16550a,mmio32,0x02810000"
76JH_CMDLINE:am65xx ?= "console=ttyS1,115200n8"
77JH_CMDLINE:j7 ?= "console=ttyS3,115200n8"
78JH_CMDLINE:j7200-evm ?= "console=ttyS3,115200n8"
79
80do_configure() {
81 if [ -d ${STAGING_DIR_HOST}/${CELLCONF_DIR} ];
82 then
83 cp ${STAGING_DIR_HOST}/${CELLCONF_DIR}/*.c ${S}/configs/
84 fi
85}
86
87USER_SPACE_CFLAGS = '${CFLAGS} -DLIBEXECDIR=\\\"${libexecdir}\\\" \
88 -DJAILHOUSE_VERSION=\\\"$JAILHOUSE_VERSION\\\" \
89 -Wall -Wextra -Wmissing-declarations -Wmissing-prototypes -Werror \
90 -I../driver'
91
92TOOLS_SRC_DIR = "${S}/tools"
93
94EXTRA_OEMAKE = "ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} CC="${CC}" KDIR=${STAGING_KERNEL_BUILDDIR}"
95
96do_compile() {
97 oe_runmake V=1
98}
99
100do_install() {
101 # Install pyjailhouse python modules needed by the tools
102 # distutils3_do_install
103
104 # We want to install the python tools, but we do not want to use pip...
105 # At least with v0.10, we can work around this with
106 # 'PIP=":" PYTHON_PIP_USEABLE=yes'
107 oe_runmake PIP=: PYTHON=python3 PYTHON_PIP_USEABLE=yes DESTDIR=${D} install
108
109 install -d ${D}${CELL_DIR}
110 install -m 0644 ${B}/configs/${JH_ARCH}/${JH_CELL_FILES} ${D}${CELL_DIR}/
111
112 install -d ${D}${INMATES_DIR}
113 install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
114
115 install -d ${D}/boot
116 if [ -n "${JH_RAMFS_IMAGE}" ]
117 then
118 if [ -f ${DEPLOY_DIR_IMAGE}/${JH_RAMFS_IMAGE}-${MACHINE}.cpio ]
119 then
120 install -m 0644 ${DEPLOY_DIR_IMAGE}/${JH_RAMFS_IMAGE}-${MACHINE}.cpio ${D}/boot
121 else
122 bberror "Could not find JH_RAMFS_IMAGE (${JH_RAMFS_IMAGE}-${MACHINE}.cpio)!"
123 bberror "Please make sure that \"cpio\" is in IMAGE_FSTYPES."
124 fi
125 fi
126
127 if [ -n "${JH_INMATE_DTB}" -a -n "${JH_LINUX_DEMO_CELL}" ]; then
128 cd ${TOOLS_SRC_DIR}
129
130 echo "#! /bin/sh" > ${D}${JH_DATADIR}/linux-demo.sh
131 echo "jailhouse enable ${CELL_DIR}/${JH_SYSCONFIG_CELL}" >> ${D}${JH_DATADIR}/linux-demo.sh
132 ./jailhouse-cell-linux -w ${D}${JH_DATADIR}/${JH_INMATE_DTB} \
133 -a ${JH_ARCH} -c "${JH_CMDLINE}" \
134 -d ../configs/${JH_ARCH}/dts/${JH_INMATE_DTB} \
135 -i ${D}/boot/${JH_RAMFS_IMAGE}-${MACHINE}.cpio \
136 ${D}${CELL_DIR}/${JH_LINUX_DEMO_CELL} \
137 ${DEPLOY_DIR_IMAGE}/Image \
138 | tr -cd '\11\12\15\40-\176' \
139 >> ${D}${JH_DATADIR}/linux-demo.sh
140
141 sed -i -e 's,^Modified device tree written.*,,g' ${D}${JH_DATADIR}/linux-demo.sh
142 sed -i -e 's,\${D},,g' ${D}${JH_DATADIR}/linux-demo.sh
143 sed -i -e 's, linux-loader.bin, ${JH_EXEC_DIR}/linux-loader.bin,g' ${D}${JH_DATADIR}/linux-demo.sh
144 sed -i -e 's,\${DEPLOY_DIR_IMAGE},/boot,g' ${D}${JH_DATADIR}/linux-demo.sh
145 sed -i -e '/^\s*$/d' ${D}${JH_DATADIR}/linux-demo.sh
146 chmod +x ${D}${JH_DATADIR}/linux-demo.sh
147 fi
148
149}
150
151PACKAGE_BEFORE_PN = "kernel-module-jailhouse pyjailhouse ${PN}-tools"
152FILES:${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR} /boot"
153FILES:pyjailhouse = "${PYTHON_SITEPACKAGES_DIR}"
154FILES:${PN}-tools = "${libexecdir}/${BPN}/${BPN}-*"
155
156RDEPENDS:${PN}-tools = "pyjailhouse python3-mmap python3-math python3-datetime python3-curses python3-compression"
157RDEPENDS:pyjailhouse = "python3-core python3-ctypes python3-fcntl python3-shell"
158
159RRECOMMENDS:${PN} = "${PN}-tools"
160
161INSANE_SKIP:${PN} = "ldflags"
162
163KERNEL_MODULE_AUTOLOAD += "jailhouse"
164
165# Any extra cells/inmates from external recipes/packages
166CELLS = ""
167
168python __anonymous () {
169 d.appendVarFlag('do_install', 'depends', ' virtual/kernel:do_deploy')
170 ramfs = d.getVar('JH_RAMFS_IMAGE', True)
171 if ramfs:
172 d.appendVarFlag('do_install', 'depends', ' ${JH_RAMFS_IMAGE}:do_image_complete')
173
174 # Setup DEPENDS and RDEPENDS to included cells
175 cells = d.getVar('CELLS', True) or ""
176 for cell in cells.split():
177 d.appendVar('DEPENDS', ' ' + cell)
178 d.appendVar('RDEPENDS_${PN}', ' ' + cell)
179}
180
181
182FILES:${PN} = " \
183 /boot \
184 /usr/libexec \
185 /usr/sbin/ivshmem-demo \
186 /usr/sbin/jailhouse \
187 /usr/libexec/jailhouse \
188 /usr/libexec/jailhouse/jailhouse-config-check \
189 /usr/libexec/jailhouse/jailhouse-config-collect \
190 /usr/libexec/jailhouse/jailhouse-hardware-check \
191 /usr/libexec/jailhouse/jailhouse-cell-stats \
192 /usr/libexec/jailhouse/linux-loader.bin \
193 /usr/libexec/jailhouse/jailhouse-cell-linux \
194 /usr/libexec/jailhouse/jailhouse-config-create \
195 /usr/share/jailhouse \
196 /usr/share/jailhouse/linux-demo.sh \
197 /usr/share/jailhouse/inmate-k3-am625-sk.dtb \
198 /usr/share/jailhouse/inmates \
199 /usr/share/jailhouse/cells \
200 /usr/share/jailhouse/inmates/gic-demo.bin \
201 /usr/share/jailhouse/inmates/ivshmem-demo.bin \
202 /usr/share/jailhouse/inmates/uart-demo.bin \
203 /usr/share/jailhouse/cells/k3-am625-sk.cell \
204 /usr/share/jailhouse/cells/k3-am625-sk-inmate-demo.cell \
205 /usr/share/jailhouse/cells/k3-am625-sk-linux-demo.cell \
206 /lib/firmware \
207 /lib/firmware/jailhouse.bin \
208 /boot/tisdk-tiny-image-am62xx-evm.cpio \
209"