diff --git a/meta-arm-autonomy/conf/layer.conf b/meta-arm-autonomy/conf/layer.conf index 5c135962..2b9e94dc 100644 --- a/meta-arm-autonomy/conf/layer.conf +++ b/meta-arm-autonomy/conf/layer.conf @@ -31,4 +31,5 @@ USER_CLASSES_append = " arm-autonomy-features" BBFILES_DYNAMIC += " \ meta-arm-bsp:${LAYERDIR}/dynamic-layers/meta-arm-bsp/*/*/*.bbappend \ + meta-gem5:${LAYERDIR}/dynamic-layers/meta-gem5/*/*/*.bbappend \ " diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xen/files/4.12.0/0001-xen-arm-Cap-the-number-of-interrupt-lines-for-dom0.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xen/files/4.12.0/0001-xen-arm-Cap-the-number-of-interrupt-lines-for-dom0.patch deleted file mode 100644 index 792bc9ea..00000000 --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xen/files/4.12.0/0001-xen-arm-Cap-the-number-of-interrupt-lines-for-dom0.patch +++ /dev/null @@ -1,44 +0,0 @@ -From a41feccdb6c03f12bddb4fb650a0465f0ed6eeca Mon Sep 17 00:00:00 2001 -From: Lukas Juenger -Date: Fri, 5 Apr 2019 15:54:04 +0200 -Subject: [PATCH] xen/arm: Cap the number of interrupt lines for dom0 - -Dom0 vGIC will use the same number of interrupt lines as the hardware GIC. -While the hardware GIC can support up to 1020 interrupt lines, -the vGIC is only supporting up to 992 interrupt lines. -This means that Xen will not be able to boot on platforms where the hardware -GIC supports more than 992 interrupt lines. -While it would make sense to increase the limits in the vGICs, this is not -trivial because of the design choices. -At the moment, only models seem to report the maximum of interrupt lines. -They also do not have any interrupt wired above the 992 limit. -So it should be fine to cap the number of interrupt lines for dom0 to 992 lines. - -Signed-off-by: Lukas Juenger -Acked-by: Julien Grall ---- - xen/arch/arm/setup.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c -index 444857a967..ccb0f181ea 100644 ---- a/xen/arch/arm/setup.c -+++ b/xen/arch/arm/setup.c -@@ -888,7 +888,13 @@ void __init start_xen(unsigned long boot_phys_offset, - /* Create initial domain 0. */ - /* The vGIC for DOM0 is exactly emulating the hardware GIC */ - dom0_cfg.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE; -- dom0_cfg.arch.nr_spis = gic_number_lines() - 32; -+ /* -+ * Xen vGIC supports a maximum of 992 interrupt lines. -+ * 32 are substracted to cover local IRQs. -+ */ -+ dom0_cfg.arch.nr_spis = min(gic_number_lines(), (unsigned int) 992) - 32; -+ if ( gic_number_lines() > 992 ) -+ printk(XENLOG_WARNING "Maximum number of vGIC IRQs exceeded.\n"); - dom0_cfg.max_vcpus = dom0_max_vcpus(); - - dom0 = domain_create(0, &dom0_cfg, true); --- -2.17.1 - diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xen/xen_%.bbappend b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xen/xen_%.bbappend index bdcb75f9..5e58ab1c 100644 --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xen/xen_%.bbappend +++ b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xen/xen_%.bbappend @@ -2,7 +2,6 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/files:" # Machine specific settings XEN_CONFIG_EARLY_PRINTK_juno = "juno" -XEN_CONFIG_EARLY_PRINTK_gem5-arm64 = "vexpress" XEN_CONFIG_EARLY_PRINTK_fvp-base = "fastmodel" XEN_CONFIG_EARLY_PRINTK_foundation-armv8 = "fastmodel" XEN_CONFIG_EARLY_PRINTK_n1sdp = "pl011,0x2a400000" @@ -22,10 +21,6 @@ COMPATIBLE_MACHINE_juno = "juno" SRC_URI_append_juno = " file://juno/defconfig" -# Gem5 support -# Fix problem with number of interrupts on gem5 -SRC_URI_append_gem5-arm64 = " file://4.12.0/0001-xen-arm-Cap-the-number-of-interrupt-lines-for-dom0.patch" - # N1SDP support COMPATIBLE_MACHINE_n1sdp = "n1sdp" diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xenguest/xenguest-network.bbappend b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xenguest/xenguest-network.bbappend index de88cced..1efd7c61 100644 --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xenguest/xenguest-network.bbappend +++ b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-extended/xenguest/xenguest-network.bbappend @@ -4,7 +4,5 @@ XENGUEST_NETWORK_BRIDGE_MEMBERS_fvp-base ?= "eth0" XENGUEST_NETWORK_BRIDGE_MEMBERS_foundation-armv8 ?= "eth0" -XENGUEST_NETWORK_BRIDGE_MEMBERS_gem5-arm64 ?= "eth0" - # Juno board has 2 network interfaces, add both of them to the bridge XENGUEST_NETWORK_BRIDGE_MEMBERS_juno ?= "eth0 eth1" diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-%.bbappend b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-%.bbappend index 189645af..5231f51d 100644 --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-%.bbappend +++ b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-%.bbappend @@ -12,6 +12,5 @@ LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE = "${@bb.utils.contains_any('DISTRO_FEATURE 'arm-autonomy-host arm-autonomy-guest', \ ' features/arm-autonomy/disable-arm64-sve.scc','',d)}" -KERNEL_FEATURES_append_gem5-arm64 = "${LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE}" KERNEL_FEATURES_append_fvp-base = "${LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE}" KERNEL_FEATURES_append_foundation-armv8 = "${LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE}" diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-bsp/boot-wrapper-aaarch64/boot-wrapper-aarch64_%.bbappend b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-bsp/boot-wrapper-aaarch64/boot-wrapper-aarch64_%.bbappend similarity index 100% rename from meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-bsp/boot-wrapper-aaarch64/boot-wrapper-aarch64_%.bbappend rename to meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-bsp/boot-wrapper-aaarch64/boot-wrapper-aarch64_%.bbappend diff --git a/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-extended/xen/xen_%.bbappend b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-extended/xen/xen_%.bbappend new file mode 100644 index 00000000..9e7ba459 --- /dev/null +++ b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-extended/xen/xen_%.bbappend @@ -0,0 +1,2 @@ +# Machine specific settings +XEN_CONFIG_EARLY_PRINTK_gem5-arm64 = "vexpress" diff --git a/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-extended/xenguest/xenguest-network.bbappend b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-extended/xenguest/xenguest-network.bbappend new file mode 100644 index 00000000..02837025 --- /dev/null +++ b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-extended/xenguest/xenguest-network.bbappend @@ -0,0 +1 @@ +XENGUEST_NETWORK_BRIDGE_MEMBERS_gem5-arm64 ?= "eth0" diff --git a/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/arm-autonomy-kmeta-extra-gem5/features/arm-autonomy/disable-arm64-sve.cfg b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/arm-autonomy-kmeta-extra-gem5/features/arm-autonomy/disable-arm64-sve.cfg new file mode 100644 index 00000000..7e87cab4 --- /dev/null +++ b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/arm-autonomy-kmeta-extra-gem5/features/arm-autonomy/disable-arm64-sve.cfg @@ -0,0 +1,4 @@ +# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping +# Linux kernel with a coredump while trying to access ZEN bit of CPACR1 core +# register. +# CONFIG_ARM64_SVE is not set diff --git a/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/arm-autonomy-kmeta-extra-gem5/features/arm-autonomy/disable-arm64-sve.scc b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/arm-autonomy-kmeta-extra-gem5/features/arm-autonomy/disable-arm64-sve.scc new file mode 100644 index 00000000..6bc769cc --- /dev/null +++ b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/arm-autonomy-kmeta-extra-gem5/features/arm-autonomy/disable-arm64-sve.scc @@ -0,0 +1,3 @@ +define KFEATURE_DESCRIPTION "Disable SVE support" + +kconf non-hardware disable-arm64-sve.cfg diff --git a/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/linux-%.bbappend b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/linux-%.bbappend new file mode 100644 index 00000000..0d0047ac --- /dev/null +++ b/meta-arm-autonomy/dynamic-layers/meta-gem5/recipes-kernel/linux/linux-%.bbappend @@ -0,0 +1,15 @@ +FILESEXTRAPATHS_prepend_gem5-arm64 := "${THISDIR}:" + +# +# arm-autonomy kmeta extra +# +SRC_URI_append_gem5-arm64 = " file://arm-autonomy-kmeta-extra-gem5;type=kmeta;name=arm-autonomy-kmeta-extra-gem5;destsuffix=arm-autonomy-kmeta-extra-gem5" + +# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping +# Linux kernel with a coredump while trying to access XEN bit of CPACR1 core +# register. +LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE_gem5-arm64 = "${@bb.utils.contains_any('DISTRO_FEATURES', \ + 'arm-autonomy-host arm-autonomy-guest', \ + ' features/arm-autonomy/disable-arm64-sve.scc','',d)}" + +KERNEL_FEATURES_append_gem5-arm64 = "${LINUX_ARM_AUTONOMY_DISABLE_ARM64_SVE}"