From Fedora Project Wiki


PowerPC ppc64p7 subarch support in rpm and yum and in packages

Summary

We'd like to officially support the new Power7 optimized ppc64p7 subarch in Fedora.

Owner

Current status

  • Targeted release: Fedora 18
  • Last updated: (Oct-24-2012)
  • Percentage of completion: 100%
    • There are a couple bugs with p7 optimizations in individual packages, but they don't prevent implementing the feature. rpm & yum implement handle it correctly, p7 packages are being built, and p7 packages are being included appropriately in the compose.

Detailed Description

The PowerPC CPU architecture has improved quite drastically over the past several years. As a lot of the hardware out there still use Power4 or Power5 CPUs though we currently don't want to change the minimum architecture for Fedora on PowerPC to Power7 or higher as that would effectively shut out any older Apple hardware or older IBM machines.

So similar to i586, i686 and athlon we want to be introduce a new subarch called ppc64p7 that optimizes code for Power7 or newer PowerPC cpus (additional ppc64-based subarchitectures are likely in the future) and utilize the %{power64} architecture macro provided in rpm 4.10 that can be used to check for all 64bit PowerPC architectures, just like ix86 for Intel.

The performance improvement between Power5 and Power7 can be quite substantial, especially for e.g. C++ code. Overall, a rough 20% improvement can be seen with up to 100% for special cases/projects.

Benefit to Fedora

The benefits are pretty clear: Faster applications for the newer PowerPC architecture while having no downside for any of the existing PowerPC systems and no impact to any other architecture.

Scope

All of the work necessary to support ppc64p7 in rpm and yum have already been done upstream and are included in the latest versions released for Fedora 17 and Rawhide.

Package wise we've already identified around 30 packages where we'd want to have ppc64p7 support working properly. Most of them build without any changes and simply need a rebuild for --target ppc64p7. About a dozen packages that are relevant need some minor modifications as they handle CFLAGS on their own and don't use RPM_OPT_FLAGS, so ppc64p7 support needs to be added there. We've already created patches for those and opened bugzillas for each component with those patches attached.

Overall this feature is really only affecting PowerPC, so this change is very isolated and no impact on any other arch is expected.

There are a few tasks that still need to be completed for a full support though:

* koji-shadow should handle extra_arches correctly
* mash should handle ppc64p7 packages correctly
* Make sure runtime images for installation don't contain ppc64p7 packages
** Initial test indicates pungi already works as hoped for and only uses ppc64 packages

We're working closely with Dennis Gilmore and David Aquilina from the rel-eng side on those and with Will Woods on the anaconda side to ensure everything is working as expected.

How to test

For any other architecture things should stay exactly as they were, so testing there would involve basically a standard regression test.

For PowerPC cpus there would be 2 separate tests:

* Install on a Power6 or lower machine
* Verify installation completed without any problems
* After reboot verify with rpm -qa | grep ppc64p7 that no ppc64p7 packages are installed
* Install on a Power 7 or higher machine
* Verify installation completed without any problems
* After reboot verify with rpm -qa | grep ppc64p7 that ppc64p7 packages are installed where available
* Run package specific test suits for each of the optimized packages to ensure no toolchain/optimization errors render the package non functional

Dependencies

* Support for ppc64p7 subarch in rpm & yum (DONE)
* Rel-eng tooling can handle ppc64p7 properly (In progress)
* Packages that don't use RPM_OPT_FLAGS need modifications (In progress)
* Make sure anaconda runtime images for installation don't contain ppc64p7 packages (In progress)

No other external dependencies are known

Contingency Plan

Disable building of further ppc64p7 packages and exclude any already-built ones from composes & mashes.

Documentation

No specific documentation for the ppc64p7 subarch is available.

Release notes

Fedora 18 for Power now contains full support for the new ppc64p7 subarchitecture for PowerPC. A selected number of packages that showed a large benefit for optimization on Power7 CPUs have been included in the release and will be installed automatically on Power7 (or later) hardware.