From 5a855a81ab418b1496ed99b903c4700c33a60962 Mon Sep 17 00:00:00 2001 From: Ola Redell Date: Sun, 17 Dec 2017 22:27:56 +0100 Subject: adding example image recipe, machine config and kernel recipe This should provide a complete setup together with meta-sunxi to build images with jailhouse --- conf/machine/jailhouse-bpi.conf | 15 ++ recipes-core/images/jailhouse-image.bb | 11 ++ .../jailhouse-linux-4.14.6/jailhouse-bpi/defconfig | 185 +++++++++++++++++++++ .../jailhouse-required-symbol-export.patch | 20 +++ .../jailhouse-required-symbol-export_2.patch | 57 +++++++ .../jailhouse-required-symbol-export_3.patch | 9 + recipes-kernel/linux/jailhouse-linux_4.14.6.bb | 32 ++++ 7 files changed, 329 insertions(+) create mode 100644 conf/machine/jailhouse-bpi.conf create mode 100644 recipes-core/images/jailhouse-image.bb create mode 100644 recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-bpi/defconfig create mode 100644 recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export.patch create mode 100644 recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export_2.patch create mode 100644 recipes-kernel/linux/jailhouse-linux-4.14.6/jailhouse-required-symbol-export_3.patch create mode 100644 recipes-kernel/linux/jailhouse-linux_4.14.6.bb 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 @@ +#@TYPE: Machine +#@NAME: Jailhouse Bananapi M1 +#@DESCRIPTION: Machine configuration for the bananapi, based on allwinner A20 CPU http://bananapi.org/ + +require conf/machine/include/sun7i.inc + +KERNEL_DEVICETREE = "sun7i-a20-bananapi.dtb" +UBOOT_MACHINE = "Bananapi_config" +SUNXI_FEX_FILE = "sys_config/a20/Bananapi.fex" + +PREFERRED_PROVIDER_virtual/kernel = "jailhouse-linux" +PREFERRED_VERSION_jailhouse-linux_jailhouse-bpi="4.14.6" +PREFERRED_VERSION_make-native="4.2.1" + +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 @@ +SUMMARY = "A small image just capable of starting Jailhouse with cells" + +include recipes-core/images/core-image-minimal.bb + +IMAGE_INSTALL_append= " \ + jailhouse \ + jailhouse-bash-completion \ + kernel-module-jailhouse \ + " + +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 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_KMEM=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_BLK_CGROUP=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_PERF_EVENTS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_ARCH_SUNXI=y +# CONFIG_MACH_SUN4I is not set +# CONFIG_MACH_SUN5I is not set +# CONFIG_MACH_SUN6I is not set +# CONFIG_MACH_SUN8I is not set +# CONFIG_MACH_SUN9I is not set +# CONFIG_ARM_ERRATA_643719 is not set +CONFIG_PCI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_DEBUG=y +CONFIG_PCI_STUB=m +CONFIG_PCI_HOST_GENERIC=y +CONFIG_SMP=y +CONFIG_AEABI=y +CONFIG_HIGHMEM=y +CONFIG_HIGHPTE=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +CONFIG_CMDLINE=" loglevel=3" +CONFIG_VFP=y +CONFIG_NEON=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +CONFIG_CFG80211=y +CONFIG_CFG80211_DEBUGFS=y +CONFIG_MAC80211=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_OF_OVERLAY=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_AHCI_SUNXI=y +CONFIG_NETDEVICES=y +CONFIG_SUN4I_EMAC=y +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_CADENCE is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CIRRUS is not set +# CONFIG_NET_VENDOR_FARADAY is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_STMMAC_ETH=y +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_ATH_CARDS=m +CONFIG_CARL9170=m +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CU=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=8 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MV64XXX=y +CONFIG_SPI=y +CONFIG_SPI_SUN4I=y +CONFIG_SPI_SUN6I=y +CONFIG_GPIO_SYSFS=y +CONFIG_POWER_SUPPLY=y +CONFIG_POWER_RESET=y +# CONFIG_HWMON is not set +CONFIG_WATCHDOG=y +CONFIG_SUNXI_WATCHDOG=y +CONFIG_MFD_AXP20X=y +CONFIG_MFD_SUN6I_PRCM=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_GPIO=y +CONFIG_FB=y +CONFIG_FB_SIMPLE=y +CONFIG_HID_PLANTRONICS=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_MMC=y +CONFIG_MMC_SUNXI=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_INTF_SYSFS is not set +# CONFIG_RTC_INTF_PROC is not set +CONFIG_RTC_DRV_SUNXI=y +CONFIG_UIO=y +CONFIG_UIO_PDRV_GENIRQ=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_GENERIC_PHY=y +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_PRINTK_TIME=y +CONFIG_DEBUG_KERNEL=y +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y +CONFIG_PROVE_LOCKING=y +CONFIG_DEBUG_ATOMIC_SLEEP=y +CONFIG_DEBUG_LOCKING_API_SELFTESTS=y +CONFIG_SPARSE_RCU_POINTER=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FTRACE_SYSCALLS=y +CONFIG_KGDB=y +CONFIG_KGDB_TESTS=y +CONFIG_DEBUG_USER=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_VIRTUALIZATION=y +CONFIG_EXTCON=y +CONFIG_PHY_SUN4I_USB=y +CONFIG_ATH_COMMON=m +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_HTC=m +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_NL80211_TESTMODE=y +CONFIG_CFG80211_DEVELOPER_WARNINGS=y +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_DEBUGFS=y +CONFIG_MAC80211_MESSAGE_TRACING=y +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_CARL9170_HWRNG=y +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 @@ +diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c +index 7e45f69..dc0336e 100644 +--- a/arch/arm/kernel/armksyms.c ++++ b/arch/arm/kernel/armksyms.c +@@ -20,6 +20,7 @@ + + #include + #include ++#include + + /* + * libgcc functions - functions that are used internally by the +@@ -181,3 +182,7 @@ EXPORT_SYMBOL(__pv_offset); + EXPORT_SYMBOL(arm_smccc_smc); + EXPORT_SYMBOL(arm_smccc_hvc); + #endif ++ ++#ifdef CONFIG_ARM_VIRT_EXT ++EXPORT_SYMBOL_GPL(__boot_cpu_mode); ++#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 @@ +From 90165e12a59df7e26bfb4cedd76a1def45cee5a9 Mon Sep 17 00:00:00 2001 +From: Ralf Ramsauer +Date: Wed, 7 Jun 2017 15:48:43 +0200 +Subject: [PATCH] arm, arm64: export __hyp_stub_vectors + +HVC_GET_VECTORS got removed. External hypervisors, like Jailhouse, need +this address when they are deactivated, in order to restore original +state. + +Signed-off-by: Ralf Ramsauer +Signed-off-by: Jan Kiszka +--- + arch/arm/kernel/hyp-stub.S | 2 ++ + arch/arm64/kernel/hyp-stub.S | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S +index 60146e3..d34efc5 100644 +--- a/arch/arm/kernel/hyp-stub.S ++++ b/arch/arm/kernel/hyp-stub.S +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -282,4 +283,5 @@ __hyp_stub_trap: W(b) __hyp_stub_do_trap + __hyp_stub_irq: W(b) . + __hyp_stub_fiq: W(b) . + ENDPROC(__hyp_stub_vectors) ++EXPORT_SYMBOL_GPL(__hyp_stub_vectors) + +diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S +index e1261fb..061b32e 100644 +--- a/arch/arm64/kernel/hyp-stub.S ++++ b/arch/arm64/kernel/hyp-stub.S +@@ -21,6 +21,7 @@ + #include + #include + ++#include + #include + #include + #include +@@ -51,6 +52,7 @@ ENTRY(__hyp_stub_vectors) + ventry el1_fiq_invalid // FIQ 32-bit EL1 + ventry el1_error_invalid // Error 32-bit EL1 + ENDPROC(__hyp_stub_vectors) ++EXPORT_SYMBOL_GPL(__hyp_stub_vectors) + + .align 11 + +-- +2.1.4 + 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 @@ +diff -Nur linux-4.14.6_orig/lib/ioremap.c linux-4.14.6/lib/ioremap.c +--- linux-4.14.6_orig/lib/ioremap.c 2017-12-14 09:53:15.000000000 +0100 ++++ linux-4.14.6/lib/ioremap.c 2017-12-14 17:20:45.906872824 +0100 +@@ -179,3 +179,5 @@ + + return err; + } ++ ++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 @@ +SECTION = "kernel" +DESCRIPTION = "Mainline Linux kernel" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" +COMPATIBLE_MACHINE = "(sun4i|sun5i|sun7i)" + +inherit kernel + +require recipes-kernel/linux/linux-dtb.inc +require recipes-kernel/linux/linux.inc + +# Pull in the devicetree files into the rootfs +RDEPENDS_kernel-base += "kernel-devicetree" + +KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" + +S = "${WORKDIR}/linux-${PV}" + +SRC_URI[md5sum] = "938baaf8fd3d232e9fbc2f402adf0d3f" +SRC_URI[sha256sum] = "0907678ba9ea146ddbdecd0a0b6363f56b896b5c61c9a15e809effb3ea346ccc" + + +SRC_URI = "https://www.kernel.org/pub/linux/kernel/v4.x/linux-${PV}.tar.xz \ + file://defconfig \ + " + +SRC_URI_append_jailhouse-bpi = " \ + file://jailhouse-required-symbol-export.patch \ + file://jailhouse-required-symbol-export_2.patch \ + file://jailhouse-required-symbol-export_3.patch \ + " + -- cgit v1.2.3-54-g00ecf