Patchwork [00/15] Update x86 tune files

login
register
mail settings
Submitter Darren Hart
Date Jan. 21, 2014, 10:40 p.m.
Message ID <cover.1390342768.git.dvhart@linux.intel.com>
Download mbox
Permalink /patch/65409/
State New
Headers show

Pull-request

git://git.yoctoproject.org/poky-contrib dvhart/intel-tune-ng-v3

Comments

Darren Hart - Jan. 21, 2014, 10:40 p.m.
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%)
Darren Hart - Jan. 21, 2014, 11:55 p.m.
On Tue, 2014-01-21 at 14:40 -0800, Darren Hart wrote:
> 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.


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