Update x86 tune files
PATCH 1/15 x86: Replace ia32 with x86 when referring to the generic architecture
In reply to Darren Hartia32 implies 32bit, while these files provide descriptions for IA32, X86_64, and X32 architectures. The term "x86" fits this used better without resorting to using the term "Intel" which isn't quite right as it excludes things like the tune-c3 file describing a Via CPU.
---
meta/conf/machine/include/tune-c3.inc | 2 +-
meta/conf/machine/include/tune-i586.inc | 2 +-
meta/conf/machine/include/tune-x86_64.inc | 2 +-
.../include/{ia32-base.inc => x86-base.inc} | 16 ++++++++--------
meta/conf/machine/include/{ia32 => x86}/README | 6 +++---
.../{ia32/arch-ia32.inc => x86/arch-x86.inc} | 2 +-
6 files changed, 15 insertions(+), 15 deletions(-)
rename meta/conf/machine/include/{ia32-base.inc => x86-base.inc} (75%)
rename meta/conf/machine/include/{ia32 => x86}/README (81%)
rename meta/conf/machine/include/{ia32/arch-ia32.inc => x86/arch-x86.inc} (97%)meta/conf/machine/include/tune-c3.inc +1 -1
@@ -1,4 +1,4 @@ -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.inc TUNEVALID[c3] = "VIA Cyrix III or VIA C3 specific optimizations" TUNECONFLICTS[c3] = "m64 mx32"
meta/conf/machine/include/tune-i586.inc +1 -1
@@ -1,6 +1,6 @@ DEFAULTTUNE ?= "i586" -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.inc # Extra tune features TUNEVALID[i586] = "Enable i586 specific processor optimizations"
meta/conf/machine/include/tune-x86_64.inc +1 -1
@@ -1,4 +1,4 @@ DEFAULTTUNE ?= "x86-64" -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.inc
meta/conf/machine/include/x86-base.inc renamed from meta/conf/machine/include/ia32-base.inc +8 -8
@@ -1,5 +1,5 @@ # -# base machine settings for ia32-architecture BSPs +# Base machine settings for Intel architecture BSPs # #
@@ -25,28 +25,28 @@ PREFERRED_VERSION_linux-yocto ??= "3.0%" # # XSERVER subcomponents, used to build the XSERVER variable # -XSERVER_IA32_BASE = "xserver-xorg \ +XSERVER_INTEL_BASE = "xserver-xorg \ xf86-input-mouse \ xf86-input-keyboard \ xf86-input-evdev \ xf86-input-synaptics \ " -XSERVER_IA32_EXT = " \ +XSERVER_INTEL_EXT = " \ ${@base_contains('DISTRO_FEATURES', 'opengl', 'xserver-xorg-extension-glx', '', d)} \ xserver-xorg-module-libint10 \ " -XSERVER_IA32_I915 = "xf86-video-intel \ +XSERVER_INTEL_I915 = "xf86-video-intel \ ${@base_contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-i915', '', d)} \ " -XSERVER_IA32_I965 = "xf86-video-intel \ +XSERVER_INTEL_I965 = "xf86-video-intel \ ${@base_contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-i965', '', d)} \ " -XSERVER_IA32_VESA = "xf86-video-vesa" +XSERVER_INTEL_VESA = "xf86-video-vesa" -XSERVER_IA32_FBDEV = "xf86-video-fbdev" +XSERVER_INTEL_FBDEV = "xf86-video-fbdev" -XSERVER_IA32_MODESETTING = "xf86-video-modesetting" +XSERVER_INTEL_MODESETTING = "xf86-video-modesetting"
meta/conf/machine/include/x86/README renamed from meta/conf/machine/include/ia32/README +3 -3
@@ -1,12 +1,12 @@ 2012/03/30 - Mark Hatle <[email protected]> - Initial version -Most of the items for the IA architecture are defined in the single -arch-ia32 file. +Most of the items for the Intel architectures are defined in the single +arch-x86 file. Three ABIs are define, m32, mx32 and m64. -The following is the list of ia32 specific variables: +The following is the list of intel specific variables: X86ARCH32 - This is the 32-bit architecture GNU canonical arch, TUNE_ARCH.
meta/conf/machine/include/x86/arch-x86.inc renamed from meta/conf/machine/include/ia32/arch-ia32.inc +1 -1
@@ -1,5 +1,5 @@ # -# IA32 Architecture definition +# X86 Architecture definition (IA32, X86_64, and X32) # DEFAULTTUNE ?= "x86"
Signature · 1 line
1.7.9.5
PATCH 6/15 tune-corei7: Add support for cpu-type corei7
corei7 offers a significant advancement since the previous core2 cpu-type described in the tune-core2 file.
From the GCC(1):
Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1 and SSE4.2 instruction set support.
This offers optimizations for Nehalem and Silvermont (e.g. Bay Trail) CPUs (and beyond).
--- meta/conf/machine/include/tune-corei7.inc | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 meta/conf/machine/include/tune-corei7.inc
meta/conf/machine/include/tune-corei7.inc new file +35 -0
@@ -0,0 +1,35 @@ +# Settings for the GCC(1) cpu-type "corei7": +# +# Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 +# and SSE4.2 instruction set support. +# +# This tune is recommended for Intel Nehalem and Silvermont (e.g. Bay Trail) CPUs +# (and beyond). +# +DEFAULTTUNE ?= "corei7-64" + +# Pull in the previous tune in to pull in PACKAGE_EXTRA_ARCHS +require conf/machine/include/tune-core2.inc + +# 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} corei7_32" + +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" + +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"
Signature · 1 line
1.7.9.5
PATCH 7/15 tune: Remove tune-x86_64.inc
In reply to Darren HartThe tune-x86_64.inc file is conceptually flawed. x86_64 is more akin to the x86 and x86-32 ABIs defined in arch-x86.inc than it is a concrete tune file, such as i586 or core2 - to the extent that everything but the default tune is defined in the arch-x86.inc file. This becomes very apparant when attempting to include tune-x86_64.inc in the x86 tune hierarchy.
Remove the tune-x86_64.inc tune file in favor of it being an ABI definition in arch-x86.inc and relying on the linear hierarchy of concrete cpu-types in tune-i586, tune-core2, and tune-corei7.
core2_64 should suffice in lieu of x86_64 for all but a couple esoteric corner cases involving older pre-core2 CPUs. In these cases, if they exist at all, the BSP can replace the include tune-x86_64.inc with arch-x86.inc and set the default tune to x86_64.
--- meta/conf/machine/include/tune-x86_64.inc | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 meta/conf/machine/include/tune-x86_64.inc
meta/conf/machine/include/tune-x86_64.inc deleted +0 -4
@@ -1,4 +0,0 @@ -DEFAULTTUNE ?= "x86-64" - -require conf/machine/include/x86/arch-x86.inc -
Signature · 1 line
1.7.9.5
PATCH 10/15 tune: README: Typographical corrections
In reply to Darren HartNo new content, just correcting a few typographical errors.
--- meta/conf/machine/include/README | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
meta/conf/machine/include/README +3 -3
@@ -53,10 +53,10 @@ list should be dynamic! i.e. ${@bb.utils.contains("TUNE_FEATURES", "feature", "cflag", "!cflag", d)} TUNE_ARCH - The GNU canonical arch for a specific architecture. i.e. -arm, armeb, mips, mips64, etc. This value is by bitbake to setup +arm, armeb, mips, mips64, etc. This value is used by bitbake to setup configure. TUNE_ARCH definitions are specific to a given architecture. -They may be a single static definitions, or may be dynamically adjusted. -See each architectures README for details for that CPU family. +They may be a single static definition, or may be dynamically adjusted. +See each architecture's README for details for that CPU family. TUNE_PKGARCH - The package architecture used by the packaging systems to define the architecture, abi and tuning of a particular package.
Signature · 1 line
1.7.9.5
PATCH 11/15 qemux86_64: Use the core2-64 tune
In reply to Darren HartAs x86_64 has been "demoted" to an ABI definition rather than a concrete tune file, replace it with core2-64 for the qemux86-64 machine.
--- meta/conf/machine/qemux86-64.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
meta/conf/machine/qemux86-64.conf +2 -1
@@ -8,7 +8,8 @@ PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa" PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa" require conf/machine/include/qemu.inc -require conf/machine/include/tune-x86_64.inc +DEFAULTTUNE ?= "core2-64" +require conf/machine/include/tune-core2.inc KERNEL_IMAGETYPE = "bzImage"
Signature · 1 line
1.7.9.5
PATCH 14/15 genericx86: Use new x86 tune files
In reply to Darren HartUse the new names for the x86 tunes files (x86 instead of ia32).
--- .../conf/machine/include/genericx86-common.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta-yocto-bsp/conf/machine/include/genericx86-common.inc +1 -1
@@ -1,4 +1,4 @@ -include conf/machine/include/ia32-base.inc +include conf/machine/include/x86-base.inc MACHINE_FEATURES += "wifi efi pcbios" PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
Signature · 1 line
1.7.9.5
PATCH 15/15 generixx86: Use require instead of include
In reply to Darren HartUse require instead of include to avoid silent errors when the required tune files change name or are moved. It's going to fail anyway, it might as well fail with an error message that is immediately helpful.
--- meta-yocto-bsp/conf/machine/genericx86-64.conf | 4 ++-- meta-yocto-bsp/conf/machine/genericx86.conf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
meta-yocto-bsp/conf/machine/genericx86-64.conf +2 -2
@@ -4,5 +4,5 @@ #@DESCRIPTION: Machine configuration for generic X86_64 (64-bit) PCs and servers. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. DEFAULTTUNE ?= "core2-64" -include conf/machine/include/tune-core2.inc -include conf/machine/include/genericx86-common.inc +require conf/machine/include/tune-core2.inc +require conf/machine/include/genericx86-common.inc
meta-yocto-bsp/conf/machine/genericx86.conf +2 -2
@@ -4,5 +4,5 @@ #@DESCRIPTION: Machine configuration for generic X86 (32-bit) PCs. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. DEFAULTTUNE ?= "core2-32" -include conf/machine/include/tune-core2.inc -include conf/machine/include/genericx86-common.inc +require conf/machine/include/tune-core2.inc +require conf/machine/include/genericx86-common.inc
Signature · 1 line
1.7.9.5
cover Update x86 tune files
All,
The following lays the groundwork for some rethinking of support for x86 platforms. In particular, the meta-intel layer will undergo some major refactoring once this is merged. We believe it is of value to keep as much of the tune files available in oe-core as possible, rather than isolating them all in meta-intel.
This series renames the x86-related tune files, documents best practices, updates the core2 tune file, adds a corei7 tune file, and updates the dependent machine configs. This spans oe-core and poky and I feel is best viewed as a whole. Please forgive the cross-post.
The new corei7 tune file applies to Nehalem and Silvermont (Bay Trail) CPUs which support up to SSE4.2. This provides an appropriate demarcation line while maximizing compatibility as well as including optimal support for the current generation of the embedded CPUs (Bay Trail) by including it in the new tune. AVX (Sandy Bridge and beyond) is not included as that would not apply to Bay Trail, although it can easily be added in a corei7-avx tune file as an additional patch for users who care more about the last few percent of performance over compatibility and consolidation.
An important note and likely a point of contention: The core2 update changes the core2 arch to core2-32, making the 32 bit explicit rather than implied in order to provide a consistent naming scheme going forward with newer tunes where 64 bit would be logical assumption if not explicitly stated. See patch 5/15 for details on this bit.
Finally, update the machines dependent on these tune files to use the new names. As we remove x86_64, the 64b x86 machines now build as core2-64 for maximum compatibility.
For reference, the corei7-64 tune defines:
TARGET_CC_ARCH=" -m64 -march=corei7 -mtune=corei7 -mfpmath=sse -msse4.2"
While the corei2-32 tune defines:
TARGET_CC_ARCH=" -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse"
The following changes since commit 6e7047434fc1570146ebc94254412b99b1c4cab4:
poky.ent: Fixed broken OE_LISTS_URL. (2014-01-21 21:58:03 +0000)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib dvhart/intel-tune-ng-v3
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=dvhart/intel-tune-ng-v3
Darren Hart (15):
x86: Replace ia32 with x86 when referring to the generic architecture
i586: Only add the current tune to PACKAGE_EXTRA_ARCHS
tune-core2: Replace -mtune=generic with -mtune=core2
tune-core2: Only add the current ARCH to PACKAGE_EXTRA_ARCHS
tune: Make 32b or 64b explicit in tune name for core2
tune-corei7: Add support for cpu-type corei7
tune: Remove tune-x86_64.inc
tune: README: Whitespace cleanup
tune: README: Document best practice
tune: README: Typographical corrections
qemux86_64: Use the core2-64 tune
genericx86: Use the core2 tune file
genericx86-64: Use the core2-64 tune
genericx86: Use new x86 tune files
generixx86: Use require instead of include
meta-yocto-bsp/conf/machine/genericx86-64.conf | 5 +-
meta-yocto-bsp/conf/machine/genericx86.conf | 5 +-
.../conf/machine/include/genericx86-common.inc | 2 +-
meta/conf/machine/include/README | 109 ++++++++++++--------
meta/conf/machine/include/tune-c3.inc | 2 +-
meta/conf/machine/include/tune-core2.inc | 23 +++--
meta/conf/machine/include/tune-corei7.inc | 35 +++++++
meta/conf/machine/include/tune-i586.inc | 4 +-
meta/conf/machine/include/tune-x86_64.inc | 4 -
.../include/{ia32-base.inc => x86-base.inc} | 16 +--
meta/conf/machine/include/{ia32 => x86}/README | 6 +-
.../{ia32/arch-ia32.inc => x86/arch-x86.inc} | 2 +-
meta/conf/machine/qemux86-64.conf | 3 +-
13 files changed, 139 insertions(+), 77 deletions(-)
create mode 100644 meta/conf/machine/include/tune-corei7.inc
delete mode 100644 meta/conf/machine/include/tune-x86_64.inc
rename meta/conf/machine/include/{ia32-base.inc => x86-base.inc} (75%)
rename meta/conf/machine/include/{ia32 => x86}/README (81%)
rename meta/conf/machine/include/{ia32/arch-ia32.inc => x86/arch-x86.inc} (97%)Signature · 1 line
1.7.9.5
PATCH 2/15 i586: Only add the current tune to PACKAGE_EXTRA_ARCHS
In reply to Darren HartThe generic x86 build supports i586 by default, so this specific tune file technically doesn't add any specific ARCHes to PACKAGE_EXTRA_ARCHS. For consistency, append the current tune to PACKAGE_EXTRA_ARCHS.
Since we do not have specific tune files for i386 and i486, just drop them.
These could be added to tune-x86 version if there is a need to maintain them, but they really do not belong here.
--- meta/conf/machine/include/tune-i586.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/conf/machine/include/tune-i586.inc +1 -1
@@ -11,4 +11,4 @@ AVAILTUNES += "i586" TUNE_FEATURES_tune-i586 = "${TUNE_FEATURES_tune-x86} i586" BASE_LIB_tune-i586 = "lib" TUNE_PKGARCH_tune-i586 = "i586" -PACKAGE_EXTRA_ARCHS_tune-i586 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i386 i486 i586" +PACKAGE_EXTRA_ARCHS_tune-i586 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i586"
Signature · 1 line
1.7.9.5
PATCH 3/15 tune-core2: Replace -mtune=generic with -mtune=core2
In reply to Darren Hart-march specifies which ISA to use. -mtune specifies which cpu-type to optimize instruction ordering for, but not which ISA to use. There are times when it may make sense to specify mtune=generic and use a more specific march, such as core2, but the opposite makes little sense at
all: use cpu-type specific ISA, but order the instructions generically. While the -mtune is implied by -march, gcc does not verify it is using -mtune=core2 with:
gcc -Q -march=core2 --help=target
Explicitly specify -mtune=core2 to be sure.
Add a comment header describing the CPUs targeted by this tune file.
--- meta/conf/machine/include/tune-core2.inc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
meta/conf/machine/include/tune-core2.inc +9 -1
@@ -1,10 +1,18 @@ +# Settings for the GCC(1) cpu-type "core2": +# +# Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 +# instruction set support. +# +# This tune is recommended for the Intel Core 2 CPU family, including Conroe, +# Merom and beyond, as well as the first Atom CPUs, Diamondville, and beyond. +# DEFAULTTUNE ?= "core2" require conf/machine/include/tune-i586.inc # Extra tune features TUNEVALID[core2] = "Enable core2 specific processor optimizations" -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "core2", " -march=core2 -msse3 -mtune=generic -mfpmath=sse", "", d)}" +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "core2", " -march=core2 -mtune=core2 -msse3 -mfpmath=sse", "", d)}" # Extra tune selections AVAILTUNES += "core2"
Signature · 1 line
1.7.9.5
PATCH 5/15 tune: Make 32b or 64b explicit in tune name for core2
In reply to Darren HartCore2 has both a 32b and a 64b variant. Currently, core2 implies 32b, while core2_64 is the 64b version. This implicit 32b mode will become confusing in later architectures, such as corei7, where it would be natural for people to assume "corei7" meant 64 bit.
Rather than carrying forward an implicit 32b mode and rather than changing the naming scheme part way through the architecture hiearchy, make the 32b and 64b variant explicit in the tune name by changing core2 to core2_32.
--- meta/conf/machine/include/tune-core2.inc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
meta/conf/machine/include/tune-core2.inc +6 -6
@@ -6,7 +6,7 @@ # This tune is recommended for the Intel Core 2 CPU family, including Conroe, # Merom and beyond, as well as the first Atom CPUs, Diamondville, and beyond. # -DEFAULTTUNE ?= "core2" +DEFAULTTUNE ?= "core2-32" # Include the previous tune to pull in PACKAGE_EXTRA_ARCHS require conf/machine/include/tune-i586.inc
@@ -16,11 +16,11 @@ TUNEVALID[core2] = "Enable core2 specific processor optimizations" TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "core2", " -march=core2 -mtune=core2 -msse3 -mfpmath=sse", "", d)}" # Extra tune selections -AVAILTUNES += "core2" -TUNE_FEATURES_tune-core2 = "${TUNE_FEATURES_tune-x86} core2" -BASE_LIB_tune-core2 = "lib" -TUNE_PKGARCH_tune-core2 = "core2" -PACKAGE_EXTRA_ARCHS_tune-core2 = "${PACKAGE_EXTRA_ARCHS_tune-i586} core2" +AVAILTUNES += "core2-32" +TUNE_FEATURES_tune-core2-32 = "${TUNE_FEATURES_tune-x86} core2" +BASE_LIB_tune-core2-32 = "lib" +TUNE_PKGARCH_tune-core2-32 = "core2_32" +PACKAGE_EXTRA_ARCHS_tune-core2-32 = "${PACKAGE_EXTRA_ARCHS_tune-i586} core2_32" AVAILTUNES += "core2-64" TUNE_FEATURES_tune-core2-64 = "${TUNE_FEATURES_tune-x86-64} core2"
Signature · 1 line
1.7.9.5
PATCH 9/15 tune: README: Document best practice
In reply to Darren HartDescribe the expected usage of base architecture tune files and arch-specific files, specifically the stacking of generations.
--- meta/conf/machine/include/README | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
meta/conf/machine/include/README +19 -0
@@ -1,6 +1,9 @@ 2012/03/30 - Mark Hatle <[email protected]> - Initial Revision + +Introduction +============ The individual CPU, and ABI tunings are contained in this directory. A number of local and global variables are used to control the way the tunings are setup and how they work together to specify an optimized
@@ -79,3 +82,19 @@ configured in the same way that TUNE_CCARGS is. BASE_LIB_tune-<tune> - The "/lib" location for a specific ABI. This is used in a multilib configuration to place the libraries in the correct, non-conflicting locations. + + +Best Practice +============= +The tune infrastructure is designed to be hierarchical. When writing a +new tune file for a "fast-forward" CPU architecture (one that supports +everything from a previous generation), it is recommended to require the +previous generation tune file and specify PACKAGE_EXTRA_ARCHS using the +previous generation's override and appending the new tune. Note that +only one previous tune file should be included to avoid mutiple includes +of the base arch which could lead to a broken configuration due to +multiple prepend and append assignments. + +For example, for x86, there is a common x86/arch-x86.inc which is +included in the base i586 tune file. The core2 tune builds +on that, and corei7 builds on core2.
Signature · 1 line
1.7.9.5
PATCH 4/15 tune-core2: Only add the current ARCH to PACKAGE_EXTRA_ARCHS
In reply to Darren HartInherit the PACKAGE_EXTRA_ARCHS from i586 and only explicitly add core2 here.
--- meta/conf/machine/include/tune-core2.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
meta/conf/machine/include/tune-core2.inc +2 -1
@@ -8,6 +8,7 @@ # DEFAULTTUNE ?= "core2" +# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS require conf/machine/include/tune-i586.inc # Extra tune features
@@ -19,7 +20,7 @@ AVAILTUNES += "core2" TUNE_FEATURES_tune-core2 = "${TUNE_FEATURES_tune-x86} core2" BASE_LIB_tune-core2 = "lib" TUNE_PKGARCH_tune-core2 = "core2" -PACKAGE_EXTRA_ARCHS_tune-core2 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i386 i486 i586 i686 core2" +PACKAGE_EXTRA_ARCHS_tune-core2 = "${PACKAGE_EXTRA_ARCHS_tune-i586} core2" AVAILTUNES += "core2-64" TUNE_FEATURES_tune-core2-64 = "${TUNE_FEATURES_tune-x86-64} core2"
Signature · 1 line
1.7.9.5
PATCH 12/15 genericx86: Use the core2 tune file
In reply to Darren HartAside from the movbe and specialized instruction scheduling for the lack of out-of-order scheduling in the older Atom CPUs, the core2 tune covers these CPUs adequately. Since the current atom tune just uses core2 anyway, go ahead and make this explicit here.
--- meta-yocto-bsp/conf/machine/genericx86.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
meta-yocto-bsp/conf/machine/genericx86.conf +2 -1
@@ -3,5 +3,6 @@ #@DESCRIPTION: Machine configuration for generic X86 (32-bit) PCs. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. -include conf/machine/include/tune-atom.inc +DEFAULTTUNE ?= "core2-32" +include conf/machine/include/tune-core2.inc include conf/machine/include/genericx86-common.inc
Signature · 1 line
1.7.9.5
PATCH 13/15 genericx86-64: Use the core2-64 tune
In reply to Darren HartAs x86_64 has been "demoted" to an ABI definition rather than a concrete tune file, replace it with core2-64 for the genericx86-64 machine.
--- meta-yocto-bsp/conf/machine/genericx86-64.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
meta-yocto-bsp/conf/machine/genericx86-64.conf +2 -1
@@ -3,5 +3,6 @@ #@DESCRIPTION: Machine configuration for generic X86_64 (64-bit) PCs and servers. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. -include conf/machine/include/tune-x86_64.inc +DEFAULTTUNE ?= "core2-64" +include conf/machine/include/tune-core2.inc include conf/machine/include/genericx86-common.inc
Signature · 1 line
1.7.9.5
PATCH 8/15 tune: README: Whitespace cleanup
In reply to Darren HartBefore making content changes, cleanup the various whitespace errors in this file. Mostly end-of-line whitepsace.
--- meta/conf/machine/include/README | 88 +++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-)
meta/conf/machine/include/README +44 -44
@@ -1,27 +1,27 @@ 2012/03/30 - Mark Hatle <[email protected]> - Initial Revision -The individual CPU, and ABI tunings are contained in this directory. A -number of local and global variables are used to control the way the -tunings are setup and how they work together to specify an optimized +The individual CPU, and ABI tunings are contained in this directory. A +number of local and global variables are used to control the way the +tunings are setup and how they work together to specify an optimized configuration. -The following is brief summary of the generic components that are used +The following is brief summary of the generic components that are used in these tunings. -AVAILTUNES - This is a list of all of the tuning definitions currently -available in the system. Not all tunes in this list may be compatible -with the machine configuration, or each other in a multilib -configuration. Each tuning file can add to this list using "+=", but +AVAILTUNES - This is a list of all of the tuning definitions currently +available in the system. Not all tunes in this list may be compatible +with the machine configuration, or each other in a multilib +configuration. Each tuning file can add to this list using "+=", but should never replace the list using "=". -DEFAULTTUNE - This specifies the tune to use for a particular build. -Each tune should specify a reasonable default, which can be overriden by -a machine or multilib configuration. The specified tune must be listed +DEFAULTTUNE - This specifies the tune to use for a particular build. +Each tune should specify a reasonable default, which can be overriden by +a machine or multilib configuration. The specified tune must be listed in the AVAILTUNES. -TUNEVALID[feature] - The <feature> is defined with a human readable -explanation for what it does. All architectural, cpu, abi, etc tuning +TUNEVALID[feature] - The <feature> is defined with a human readable +explanation for what it does. All architectural, cpu, abi, etc tuning features must be defined using TUNEVALID. TUNECONFLICTS[feature] - A list of features which conflict with <feature>.
@@ -31,51 +31,51 @@ tuning ends up with features which conflict with each other. TUNE_FEATURES - This is automatically defined as TUNE_FEATURES_tune-<tune>. See TUNE_FEATURES_tune-<tune> for more information. -TUNE_FEATURES_tune-<tune> - Specify the features used to describe a -specific tune. This is a list of features that a tune support, each -feature must be in the TUNEVALID list. Note: the tune and a given -feature name may be the same, but they have different purposes. Only -features may be used to change behavior, while tunes are used to +TUNE_FEATURES_tune-<tune> - Specify the features used to describe a +specific tune. This is a list of features that a tune support, each +feature must be in the TUNEVALID list. Note: the tune and a given +feature name may be the same, but they have different purposes. Only +features may be used to change behavior, while tunes are used to describe an overall set of features. -ABIEXTENSION - An ABI extension may be specified by a specific feature -or other tuning setting, such as TARGET_FPU. Any ABI extensions either -need to be defined in the architectures base arch file, i.e. -ABIEXTENSION = "eabi" in the arm case, or appended to in specific tune +ABIEXTENSION - An ABI extension may be specified by a specific feature +or other tuning setting, such as TARGET_FPU. Any ABI extensions either +need to be defined in the architectures base arch file, i.e. +ABIEXTENSION = "eabi" in the arm case, or appended to in specific tune files with a ".=". Spaces are not allowed in this variable. -TUNE_CCARGS - Setup the cflags based on the TUNE_FEATURES settings. -These should be additive when defined using "+=". All items in this -list should be dynamic! i.e. +TUNE_CCARGS - Setup the cflags based on the TUNE_FEATURES settings. +These should be additive when defined using "+=". All items in this +list should be dynamic! i.e. ${@bb.utils.contains("TUNE_FEATURES", "feature", "cflag", "!cflag", d)} -TUNE_ARCH - The GNU canonical arch for a specific architecture. i.e. -arm, armeb, mips, mips64, etc. This value is by bitbake to setup -configure. TUNE_ARCH definitions are specific to a given architecture. -They may be a single static definitions, or may be dynamically adjusted. +TUNE_ARCH - The GNU canonical arch for a specific architecture. i.e. +arm, armeb, mips, mips64, etc. This value is by bitbake to setup +configure. TUNE_ARCH definitions are specific to a given architecture. +They may be a single static definitions, or may be dynamically adjusted. See each architectures README for details for that CPU family. -TUNE_PKGARCH - The package architecture used by the packaging systems to -define the architecture, abi and tuning of a particular package. -Similarly to TUNE_ARCH, the definition of TUNE_PKGARCH is specific to -each architecture. See each architectures README for details for that +TUNE_PKGARCH - The package architecture used by the packaging systems to +define the architecture, abi and tuning of a particular package. +Similarly to TUNE_ARCH, the definition of TUNE_PKGARCH is specific to +each architecture. See each architectures README for details for that CPU family. -PACKAGE_EXTRA_ARCHS - Lists all runtime compatible package -architectures. By default this is equal to -PACKAGE_EXTRA_ARCHS_tune-<tune>. If an architecture deviates from the +PACKAGE_EXTRA_ARCHS - Lists all runtime compatible package +architectures. By default this is equal to +PACKAGE_EXTRA_ARCHS_tune-<tune>. If an architecture deviates from the default it will be listed in the architecture README. -PACKAGE_EXTRA_ARCHS_tune-<tune> - List all of the package architectures -that are compatible with this specific tune. The package arch of this +PACKAGE_EXTRA_ARCHS_tune-<tune> - List all of the package architectures +that are compatible with this specific tune. The package arch of this tune must be in the list. -TARGET_FPU - The FPU setting for a given tune, hard (generate floating -point instructions), soft (generate internal gcc calls), "other" -architecture specific floating point. This is synchronized with the -compiler and other toolchain items. This should be dynamically +TARGET_FPU - The FPU setting for a given tune, hard (generate floating +point instructions), soft (generate internal gcc calls), "other" +architecture specific floating point. This is synchronized with the +compiler and other toolchain items. This should be dynamically configured in the same way that TUNE_CCARGS is. -BASE_LIB_tune-<tune> - The "/lib" location for a specific ABI. This is -used in a multilib configuration to place the libraries in the correct, +BASE_LIB_tune-<tune> - The "/lib" location for a specific ABI. This is +used in a multilib configuration to place the libraries in the correct, non-conflicting locations.
Signature · 1 line
1.7.9.5
Re: [PATCH 01/15] x86: Replace ia32 with x86 when referring to the generic architecture
In reply to Darren HartQuoted 64 lines · Darren Hart
ia32 implies 32bit, while these files provide descriptions for IA32,
X86_64, and X32 architectures. The term "x86" fits this used better without resorting to using the term "Intel" which isn't quite right as it excludes things like the tune-c3 file describing a Via CPU.Signed-off-by Darren Hart <[email protected]>Cc Richard Purdie <[email protected]>Cc Paul Eggleton <[email protected]>Cc Tom Zanussi <[email protected]>Cc Nitin Kamble <[email protected]>Cc Mark Hatle <[email protected]>Cc Bruce Ashfield <[email protected]>--- meta/conf/machine/include/tune-c3.inc | 2 +- meta/conf/machine/include/tune-i586.inc | 2 +- meta/conf/machine/include/tune-x86_64.inc | 2 +- .../include/{ia32-base.inc => x86-base.inc} | 16 ++++++++-------- meta/conf/machine/include/{ia32 => x86}/README | 6 +++--- .../{ia32/arch-ia32.inc => x86/arch-x86.inc} | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) rename meta/conf/machine/include/{ia32-base.inc => x86-base.inc} (75%) rename meta/conf/machine/include/{ia32 => x86}/README (81%) rename meta/conf/machine/include/{ia32/arch-ia32.inc => x86/arch-x86.inc} (97%)meta/conf/machine/include/tune-c3.inc +1
-1@@ -1,4 +1,4 @@ -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.inc TUNEVALID[c3] = "VIA Cyrix III or VIA C3 specific optimizations" TUNECONFLICTS[c3] = "m64 mx32"meta/conf/machine/include/tune-i586.inc +1
-1@@ -1,6 +1,6 @@ DEFAULTTUNE ?= "i586" -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.inc # Extra tune features TUNEVALID[i586] = "Enable i586 specific processor optimizations"meta/conf/machine/include/tune-x86_64.inc +1
-1@@ -1,4 +1,4 @@ DEFAULTTUNE ?= "x86-64" -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.incmeta/conf/machine/include/x86-base.inc renamed from meta/conf/machine/include/ia32-base.inc +0
-0
meta/conf/machine/include/x86-base.inc line 2
Quoted 3 lines
meta/conf/machine/include/x86-base.inc renamed from meta/conf/machine/include/ia32-base.inc +1
-1@@ -1,5 +1,5 @@ # -# base machine settings for ia32-architecture BSPs +# Base machine settings for Intel architecture BSPs
does it apply for AMD, Cyrix as well?
meta/conf/machine/include/x86-base.inc PREFERRED_VERSION_linux-yocto ??= "3.0%" · line 28
Quoted 9 lines
meta/conf/machine/include/x86-base.inc renamed from meta/conf/machine/include/ia32-base.inc +1
-1# #@@ -25,28 +25,28 @@ PREFERRED_VERSION_linux-yocto ??= "3.0%" # # XSERVER subcomponents, used to build the XSERVER variable # -XSERVER_IA32_BASE = "xserver-xorg \ +XSERVER_INTEL_BASE = "xserver-xorg \
the same, why not us XSERVER_X86_BASE?
Quoted 74 lines
meta/conf/machine/include/x86-base.inc renamed from meta/conf/machine/include/ia32-base.inc +6
-6xf86-input-mouse \ xf86-input-keyboard \ xf86-input-evdev \ xf86-input-synaptics \ " -XSERVER_IA32_EXT = " \ +XSERVER_INTEL_EXT = " \ ${@base_contains('DISTRO_FEATURES', 'opengl', 'xserver-xorg-extension-glx', '', d)} \ xserver-xorg-module-libint10 \ " -XSERVER_IA32_I915 = "xf86-video-intel \ +XSERVER_INTEL_I915 = "xf86-video-intel \ ${@base_contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-i915', '', d)} \ " -XSERVER_IA32_I965 = "xf86-video-intel \ +XSERVER_INTEL_I965 = "xf86-video-intel \ ${@base_contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-i965', '', d)} \ " -XSERVER_IA32_VESA = "xf86-video-vesa" +XSERVER_INTEL_VESA = "xf86-video-vesa" -XSERVER_IA32_FBDEV = "xf86-video-fbdev" +XSERVER_INTEL_FBDEV = "xf86-video-fbdev" -XSERVER_IA32_MODESETTING = "xf86-video-modesetting" +XSERVER_INTEL_MODESETTING = "xf86-video-modesetting"meta/conf/machine/include/x86/README renamed from meta/conf/machine/include/ia32/README +3
-3@@ -1,12 +1,12 @@ 2012/03/30 - Mark Hatle <[email protected]> - Initial version -Most of the items for the IA architecture are defined in the single -arch-ia32 file. +Most of the items for the Intel architectures are defined in the single +arch-x86 file. Three ABIs are define, m32, mx32 and m64. -The following is the list of ia32 specific variables: +The following is the list of intel specific variables: X86ARCH32 - This is the 32-bit architecture GNU canonical arch, TUNE_ARCH.meta/conf/machine/include/x86/arch-x86.inc renamed from meta/conf/machine/include/ia32/arch-ia32.inc +1
-1@@ -1,5 +1,5 @@ # -# IA32 Architecture definition +# X86 Architecture definition (IA32, X86_64, and X32) # DEFAULTTUNE ?= "x86"Signature · 6 lines
1.7.9.5 _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
Signature · 1 line
Martin 'JaMa' Jansa jabber: [email protected]
Re: [PATCH 12/15] genericx86: Use the core2 tune file
In reply to Darren Hartmeta-yocto-bsp/conf/machine/genericx86.conf
Quoted 14 lines · Darren Hart
Aside from the movbe and specialized instruction scheduling for the lack of out-of-order scheduling in the older Atom CPUs, the core2 tune covers these CPUs adequately. Since the current atom tune just uses core2 anyway, go ahead and make this explicit here.
Signed-off-by Darren Hart <[email protected]>--- meta-yocto-bsp/conf/machine/genericx86.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)meta-yocto-bsp/conf/machine/genericx86.conf +0
-0
This isn't for oe-core, is it?
Quoted 15 lines
meta-yocto-bsp/conf/machine/genericx86.conf +2
-1@@ -3,5 +3,6 @@ #@DESCRIPTION: Machine configuration for generic X86 (32-bit) PCs. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. -include conf/machine/include/tune-atom.inc +DEFAULTTUNE ?= "core2-32" +include conf/machine/include/tune-core2.inc include conf/machine/include/genericx86-common.incSignature · 6 lines
1.7.9.5 _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
Signature · 1 line
Martin 'JaMa' Jansa jabber: [email protected]
Re: [PATCH 12/15] genericx86: Use the core2 tune file
Quoted 11 lines · Martin Jansa
Quoted 10 lines · Darren Hart
Aside from the movbe and specialized instruction scheduling for the lack of out-of-order scheduling in the older Atom CPUs, the core2 tune covers these CPUs adequately. Since the current atom tune just uses core2 anyway, go ahead and make this explicit here.
Signed-off-by Darren Hart <[email protected]>--- meta-yocto-bsp/conf/machine/genericx86.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Quoted 7 lines
meta-yocto-bsp/conf/machine/genericx86.conf
Quoted 4 lines
meta-yocto-bsp/conf/machine/genericx86.conf +0
-0This isn't for oe-core, is it?
Nope. I called this out in the cover letter. It spans oe-core and poky, but I felt they were best viewed as a whole, rather than splitting them apart and worrying about the order in which they were applied. I understand the desire to not cross post and generally agree and avoid it
- on rare occasions such as this, it seems the least awful way to go about it...
Quoted 16 lines
Quoted 15 lines
meta-yocto-bsp/conf/machine/genericx86.conf +2
-1@@ -3,5 +3,6 @@ #@DESCRIPTION: Machine configuration for generic X86 (32-bit) PCs. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. -include conf/machine/include/tune-atom.inc +DEFAULTTUNE ?= "core2-32" +include conf/machine/include/tune-core2.inc include conf/machine/include/genericx86-common.incSignature · 6 lines
1.7.9.5 _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
Signature · 3 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel
Re: [PATCH 12/15] genericx86: Use the core2 tune file
Quoted 20 lines · Darren Hart
Quoted 11 lines · Martin Jansa
Quoted 10 lines · Darren Hart
Aside from the movbe and specialized instruction scheduling for the lack of out-of-order scheduling in the older Atom CPUs, the core2 tune covers these CPUs adequately. Since the current atom tune just uses core2 anyway, go ahead and make this explicit here.
Signed-off-by Darren Hart <[email protected]>--- meta-yocto-bsp/conf/machine/genericx86.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)Quoted 7 lines
meta-yocto-bsp/conf/machine/genericx86.conf
Quoted 4 lines
meta-yocto-bsp/conf/machine/genericx86.conf +0
-0This isn't for oe-core, is it?
Quoted 6 lines
Nope. I called this out in the cover letter. It spans oe-core and poky, but I felt they were best viewed as a whole, rather than splitting them apart and worrying about the order in which they were applied. I understand the desire to not cross post and generally agree and avoid it
- on rare occasions such as this, it seems the least awful way to go about it...
OK, sorry I see it now, for some reason cover letter arrived to my maildir last.
Signature · 1 line
Martin 'JaMa' Jansa jabber: [email protected]
Re: [PATCH 01/15] x86: Replace ia32 with x86 when referring to the generic architecture
In reply to Martin JansaQuoted 57 lines · Martin Jansa
Quoted 56 lines · Darren Hart
ia32 implies 32bit, while these files provide descriptions for IA32,
X86_64, and X32 architectures. The term "x86" fits this used better without resorting to using the term "Intel" which isn't quite right as it excludes things like the tune-c3 file describing a Via CPU.Signed-off-by Darren Hart <[email protected]>Cc Richard Purdie <[email protected]>Cc Paul Eggleton <[email protected]>Cc Tom Zanussi <[email protected]>Cc Nitin Kamble <[email protected]>Cc Mark Hatle <[email protected]>Cc Bruce Ashfield <[email protected]>--- meta/conf/machine/include/tune-c3.inc | 2 +- meta/conf/machine/include/tune-i586.inc | 2 +- meta/conf/machine/include/tune-x86_64.inc | 2 +- .../include/{ia32-base.inc => x86-base.inc} | 16 ++++++++-------- meta/conf/machine/include/{ia32 => x86}/README | 6 +++--- .../{ia32/arch-ia32.inc => x86/arch-x86.inc} | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) rename meta/conf/machine/include/{ia32-base.inc => x86-base.inc} (75%) rename meta/conf/machine/include/{ia32 => x86}/README (81%) rename meta/conf/machine/include/{ia32/arch-ia32.inc => x86/arch-x86.inc} (97%)meta/conf/machine/include/tune-c3.inc +1
-1@@ -1,4 +1,4 @@ -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.inc TUNEVALID[c3] = "VIA Cyrix III or VIA C3 specific optimizations" TUNECONFLICTS[c3] = "m64 mx32"meta/conf/machine/include/tune-i586.inc +1
-1@@ -1,6 +1,6 @@ DEFAULTTUNE ?= "i586" -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.inc # Extra tune features TUNEVALID[i586] = "Enable i586 specific processor optimizations"meta/conf/machine/include/tune-x86_64.inc +1
-1@@ -1,4 +1,4 @@ DEFAULTTUNE ?= "x86-64" -require conf/machine/include/ia32/arch-ia32.inc +require conf/machine/include/x86/arch-x86.inc
Quoted 13 lines
meta/conf/machine/include/x86-base.inc line 2
Quoted 11 lines
meta/conf/machine/include/x86-base.inc renamed from meta/conf/machine/include/ia32-base.inc +1
-1@@ -1,5 +1,5 @@ # -# base machine settings for ia32-architecture BSPs +# Base machine settings for Intel architecture BSPsdoes it apply for AMD, Cyrix as well?
Blarg, yes it does. Apologies. I had originally done some of this in meta-intel and was persuaded it was better to do this in oe-core. I missed removing some of the intel-isms. Thanks for catching this.
Replacing INTEL with X86 for everything that isn't a specific recipe name (xf86-video-intel). Thanks Martin.
Will include in the inevitable v2.
Signature · 3 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel
Quoted 28 lines · Darren Hart
All,
The following lays the groundwork for some rethinking of support for x86 platforms. In particular, the meta-intel layer will undergo some major refactoring once this is merged. We believe it is of value to keep as much of the tune files available in oe-core as possible, rather than isolating them all in meta-intel.
This series renames the x86-related tune files, documents best practices, updates the core2 tune file, adds a corei7 tune file, and updates the dependent machine configs. This spans oe-core and poky and I feel is best viewed as a whole. Please forgive the cross-post.
The new corei7 tune file applies to Nehalem and Silvermont (Bay Trail) CPUs which support up to SSE4.2. This provides an appropriate demarcation line while maximizing compatibility as well as including optimal support for the current generation of the embedded CPUs (Bay Trail) by including it in the new tune. AVX (Sandy Bridge and beyond) is not included as that would not apply to Bay Trail, although it can easily be added in a corei7-avx tune file as an additional patch for users who care more about the last few percent of performance over compatibility and consolidation.
An important note and likely a point of contention: The core2 update changes the core2 arch to core2-32, making the 32 bit explicit rather than implied in order to provide a consistent naming scheme going forward with newer tunes where 64 bit would be logical assumption if not explicitly stated. See patch 5/15 for details on this bit.
Quoted 3 lines
Finally, update the machines dependent on these tune files to use the new names. As we remove
x86_64, the 64b x86 machines now build as core2-64 for maximum compatibility.
I missed a couple things I'm getting to now:
* the yocto-bsp substrates
* the inclusion of XSERVER_IA32_* in the genericx86 BSPs
* the eglibc-ld.inc file .... I need some help here, but am updating the core2 references and adding corei7... do we really have to do this for every tune file!?!?
* profile-manual core2 references
Coming in v2
Signature · 3 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel