aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan-Simon Möller <jsmoeller@linuxfoundation.org>2017-04-26 14:13:08 +0200
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2017-05-06 13:49:42 +0000
commite8aff1ac9e064f41b8eac2fef05ae1db494ee41b (patch)
tree2a57e33700b9cfed685b4e3a3a3359b1380e63a8
parent1f42bdf12386833666d1f6f7926081926f426bf1 (diff)
Enforce unified tunings across all target boards of AGL
DEFAULTTUNE is a setting that should be defined in the DISTRO. So we do it here. Goal is to have just 3-4 SDKs in the end. We use these levels: - ARM 32bit high: armv7vethf-neon-vfpv4 (=default for ARM 32bit) - ARM 32bit medium: armv7athf-neon (enabled via DISTRO_FEATURE_append = " agl-medium-arm-compiler") - AARCH64: aarch64 (=aarch64, no other tunings) - x86-64: corei7-64 (=corei7-64 also for qemux86-64) v2: Fix qemu user-mode emulation on x86-64 and adapt qemux86-64 tune flags. See: https://goo.gl/DMaBJ9 Bug-AGL: SPEC-491 Change-Id: Iababbe38a531d546c03f695847651f2d83301b9a Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org> Reviewed-on: https://gerrit.automotivelinux.org/gerrit/9299 Reviewed-by: Martin Kelly <mkelly@xevo.com> ci-image-build: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> Reviewed-by: Stéphane Desneux <stephane.desneux@iot.bzh> Tested-by: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-boot-test: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org>
-rw-r--r--meta-agl-distro/conf/distro/include/aarch64-tune.inc13
-rw-r--r--meta-agl-distro/conf/distro/include/arm-default-tune.inc18
-rw-r--r--meta-agl-distro/conf/distro/include/arm-tune.inc14
-rw-r--r--meta-agl-distro/conf/distro/include/x86_64-tune.inc54
-rw-r--r--meta-agl-distro/conf/distro/poky-agl.conf16
-rw-r--r--templates/base/bblayers.conf.sample5
6 files changed, 98 insertions, 22 deletions
diff --git a/meta-agl-distro/conf/distro/include/aarch64-tune.inc b/meta-agl-distro/conf/distro/include/aarch64-tune.inc
new file mode 100644
index 000000000..a2a308fe0
--- /dev/null
+++ b/meta-agl-distro/conf/distro/include/aarch64-tune.inc
@@ -0,0 +1,13 @@
+# DEFAULTTUNE overrides for AGL on aarch64
+
+# We should not need the tuning include below as the BSP should include the right set already.
+# A double inclusion would produce a warning. This include line is just for reference
+# include conf/machine/include/arm/arch-armv8.inc
+
+DEFAULTTUNE = "aarch64"
+# not yet ready
+#QB_SYSTEM_NAME ?= "qemu-system-aarch"
+#QB_DEFAULT_KERNEL ?= "zImage"
+#QB_DEFAULT_FSTYPE ?= "ext4"
+#QB_MACHINE ?= "-machine foo"
+#QB_CPU ?= "-cpu bar"
diff --git a/meta-agl-distro/conf/distro/include/arm-default-tune.inc b/meta-agl-distro/conf/distro/include/arm-default-tune.inc
deleted file mode 100644
index 5a6f44fe5..000000000
--- a/meta-agl-distro/conf/distro/include/arm-default-tune.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-def arm_tune_handler(d):
- features = d.getVar('TUNE_FEATURES', True).split()
- if 'armv7a' in features or 'armv7ve' in features:
- tune = 'armv7athf'
- if 'bigendian' in features:
- tune += 'b'
- if 'vfpv3' in features:
- tune += '-vfpv3'
- if 'vfpv3d16' in features:
- tune += '-vfpv3d16'
- if 'neon' in features:
- tune += '-neon'
- if 'vfpv4' in features:
- tune += '-vfpv4'
- else:
- tune = d.getVar('DEFAULTTUNE', True)
- return tune
-DEFAULTTUNE_agl := "${@arm_tune_handler(d)}"
diff --git a/meta-agl-distro/conf/distro/include/arm-tune.inc b/meta-agl-distro/conf/distro/include/arm-tune.inc
new file mode 100644
index 000000000..5aebd53be
--- /dev/null
+++ b/meta-agl-distro/conf/distro/include/arm-tune.inc
@@ -0,0 +1,14 @@
+# DEFAULTTUNE overrides for AGL on ARM 32bit
+
+# We should not need the tuning include below as the BSP should include the right set already.
+# A double inclusion would produce a warning. This include line is just for reference
+# include conf/machine/include/arm/arch-armv7ve.inc
+# medium profile boards need to
+# include conf/machine/include/arch/arm-armv7-a.inc
+
+DEFAULTTUNE = "${@bb.utils.contains('DISTRO_FEATURES', 'agl-medium-arm-compiler', 'armv7athf-neon', 'armv7vethf-neon-vfpv4', d)}"
+QB_SYSTEM_NAME ?= "qemu-system-arm"
+QB_DEFAULT_KERNEL ?= "zImage"
+QB_DEFAULT_FSTYPE ?= "ext4"
+QB_MACHINE ?= "${@bb.utils.contains('DISTRO_FEATURES', 'agl-medium-arm-compiler', '-machine vexpress-a9', '-machine vexpress-a15', d)}"
+QB_CPU ?= "${@bb.utils.contains('DISTRO_FEATURES', 'agl-medium-arm-compiler', '-cpu cortex-a9', '-cpu cortex-a15', d)}"
diff --git a/meta-agl-distro/conf/distro/include/x86_64-tune.inc b/meta-agl-distro/conf/distro/include/x86_64-tune.inc
new file mode 100644
index 000000000..f1ce97938
--- /dev/null
+++ b/meta-agl-distro/conf/distro/include/x86_64-tune.inc
@@ -0,0 +1,54 @@
+# DEFAULTTUNE overrides for AGL on x86-64
+
+# We should not need the tuning include below as the BSP should include the right set already.
+# A double inclusion would produce a warning. This include line is just for reference
+#include conf/machine/include/tune-corei7.inc
+DEFAULTTUNE = "corei7-64"
+
+# shortened copy of tune-corei7.inc due to bug in inclusion for tune-core2.inc
+# TUNE_ARCH is using .= x86-64 , if done twice, you get x86-64x86-64 as TUNE_ARCH :/
+# we should have at least the core2 tunings by default (=qemux86-64)
+
+# Extra tune features
+TUNEVALID[corei7] = "Enable corei7 specific processor optimizations"
+TUNE_CCARGS = "${@bb.utils.contains('TUNE_FEATURES', 'corei7', ' -march=corei7 -mtune=corei7 -mfpmath=sse -msse4.2', '', d)}"
+
+# Extra tune selections
+AVAILTUNES += "corei7-32"
+TUNE_FEATURES_tune-corei7-32 = "${TUNE_FEATURES_tune-x86} corei7"
+BASE_LIB_tune-corei7-32 = "lib"
+TUNE_PKGARCH_tune-corei7-32 = "corei7-32"
+PACKAGE_EXTRA_ARCHS_tune-corei7-32 = "${PACKAGE_EXTRA_ARCHS_tune-core2-32} corei7-32"
+QEMU_EXTRAOPTIONS_corei7-32 = " -cpu Nehalem,check=false"
+QB_CPU_corei7-32 = "-cpu Nehalem,check=false"
+QB_MACHINE_corei7-32 = "-machine q35"
+
+AVAILTUNES += "corei7-64"
+TUNE_FEATURES_tune-corei7-64 = "${TUNE_FEATURES_tune-x86-64} corei7"
+BASE_LIB_tune-corei7-64 = "lib64"
+TUNE_PKGARCH_tune-corei7-64 = "corei7-64"
+PACKAGE_EXTRA_ARCHS_tune-corei7-64 = "${PACKAGE_EXTRA_ARCHS_tune-core2-64} corei7-64"
+QEMU_EXTRAOPTIONS_corei7-64 = " -cpu Nehalem,check=false"
+QB_CPU_corei7-64 = " -cpu Nehalem,check=false"
+QB_MACHINE_corei7-64 = "-machine q35"
+
+AVAILTUNES += "corei7-64-x32"
+TUNE_FEATURES_tune-corei7-64-x32 = "${TUNE_FEATURES_tune-x86-64-x32} corei7"
+BASE_LIB_tune-corei7-64-x32 = "libx32"
+TUNE_PKGARCH_tune-corei7-64-x32 = "corei7-64-x32"
+PACKAGE_EXTRA_ARCHS_tune-corei7-64-x32 = "${PACKAGE_EXTRA_ARCHS_tune-core2-64-x32} corei7-64-x32"
+QEMU_EXTRAOPTIONS_corei7-64-x32 = " -cpu Nehalem,check=false"
+QB_CPU_corei7-64-x32 = "-cpu Nehalem,check=false"
+QB_MACHINE_corei7-64-x32 = "-machine q35"
+
+TUNE_ARCH = "${@bb.utils.contains('TUNE_FEATURES', 'm64', '${X86ARCH64}', '' ,d)}"
+
+# Bump qemux86-64 up to corei7
+AVAILTUNES += "qemux86-64"
+TUNE_FEATURES_tune-qemux86-64 = "${TUNE_FEATURES_tune-x86-64} corei7"
+BASE_LIB_tune-qemux86-64 = "lib64"
+TUNE_PKGARCH_tune-qemux86-64 = "corei7-64"
+PACKAGE_EXTRA_ARCHS_tune-qemux86-64 = "${PACKAGE_EXTRA_ARCHS_tune-core2-64} corei7-64"
+QEMU_EXTRAOPTIONS_qemux86-64 = " -cpu Nehalem,check=false"
+QB_CPU_qemux86-64 = " -cpu Nehalem,check=false"
+QB_MACHINE_qemux86-64 = "-machine q35"
diff --git a/meta-agl-distro/conf/distro/poky-agl.conf b/meta-agl-distro/conf/distro/poky-agl.conf
index fae35c631..93e89afd9 100644
--- a/meta-agl-distro/conf/distro/poky-agl.conf
+++ b/meta-agl-distro/conf/distro/poky-agl.conf
@@ -88,8 +88,20 @@ SECURITY_CFLAGS_pn-qtwebengine = "${SECURITY_NO_PIE_CFLAGS}"
#default: USER_CLASSES ?= "buildstats image-mklibs image-prelink"
USER_CLASSES = "buildstats image-mklibs"
-# weak 'default value' assignment for a DEFAULTTUNE
-DEFAULTTUNE_arm ??= "armv7athf-neon"
+# AGL uses 4 optimization levels
+# 2 for ARM 32bit
+# - a high and a medium setting for the CCARGS
+# - the high setting is default (needs >= cortex-a15)
+# - the medium setting is enabled with: DISTRO_FEATURES_append = " agl-medium-arm-compiler "
+# 1 for ARM 64bit / AARCH64
+# 1 for x86-64
+require conf/distro/include/${TARGET_ARCH}-tune.inc
+
+# Generic qemu and qemuboot (runqemu) enhancements
+# check qemuboot.bbclass
+# - use 1G RAM by default
+QB_MEM ?= "-m 1024"
# temporary fix for meta-updater (to be removed 2017-05-01)
IMAGE_INSTALL_remove = "rvi-sota-client"
+
diff --git a/templates/base/bblayers.conf.sample b/templates/base/bblayers.conf.sample
index 12f750c70..478523b0d 100644
--- a/templates/base/bblayers.conf.sample
+++ b/templates/base/bblayers.conf.sample
@@ -15,9 +15,10 @@ METADIR := "${@os.path.abspath('##OEROOT##/..')}"
YOCTO_LAYERS = " \
${METADIR}/poky/meta \
${METADIR}/poky/meta-poky \
- ${METADIR}/poky/meta-yocto-bsp \
"
-
+# this is added for the boards where necessary, not globally
+# ${METADIR}/poky/meta-yocto-bsp \
+#
# These are the AGL CORE Layers that make up the basis
# - they create a minimal bootable filesystem
# with some automotive tools/libraries