(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 # | * Release engineering: [https://pagure.io/releng/issues/7543 #7543] | ||
** [[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
- Name: Florian Weimer
- Email: fweimer@redhat.com
- Release notes 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
- List of deliverables: TBD
- 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.