diff options
7 files changed, 329 insertions, 0 deletions
diff --git a/conf/machine/jailhouse-bpi.conf b/conf/machine/jailhouse-bpi.conf new file mode 100644 index 0000000..01ced78 --- /dev/null +++ b/conf/machine/jailhouse-bpi.conf | |||
@@ -0,0 +1,15 @@ | |||
1 | #@TYPE: Machine | ||
2 | #@NAME: Jailhouse Bananapi M1 | ||
3 | #@DESCRIPTION: Machine configuration for the bananapi, based on allwinner A20 CPU http://bananapi.org/ | ||
4 | |||
5 | require conf/machine/include/sun7i.inc | ||
6 | |||
7 | KERNEL_DEVICETREE = "sun7i-a20-bananapi.dtb" | ||
8 | UBOOT_MACHINE = "Bananapi_config" | ||
9 | SUNXI_FEX_FILE = "sys_config/a20/Bananapi.fex" | ||
10 | |||
11 | PREFERRED_PROVIDER_virtual/kernel = "jailhouse-linux" | ||
12 | PREFERRED_VERSION_jailhouse-linux_jailhouse-bpi="4.14.6" | ||
13 | PREFERRED_VERSION_make-native="4.2.1" | ||
14 | |||
15 | DEFAULTTUNE = "cortexa7hf-neon-vfpv4" | ||
diff --git a/recipes-core/images/jailhouse-image.bb b/recipes-core/images/jailhouse-image.bb new file mode 100644 index 0000000..60a1b31 --- /dev/null +++ b/recipes-core/images/jailhouse-image.bb | |||
@@ -0,0 +1,11 @@ | |||
1 | SUMMARY = "A small image just capable of starting Jailhouse with cells" | ||
2 | |||
3 | include recipes-core/images/core-image-minimal.bb | ||
4 | |||
5 | IMAGE_INSTALL_append= " \ | ||
6 | jailhouse \ | ||
7 | jailhouse-bash-completion \ | ||
8 | kernel-module-jailhouse \ | ||
9 | " | ||
10 | |||
11 | IMAGE_FEATURES += "ssh-server-openssh" | ||
diff --git a/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-bpi/defconfig b/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-bpi/defconfig new file mode 100644 index 0000000..39c0e1d --- /dev/null +++ b/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-bpi/defconfig | |||
@@ -0,0 +1,185 @@ | |||
1 | # CONFIG_LOCALVERSION_AUTO is not set | ||
2 | CONFIG_NO_HZ=y | ||
3 | CONFIG_HIGH_RES_TIMERS=y | ||
4 | CONFIG_IKCONFIG=y | ||
5 | CONFIG_IKCONFIG_PROC=y | ||
6 | CONFIG_CGROUPS=y | ||
7 | CONFIG_CGROUP_FREEZER=y | ||
8 | CONFIG_CGROUP_DEVICE=y | ||
9 | CONFIG_CPUSETS=y | ||
10 | CONFIG_CGROUP_CPUACCT=y | ||
11 | CONFIG_MEMCG=y | ||
12 | CONFIG_MEMCG_SWAP=y | ||
13 | CONFIG_MEMCG_KMEM=y | ||
14 | CONFIG_CGROUP_PERF=y | ||
15 | CONFIG_CGROUP_SCHED=y | ||
16 | CONFIG_CFS_BANDWIDTH=y | ||
17 | CONFIG_RT_GROUP_SCHED=y | ||
18 | CONFIG_BLK_CGROUP=y | ||
19 | CONFIG_BLK_DEV_INITRD=y | ||
20 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
21 | CONFIG_PERF_EVENTS=y | ||
22 | CONFIG_MODULES=y | ||
23 | CONFIG_MODULE_UNLOAD=y | ||
24 | CONFIG_ARCH_SUNXI=y | ||
25 | # CONFIG_MACH_SUN4I is not set | ||
26 | # CONFIG_MACH_SUN5I is not set | ||
27 | # CONFIG_MACH_SUN6I is not set | ||
28 | # CONFIG_MACH_SUN8I is not set | ||
29 | # CONFIG_MACH_SUN9I is not set | ||
30 | # CONFIG_ARM_ERRATA_643719 is not set | ||
31 | CONFIG_PCI=y | ||
32 | CONFIG_PCI_MSI=y | ||
33 | CONFIG_PCI_DEBUG=y | ||
34 | CONFIG_PCI_STUB=m | ||
35 | CONFIG_PCI_HOST_GENERIC=y | ||
36 | CONFIG_SMP=y | ||
37 | CONFIG_AEABI=y | ||
38 | CONFIG_HIGHMEM=y | ||
39 | CONFIG_HIGHPTE=y | ||
40 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
41 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
42 | CONFIG_ARM_APPENDED_DTB=y | ||
43 | CONFIG_ARM_ATAG_DTB_COMPAT=y | ||
44 | CONFIG_CMDLINE=" loglevel=3" | ||
45 | CONFIG_VFP=y | ||
46 | CONFIG_NEON=y | ||
47 | CONFIG_NET=y | ||
48 | CONFIG_PACKET=y | ||
49 | CONFIG_UNIX=y | ||
50 | CONFIG_INET=y | ||
51 | CONFIG_IP_PNP=y | ||
52 | CONFIG_IP_PNP_DHCP=y | ||
53 | CONFIG_IP_PNP_BOOTP=y | ||
54 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
55 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
56 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
57 | # CONFIG_INET_LRO is not set | ||
58 | # CONFIG_INET_DIAG is not set | ||
59 | # CONFIG_IPV6 is not set | ||
60 | CONFIG_CFG80211=y | ||
61 | CONFIG_CFG80211_DEBUGFS=y | ||
62 | CONFIG_MAC80211=y | ||
63 | CONFIG_DEVTMPFS=y | ||
64 | CONFIG_DEVTMPFS_MOUNT=y | ||
65 | CONFIG_OF_OVERLAY=y | ||
66 | CONFIG_BLK_DEV_SD=y | ||
67 | CONFIG_ATA=y | ||
68 | CONFIG_AHCI_SUNXI=y | ||
69 | CONFIG_NETDEVICES=y | ||
70 | CONFIG_SUN4I_EMAC=y | ||
71 | # CONFIG_NET_VENDOR_ARC is not set | ||
72 | # CONFIG_NET_CADENCE is not set | ||
73 | # CONFIG_NET_VENDOR_BROADCOM is not set | ||
74 | # CONFIG_NET_VENDOR_CIRRUS is not set | ||
75 | # CONFIG_NET_VENDOR_FARADAY is not set | ||
76 | # CONFIG_NET_VENDOR_INTEL is not set | ||
77 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
78 | # CONFIG_NET_VENDOR_MICREL is not set | ||
79 | # CONFIG_NET_VENDOR_MICROCHIP is not set | ||
80 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
81 | # CONFIG_NET_VENDOR_ROCKER is not set | ||
82 | # CONFIG_NET_VENDOR_SAMSUNG is not set | ||
83 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
84 | # CONFIG_NET_VENDOR_SMSC is not set | ||
85 | CONFIG_STMMAC_ETH=y | ||
86 | # CONFIG_NET_VENDOR_VIA is not set | ||
87 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
88 | CONFIG_ATH_CARDS=m | ||
89 | CONFIG_CARL9170=m | ||
90 | CONFIG_RTL_CARDS=m | ||
91 | CONFIG_RTL8192CU=m | ||
92 | # CONFIG_INPUT_MOUSEDEV is not set | ||
93 | # CONFIG_INPUT_KEYBOARD is not set | ||
94 | # CONFIG_INPUT_MOUSE is not set | ||
95 | CONFIG_SERIAL_8250=y | ||
96 | CONFIG_SERIAL_8250_CONSOLE=y | ||
97 | CONFIG_SERIAL_8250_NR_UARTS=8 | ||
98 | CONFIG_SERIAL_8250_RUNTIME_UARTS=8 | ||
99 | CONFIG_SERIAL_8250_DW=y | ||
100 | CONFIG_SERIAL_OF_PLATFORM=y | ||
101 | # CONFIG_HW_RANDOM is not set | ||
102 | CONFIG_I2C=y | ||
103 | CONFIG_I2C_CHARDEV=y | ||
104 | CONFIG_I2C_MV64XXX=y | ||
105 | CONFIG_SPI=y | ||
106 | CONFIG_SPI_SUN4I=y | ||
107 | CONFIG_SPI_SUN6I=y | ||
108 | CONFIG_GPIO_SYSFS=y | ||
109 | CONFIG_POWER_SUPPLY=y | ||
110 | CONFIG_POWER_RESET=y | ||
111 | # CONFIG_HWMON is not set | ||
112 | CONFIG_WATCHDOG=y | ||
113 | CONFIG_SUNXI_WATCHDOG=y | ||
114 | CONFIG_MFD_AXP20X=y | ||
115 | CONFIG_MFD_SUN6I_PRCM=y | ||
116 | CONFIG_REGULATOR=y | ||
117 | CONFIG_REGULATOR_FIXED_VOLTAGE=y | ||
118 | CONFIG_REGULATOR_GPIO=y | ||
119 | CONFIG_FB=y | ||
120 | CONFIG_FB_SIMPLE=y | ||
121 | CONFIG_HID_PLANTRONICS=y | ||
122 | CONFIG_USB=y | ||
123 | CONFIG_USB_EHCI_HCD=y | ||
124 | CONFIG_USB_EHCI_HCD_PLATFORM=y | ||
125 | CONFIG_USB_OHCI_HCD=y | ||
126 | CONFIG_USB_OHCI_HCD_PLATFORM=y | ||
127 | CONFIG_MMC=y | ||
128 | CONFIG_MMC_SUNXI=y | ||
129 | CONFIG_LEDS_CLASS=y | ||
130 | CONFIG_LEDS_GPIO=y | ||
131 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | ||
132 | CONFIG_RTC_CLASS=y | ||
133 | # CONFIG_RTC_INTF_SYSFS is not set | ||
134 | # CONFIG_RTC_INTF_PROC is not set | ||
135 | CONFIG_RTC_DRV_SUNXI=y | ||
136 | CONFIG_UIO=y | ||
137 | CONFIG_UIO_PDRV_GENIRQ=y | ||
138 | # CONFIG_IOMMU_SUPPORT is not set | ||
139 | CONFIG_GENERIC_PHY=y | ||
140 | CONFIG_EXT4_FS=y | ||
141 | CONFIG_VFAT_FS=y | ||
142 | CONFIG_TMPFS=y | ||
143 | CONFIG_TMPFS_POSIX_ACL=y | ||
144 | CONFIG_NFS_FS=y | ||
145 | CONFIG_NFS_V3_ACL=y | ||
146 | CONFIG_NFS_V4=y | ||
147 | CONFIG_ROOT_NFS=y | ||
148 | CONFIG_NLS_CODEPAGE_437=y | ||
149 | CONFIG_NLS_ISO8859_1=y | ||
150 | CONFIG_PRINTK_TIME=y | ||
151 | CONFIG_DEBUG_KERNEL=y | ||
152 | CONFIG_LOCKUP_DETECTOR=y | ||
153 | CONFIG_SCHEDSTATS=y | ||
154 | CONFIG_TIMER_STATS=y | ||
155 | CONFIG_DEBUG_RT_MUTEXES=y | ||
156 | CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y | ||
157 | CONFIG_PROVE_LOCKING=y | ||
158 | CONFIG_DEBUG_ATOMIC_SLEEP=y | ||
159 | CONFIG_DEBUG_LOCKING_API_SELFTESTS=y | ||
160 | CONFIG_SPARSE_RCU_POINTER=y | ||
161 | CONFIG_FUNCTION_TRACER=y | ||
162 | CONFIG_FTRACE_SYSCALLS=y | ||
163 | CONFIG_KGDB=y | ||
164 | CONFIG_KGDB_TESTS=y | ||
165 | CONFIG_DEBUG_USER=y | ||
166 | CONFIG_CRYPTO_ANSI_CPRNG=y | ||
167 | CONFIG_VIRTUALIZATION=y | ||
168 | CONFIG_EXTCON=y | ||
169 | CONFIG_PHY_SUN4I_USB=y | ||
170 | CONFIG_ATH_COMMON=m | ||
171 | CONFIG_ATH9K_HW=m | ||
172 | CONFIG_ATH9K_COMMON=m | ||
173 | CONFIG_ATH9K_HTC=m | ||
174 | CONFIG_WEXT_CORE=y | ||
175 | CONFIG_WEXT_PROC=y | ||
176 | CONFIG_NL80211_TESTMODE=y | ||
177 | CONFIG_CFG80211_DEVELOPER_WARNINGS=y | ||
178 | CONFIG_CFG80211_REG_DEBUG=y | ||
179 | CONFIG_CFG80211_WEXT=y | ||
180 | CONFIG_MAC80211_MESH=y | ||
181 | CONFIG_MAC80211_DEBUGFS=y | ||
182 | CONFIG_MAC80211_MESSAGE_TRACING=y | ||
183 | CONFIG_MAC80211_DEBUG_MENU=y | ||
184 | CONFIG_CARL9170_HWRNG=y | ||
185 | CONFIG_HW_RANDOM=y | ||
diff --git a/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export.patch b/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export.patch new file mode 100644 index 0000000..472a56e --- /dev/null +++ b/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export.patch | |||
@@ -0,0 +1,20 @@ | |||
1 | diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c | ||
2 | index 7e45f69..dc0336e 100644 | ||
3 | --- a/arch/arm/kernel/armksyms.c | ||
4 | +++ b/arch/arm/kernel/armksyms.c | ||
5 | @@ -20,6 +20,7 @@ | ||
6 | |||
7 | #include <asm/checksum.h> | ||
8 | #include <asm/ftrace.h> | ||
9 | +#include <asm/virt.h> | ||
10 | |||
11 | /* | ||
12 | * libgcc functions - functions that are used internally by the | ||
13 | @@ -181,3 +182,7 @@ EXPORT_SYMBOL(__pv_offset); | ||
14 | EXPORT_SYMBOL(arm_smccc_smc); | ||
15 | EXPORT_SYMBOL(arm_smccc_hvc); | ||
16 | #endif | ||
17 | + | ||
18 | +#ifdef CONFIG_ARM_VIRT_EXT | ||
19 | +EXPORT_SYMBOL_GPL(__boot_cpu_mode); | ||
20 | +#endif | ||
diff --git a/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export_2.patch b/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export_2.patch new file mode 100644 index 0000000..b58b522 --- /dev/null +++ b/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export_2.patch | |||
@@ -0,0 +1,57 @@ | |||
1 | From 90165e12a59df7e26bfb4cedd76a1def45cee5a9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de> | ||
3 | Date: Wed, 7 Jun 2017 15:48:43 +0200 | ||
4 | Subject: [PATCH] arm, arm64: export __hyp_stub_vectors | ||
5 | |||
6 | HVC_GET_VECTORS got removed. External hypervisors, like Jailhouse, need | ||
7 | this address when they are deactivated, in order to restore original | ||
8 | state. | ||
9 | |||
10 | Signed-off-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de> | ||
11 | Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> | ||
12 | --- | ||
13 | arch/arm/kernel/hyp-stub.S | 2 ++ | ||
14 | arch/arm64/kernel/hyp-stub.S | 2 ++ | ||
15 | 2 files changed, 4 insertions(+) | ||
16 | |||
17 | diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S | ||
18 | index 60146e3..d34efc5 100644 | ||
19 | --- a/arch/arm/kernel/hyp-stub.S | ||
20 | +++ b/arch/arm/kernel/hyp-stub.S | ||
21 | @@ -19,6 +19,7 @@ | ||
22 | #include <linux/init.h> | ||
23 | #include <linux/irqchip/arm-gic-v3.h> | ||
24 | #include <linux/linkage.h> | ||
25 | +#include <asm-generic/export.h> | ||
26 | #include <asm/assembler.h> | ||
27 | #include <asm/virt.h> | ||
28 | |||
29 | @@ -282,4 +283,5 @@ __hyp_stub_trap: W(b) __hyp_stub_do_trap | ||
30 | __hyp_stub_irq: W(b) . | ||
31 | __hyp_stub_fiq: W(b) . | ||
32 | ENDPROC(__hyp_stub_vectors) | ||
33 | +EXPORT_SYMBOL_GPL(__hyp_stub_vectors) | ||
34 | |||
35 | diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S | ||
36 | index e1261fb..061b32e 100644 | ||
37 | --- a/arch/arm64/kernel/hyp-stub.S | ||
38 | +++ b/arch/arm64/kernel/hyp-stub.S | ||
39 | @@ -21,6 +21,7 @@ | ||
40 | #include <linux/linkage.h> | ||
41 | #include <linux/irqchip/arm-gic-v3.h> | ||
42 | |||
43 | +#include <asm-generic/export.h> | ||
44 | #include <asm/assembler.h> | ||
45 | #include <asm/kvm_arm.h> | ||
46 | #include <asm/kvm_asm.h> | ||
47 | @@ -51,6 +52,7 @@ ENTRY(__hyp_stub_vectors) | ||
48 | ventry el1_fiq_invalid // FIQ 32-bit EL1 | ||
49 | ventry el1_error_invalid // Error 32-bit EL1 | ||
50 | ENDPROC(__hyp_stub_vectors) | ||
51 | +EXPORT_SYMBOL_GPL(__hyp_stub_vectors) | ||
52 | |||
53 | .align 11 | ||
54 | |||
55 | -- | ||
56 | 2.1.4 | ||
57 | |||
diff --git a/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export_3.patch b/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export_3.patch new file mode 100644 index 0000000..12f6a91 --- /dev/null +++ b/recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export_3.patch | |||
@@ -0,0 +1,9 @@ | |||
1 | diff -Nur linux-4.14.6_orig/lib/ioremap.c linux-4.14.6/lib/ioremap.c | ||
2 | --- linux-4.14.6_orig/lib/ioremap.c 2017-12-14 09:53:15.000000000 +0100 | ||
3 | +++ linux-4.14.6/lib/ioremap.c 2017-12-14 17:20:45.906872824 +0100 | ||
4 | @@ -179,3 +179,5 @@ | ||
5 | |||
6 | return err; | ||
7 | } | ||
8 | + | ||
9 | +EXPORT_SYMBOL_GPL(ioremap_page_range); | ||
diff --git a/recipes-kernel/linux/jailhouse-linux_4.14.6.bb b/recipes-kernel/linux/jailhouse-linux_4.14.6.bb new file mode 100644 index 0000000..3cd4e97 --- /dev/null +++ b/recipes-kernel/linux/jailhouse-linux_4.14.6.bb | |||
@@ -0,0 +1,32 @@ | |||
1 | SECTION = "kernel" | ||
2 | DESCRIPTION = "Mainline Linux kernel" | ||
3 | LICENSE = "GPLv2" | ||
4 | LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" | ||
5 | COMPATIBLE_MACHINE = "(sun4i|sun5i|sun7i)" | ||
6 | |||
7 | inherit kernel | ||
8 | |||
9 | require recipes-kernel/linux/linux-dtb.inc | ||
10 | require recipes-kernel/linux/linux.inc | ||
11 | |||
12 | # Pull in the devicetree files into the rootfs | ||
13 | RDEPENDS_kernel-base += "kernel-devicetree" | ||
14 | |||
15 | KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" | ||
16 | |||
17 | S = "${WORKDIR}/linux-${PV}" | ||
18 | |||
19 | SRC_URI[md5sum] = "938baaf8fd3d232e9fbc2f402adf0d3f" | ||
20 | SRC_URI[sha256sum] = "0907678ba9ea146ddbdecd0a0b6363f56b896b5c61c9a15e809effb3ea346ccc" | ||
21 | |||
22 | |||
23 | SRC_URI = "https://www.kernel.org/pub/linux/kernel/v4.x/linux-${PV}.tar.xz \ | ||
24 | file://defconfig \ | ||
25 | " | ||
26 | |||
27 | SRC_URI_append_jailhouse-bpi = " \ | ||
28 | file://jailhouse-required-symbol-export.patch \ | ||
29 | file://jailhouse-required-symbol-export_2.patch \ | ||
30 | file://jailhouse-required-symbol-export_3.patch \ | ||
31 | " | ||
32 | |||