summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-ti-bsp/conf/machine/include/am62xx.inc3
-rw-r--r--meta-ti-extras/recipes-ti/jailhouse/files/0001-configs-arm64-k3-am625-sk-Add-crypto-memory-region.patch52
-rw-r--r--meta-ti-extras/recipes-ti/jailhouse/files/0001-configs-k3-use-intx-for-bar_mask.patch72
-rw-r--r--meta-ti-extras/recipes-ti/jailhouse/files/0002-configs-arm64-k3-am625-sk-Switch-inmate-boot-console.patch62
-rw-r--r--meta-ti-extras/recipes-ti/jailhouse/files/0003-configs-arm64-k3-am625-sk-Add-VTM-memory-region.patch53
-rw-r--r--meta-ti-extras/recipes-ti/jailhouse/files/0004-configs-arm64-k3-am625-sk-Add-GPMC-memory-region.patch51
-rw-r--r--meta-ti-extras/recipes-ti/jailhouse/jailhouse-arch.inc22
-rw-r--r--meta-ti-extras/recipes-ti/jailhouse/jailhouse_git.bb209
8 files changed, 524 insertions, 0 deletions
diff --git a/meta-ti-bsp/conf/machine/include/am62xx.inc b/meta-ti-bsp/conf/machine/include/am62xx.inc
index 623d90eb..a205a18c 100644
--- a/meta-ti-bsp/conf/machine/include/am62xx.inc
+++ b/meta-ti-bsp/conf/machine/include/am62xx.inc
@@ -23,3 +23,6 @@ TFA_BOARD = "lite"
23TFA_K3_SYSTEM_SUSPEND = "1" 23TFA_K3_SYSTEM_SUSPEND = "1"
24 24
25OPTEEMACHINE = "k3-am62x" 25OPTEEMACHINE = "k3-am62x"
26
27# Normally AM62 boards use ttyS2, but our Jailhouse inmate may use ttyS3, so try both
28SERIAL_CONSOLES = "115200;ttyS2 115200;ttyS3"
diff --git a/meta-ti-extras/recipes-ti/jailhouse/files/0001-configs-arm64-k3-am625-sk-Add-crypto-memory-region.patch b/meta-ti-extras/recipes-ti/jailhouse/files/0001-configs-arm64-k3-am625-sk-Add-crypto-memory-region.patch
new file mode 100644
index 00000000..bfb57ae3
--- /dev/null
+++ b/meta-ti-extras/recipes-ti/jailhouse/files/0001-configs-arm64-k3-am625-sk-Add-crypto-memory-region.patch
@@ -0,0 +1,52 @@
1From 723ca87d25c1f8bac68d2608dbc3b5e8caba69ca Mon Sep 17 00:00:00 2001
2From: Andreas Dannenberg <dannenberg@ti.com>
3Date: Mon, 12 Sep 2022 13:22:04 -0500
4Subject: [PATCH] configs: arm64: k3-am625-sk: Add crypto memory region
5
6Add the memory region for the AM62x crypto accelerator to the device-
7specific config file. This fixes a runtime exception when the kernel
8accesses that memory region:
9
10<snip>
11Unhandled data read at 0x40910010(4)
12
13FATAL: unhandled trap (exception class 0x24)
14<snip>
15
16Upstream-Status: Submitted [jailhouse-dev@googlegroups.com]
17
18Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
19Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
20---
21 configs/arm64/k3-am625-sk.c | 9 ++++++++-
22 1 file changed, 8 insertions(+), 1 deletion(-)
23
24diff --git a/configs/arm64/k3-am625-sk.c b/configs/arm64/k3-am625-sk.c
25index 2e5c3aef..4b0b8043 100644
26--- a/configs/arm64/k3-am625-sk.c
27+++ b/configs/arm64/k3-am625-sk.c
28@@ -18,7 +18,7 @@
29 struct {
30 struct jailhouse_system header;
31 __u64 cpus[1];
32- struct jailhouse_memory mem_regions[31];
33+ struct jailhouse_memory mem_regions[32];
34 struct jailhouse_irqchip irqchips[5];
35 struct jailhouse_pci_device pci_devices[2];
36 } __attribute__((packed)) config = {
37@@ -231,6 +231,13 @@ struct {
38 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
39 JAILHOUSE_MEM_IO,
40 },
41+ /* CRYPTO */ {
42+ .phys_start = 0x40900000,
43+ .virt_start = 0x40900000,
44+ .size = 0x0030000,
45+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
46+ JAILHOUSE_MEM_IO,
47+ },
48 /* First Wake Up Domain */ {
49 .phys_start = 0x2b000000,
50 .virt_start = 0x2b000000,
51--
522.34.1
diff --git a/meta-ti-extras/recipes-ti/jailhouse/files/0001-configs-k3-use-intx-for-bar_mask.patch b/meta-ti-extras/recipes-ti/jailhouse/files/0001-configs-k3-use-intx-for-bar_mask.patch
new file mode 100644
index 00000000..c29baed5
--- /dev/null
+++ b/meta-ti-extras/recipes-ti/jailhouse/files/0001-configs-k3-use-intx-for-bar_mask.patch
@@ -0,0 +1,72 @@
1From 84ea5e9f65fc8082d520267258784cae32c8b499 Mon Sep 17 00:00:00 2001
2From: Ricardo Salveti <ricardo@foundries.io>
3Date: Wed, 1 Mar 2023 22:14:35 -0300
4Subject: [PATCH] configs/k3: use intx for bar_mask
5
6Fixes pci probe failure:
7
8[ 46.795840] pci 0001:00:00.0: BAR 0: no space for [mem size 0x00010000]
9[ 46.802516] pci 0001:00:00.0: BAR 0: failed to assign [mem size 0x00010000]
10[ 46.809512] pci 0001:00:01.0: BAR 0: no space for [mem size 0x00010000]
11[ 46.816158] pci 0001:00:01.0: BAR 0: failed to assign [mem size 0x00010000]
12
13Upstream-Status: Pending
14
15Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
16
17This patch was imported from foundriesio/meta-lmp
18(https://github.com/foundriesio/meta-lmp) as of commit id
1970d419bfd54a99d3591e5a22622fc67f7de82b94.
20
21Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
22---
23 configs/arm64/k3-am625-sk-linux-demo.c | 4 ++--
24 configs/arm64/k3-am625-sk.c | 4 ++--
25 2 files changed, 4 insertions(+), 4 deletions(-)
26
27diff --git a/configs/arm64/k3-am625-sk-linux-demo.c b/configs/arm64/k3-am625-sk-linux-demo.c
28index 6dac8859..dcc5f026 100644
29--- a/configs/arm64/k3-am625-sk-linux-demo.c
30+++ b/configs/arm64/k3-am625-sk-linux-demo.c
31@@ -197,7 +197,7 @@ struct {
32 /* 00:00.0 */ {
33 .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
34 .bdf = 0 << 3,
35- .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
36+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX,
37 .shmem_regions_start = 0,
38 .shmem_dev_id = 2,
39 .shmem_peers = 3,
40@@ -206,7 +206,7 @@ struct {
41 /* 00:01.0 */ {
42 .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
43 .bdf = 1 << 3,
44- .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
45+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX,
46 .shmem_regions_start = 5,
47 .shmem_dev_id = 1,
48 .shmem_peers = 2,
49diff --git a/configs/arm64/k3-am625-sk.c b/configs/arm64/k3-am625-sk.c
50index 69ab12a4..dcea42e0 100644
51--- a/configs/arm64/k3-am625-sk.c
52+++ b/configs/arm64/k3-am625-sk.c
53@@ -325,7 +325,7 @@ struct {
54 .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
55 .domain = 1,
56 .bdf = 0 << 3,
57- .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
58+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX,
59 .shmem_regions_start = 0,
60 .shmem_dev_id = 0,
61 .shmem_peers = 3,
62@@ -335,7 +335,7 @@ struct {
63 .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
64 .domain = 1,
65 .bdf = 1 << 3,
66- .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
67+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX,
68 .shmem_regions_start = 5,
69 .shmem_dev_id = 0,
70 .shmem_peers = 2,
71--
722.34.1
diff --git a/meta-ti-extras/recipes-ti/jailhouse/files/0002-configs-arm64-k3-am625-sk-Switch-inmate-boot-console.patch b/meta-ti-extras/recipes-ti/jailhouse/files/0002-configs-arm64-k3-am625-sk-Switch-inmate-boot-console.patch
new file mode 100644
index 00000000..3634c415
--- /dev/null
+++ b/meta-ti-extras/recipes-ti/jailhouse/files/0002-configs-arm64-k3-am625-sk-Switch-inmate-boot-console.patch
@@ -0,0 +1,62 @@
1From dbc02104bb469f68034b84f293583df413b8ca56 Mon Sep 17 00:00:00 2001
2From: Andreas Dannenberg <dannenberg@ti.com>
3Date: Mon, 12 Sep 2022 16:08:12 -0500
4Subject: [PATCH] configs: arm64: k3-am625-sk: Switch inmate boot console alias
5 to serial3
6
7Traditionally the serial3 DTS alias is used for the 2nd main-domain UART
8on K3 devices so go ahead and update the alias and its usage accordingly
9for better consistency.
10
11While at it also do a minor cleanup of the UART's DTS node to use the
12TISCI standard definitions as used in the corresponding Kernel DTS files.
13
14Upstream-Status: Submitted [jailhouse-dev@googlegroups.com]
15
16Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
17Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
18---
19 configs/arm64/dts/inmate-k3-am625-sk.dts | 11 ++++++-----
20 1 file changed, 6 insertions(+), 5 deletions(-)
21
22diff --git a/configs/arm64/dts/inmate-k3-am625-sk.dts b/configs/arm64/dts/inmate-k3-am625-sk.dts
23index c1455073..8e1bebb8 100644
24--- a/configs/arm64/dts/inmate-k3-am625-sk.dts
25+++ b/configs/arm64/dts/inmate-k3-am625-sk.dts
26@@ -1,6 +1,7 @@
27 /dts-v1/;
28
29 #include <dt-bindings/interrupt-controller/arm-gic.h>
30+#include <dt-bindings/soc/ti,sci_pm_domain.h>
31
32 / {
33 model = "Texas Instruments AM625 Inmate Model";
34@@ -10,11 +11,11 @@
35 #size-cells = <2>;
36
37 aliases {
38- serial1 = &main_uart1;
39+ serial3 = &main_uart1;
40 };
41
42 chosen {
43- stdout-path = "serial1:115200n8";
44+ stdout-path = "serial3:115200n8";
45 };
46
47 memory@e0000000 {
48@@ -91,9 +92,9 @@
49 compatible = "ti,am64-uart", "ti,am654-uart";
50 reg = <0x00 0x02810000 0x00 0x100>;
51 interrupts = <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>;
52- power-domains = <&k3_pds 152 1>;
53- current-speed = <115200>;
54- clock-frequency = <48000000>;
55+ power-domains = <&k3_pds 152 TI_SCI_PD_EXCLUSIVE>;
56+ clocks = <&k3_clks 152 0>;
57+ clock-names = "fclk";
58 };
59
60 pci@76000000 {
61--
622.34.1
diff --git a/meta-ti-extras/recipes-ti/jailhouse/files/0003-configs-arm64-k3-am625-sk-Add-VTM-memory-region.patch b/meta-ti-extras/recipes-ti/jailhouse/files/0003-configs-arm64-k3-am625-sk-Add-VTM-memory-region.patch
new file mode 100644
index 00000000..c2b68e8d
--- /dev/null
+++ b/meta-ti-extras/recipes-ti/jailhouse/files/0003-configs-arm64-k3-am625-sk-Add-VTM-memory-region.patch
@@ -0,0 +1,53 @@
1From 9c9bba78b5635531fc8946914233af8c8ac8a6f3 Mon Sep 17 00:00:00 2001
2From: Andreas Dannenberg <dannenberg@ti.com>
3Date: Fri, 4 Nov 2022 12:58:48 -0500
4Subject: [PATCH] configs: arm64: k3-am625-sk: Add VTM memory region
5
6Add the memory region for VTM to the device-specific config
7file. This fixes a runtime exception when the kernel accesses
8that memory region:
9
10<snip>
11Unhandled data read at 0xb00308(4)
12
13FATAL: unhandled trap (exception class 0x24)
14<snip>
15
16Upstream-Status: Submitted [jailhouse-dev@googlegroups.com]
17
18written by: Ricardo Salveti <ricardo@foundries.io>
19Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
20Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
21---
22 configs/arm64/k3-am625-sk.c | 9 ++++++++-
23 1 file changed, 8 insertions(+), 1 deletion(-)
24
25diff --git a/configs/arm64/k3-am625-sk.c b/configs/arm64/k3-am625-sk.c
26index 4b0b8043..fac4eaa6 100644
27--- a/configs/arm64/k3-am625-sk.c
28+++ b/configs/arm64/k3-am625-sk.c
29@@ -18,7 +18,7 @@
30 struct {
31 struct jailhouse_system header;
32 __u64 cpus[1];
33- struct jailhouse_memory mem_regions[32];
34+ struct jailhouse_memory mem_regions[33];
35 struct jailhouse_irqchip irqchips[5];
36 struct jailhouse_pci_device pci_devices[2];
37 } __attribute__((packed)) config = {
38@@ -154,6 +154,13 @@ struct {
39 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
40 JAILHOUSE_MEM_IO,
41 },
42+ /* Wake Up Domain VTM0 */ {
43+ .phys_start = 0x00b00000,
44+ .virt_start = 0x00b00000,
45+ .size = 0x00001000,
46+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
47+ JAILHOUSE_MEM_IO,
48+ },
49 /* First peripheral window, 1 of 2 */ {
50 .phys_start = 0x01000000,
51 .virt_start = 0x01000000,
52--
532.34.1
diff --git a/meta-ti-extras/recipes-ti/jailhouse/files/0004-configs-arm64-k3-am625-sk-Add-GPMC-memory-region.patch b/meta-ti-extras/recipes-ti/jailhouse/files/0004-configs-arm64-k3-am625-sk-Add-GPMC-memory-region.patch
new file mode 100644
index 00000000..800470bf
--- /dev/null
+++ b/meta-ti-extras/recipes-ti/jailhouse/files/0004-configs-arm64-k3-am625-sk-Add-GPMC-memory-region.patch
@@ -0,0 +1,51 @@
1From c0e85959637a1de61170d1025e1bac8da283ddb9 Mon Sep 17 00:00:00 2001
2From: Andreas Dannenberg <dannenberg@ti.com>
3Date: Thu, 19 Jan 2023 09:43:55 -0600
4Subject: [PATCH] configs: arm64: k3-am625-sk: Add GPMC memory region
5
6Add the memory region for GPMC, used by the AM62Q NAND card.
7
8Upstream-Status: Submitted [jailhouse-dev@googlegroups.com]
9
10Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
11Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
12---
13 configs/arm64/k3-am625-sk.c | 16 +++++++++++++++-
14 1 file changed, 15 insertions(+), 1 deletion(-)
15
16diff --git a/configs/arm64/k3-am625-sk.c b/configs/arm64/k3-am625-sk.c
17index fac4eaa6..10b5a8f3 100644
18--- a/configs/arm64/k3-am625-sk.c
19+++ b/configs/arm64/k3-am625-sk.c
20@@ -18,7 +18,7 @@
21 struct {
22 struct jailhouse_system header;
23 __u64 cpus[1];
24- struct jailhouse_memory mem_regions[33];
25+ struct jailhouse_memory mem_regions[35];
26 struct jailhouse_irqchip irqchips[5];
27 struct jailhouse_pci_device pci_devices[2];
28 } __attribute__((packed)) config = {
29@@ -231,6 +231,20 @@ struct {
30 .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
31 JAILHOUSE_MEM_IO,
32 },
33+ /* GPMC */ {
34+ .phys_start = 0x3b000000,
35+ .virt_start = 0x3b000000,
36+ .size = 0x00001000,
37+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
38+ JAILHOUSE_MEM_IO,
39+ },
40+ /* GPMC */ {
41+ .phys_start = 0x50000000,
42+ .virt_start = 0x50000000,
43+ .size = 0x08000000,
44+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
45+ JAILHOUSE_MEM_IO,
46+ },
47 /* CPSW */ {
48 .phys_start = 0x08000000,
49 .virt_start = 0x08000000,
50--
512.34.1
diff --git a/meta-ti-extras/recipes-ti/jailhouse/jailhouse-arch.inc b/meta-ti-extras/recipes-ti/jailhouse/jailhouse-arch.inc
new file mode 100644
index 00000000..498b25ed
--- /dev/null
+++ b/meta-ti-extras/recipes-ti/jailhouse/jailhouse-arch.inc
@@ -0,0 +1,22 @@
1# Set jailhouse architecture JH_ARCH variable
2#
3# return value must match one of architectures supported by jailhouse
4#
5valid_jh_archs = "x86 arm"
6
7def map_jh_arch(a, d):
8 import re
9
10 valid_jh_archs = d.getVar('valid_jh_archs', True).split()
11
12 if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
13 elif re.match('armeb$', a): return 'arm'
14 elif re.match('aarch64$', a): return 'arm64'
15 elif re.match('aarch64_be$', a): return 'arm64'
16 elif a in valid_jh_archs: return a
17 else:
18 bb.error("cannot map '%s' to a jailhouse supported architecture" % a)
19
20export JH_ARCH = "${@map_jh_arch(d.getVar('TARGET_ARCH', True), d)}"
21
22COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
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"