From Fedora Project Wiki
(Change: i686 Is For x86-64)
 
(Add releng review ticket)
Line 39: Line 39:
* Other developers: Other developers can enable SSE2 optimization in their packages if they want, where this has been a compile-time option only.  
* Other developers: Other developers can enable SSE2 optimization in their packages if they want, where this has been a compile-time option only.  


* Release engineering: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES -->
* Release engineering: [https://pagure.io/releng/issues/7543 #7543]
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuild required?  include a link to the releng issue.
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing, and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]: TBD
** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]: TBD
<!-- Please check the list of Fedora release deliverables and list all the differences the feature brings -->
<!-- Please check the list of Fedora release deliverables and list all the differences the feature brings -->

Revision as of 20:20, 1 June 2018

i686 Is For x86-64

Summary

Fedora builds its i686 packages for use on x86-64 systems as multi-lib RPMs.

Owner

Current status

  • Targeted release: Fedora 29
  • Last updated: 2018-06-01
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

Currently, the i686 RPM packages are built in such a way that they are compatible with very old i686 systems, such as the Pentium III. The only addition over the i686/Pentium Pro baseline is a requirement to support long NOPs, for Intel CET. However, the majority of installations of i686 packages is for use on x86_64 systems, as multi-lib RPMs. Furthermore, there are reports that the i686 kernel does not run stable on old hardware which is not x86-64-capable.

This proposal suggests to accept this reality and build the i686 packages in such a way that they require the ISA level of (early) x86-64 CPUs.

Benefit to Fedora

32-bit Fedora packages will be optimized for use on current x86_64 systems:

  • The default compiler flags will be switched to -march=x86-64 -mtune=generic -mfpmath=sse -mstackrealign. This enables SSE2 support with optimum backwards compatibility due to o
  • x86 packages can use SSE2 optimizations unconditionally.
  • This increases compatibility with some upstreams which have mostly given up on support for non-SSE2 x86 systems.
  • Excess precision problems inherent to the legacy i387 FPU disappear, and math results become more predictable.

The latter is primarily a benefit to those developers who work on Fedora itself.

Scope

  • Proposal owners: Adjust the redhat-rpm-config, gcc, and glibc packages to switch to the new compiler flags. Except for -mstackrealign, there is substantial experience with this configuration downstream.
  • Other developers: Other developers can enable SSE2 optimization in their packages if they want, where this has been a compile-time option only.
  • Release engineering: #7543
  • Policies and guidelines: i686 is no longer a primary architecture. The Packaging Guidelines do not currently require support for non-SSE2 x86 systems, so no change is required there.
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

32-bit x86 systems which lack SSE2 support (or do not match the x86-64 architecture baseline for other reasons) will not be able to upgrade to Fedora 29.

This only applies to 32-bit x86 systems. For 64-bit x86 systems, SSE2 support is a required support of the baseline ABI and already extensively used by Fedora.

How To Test

Install Fedora 29 after the mass rebuild and test 32-bit (i686) packages for functionality.

Extra tests could involve old 32-bit legacy applications compiled with non-GCC compilers.

User Experience

There is no expected substantial change in user experience, except for a minor performance improvements and potentially some slight reduction in power usage.

Dependencies

We are not aware of any dependencies at this point.

Contingency Plan

  • Contingency mechanism: Back out the change.
  • Contingency deadline: Before the final mass rebuild.
  • Blocks release? No.
  • Blocks product? No.

Documentation

Documentation in a Release Note appears sufficient.

Release Notes

  • Fedora 29 requires an x86-64 system for installation. This includes the 32-bit x86 (i686) packages built primarily for use x86-64 systems.