Bug 1227361
Summary: | Fedora - Properly configure glibc for POWER8 on ppc64le | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | IBM Bug Proxy <bugproxy> |
Component: | glibc | Assignee: | Carlos O'Donell <codonell> |
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | medium | Docs Contact: | |
Priority: | unspecified | ||
Version: | 22 | CC: | arjun.is, codonell, fweimer, hannsj_uhl, jakub, jkachuck, law, mnewsome, pfrankli |
Target Milestone: | --- | Keywords: | Patch, Reopened |
Target Release: | --- | ||
Hardware: | ppc64le | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | glibc-2.22.90-33.fc24 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2016-02-09 08:51:19 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 1051573, 1213267 |
Description
IBM Bug Proxy
2015-06-02 13:40:43 UTC
== Comment: #0 - Tulio Magno Quites Machado Filho <tulioqm.com> - 2015-05-28 15:52:08 == Although GCC for ppc64le has ben configured using --with-cpu=power7, that doesn't ensure glibc will make usage of all the POWER7 optimizations during its build. That only happens when glibc is configured with --with-cpu=power7. As ppc64le supports POWER >=7, it's better to use this configure flag. A possible solution for this case is to add ppc64le to the following block of code taken from glibc.spec: %ifarch ppc64p7 --with-cpu=power7 \ %endif Sounds good to me. We'll put this into the backlog. ppc64le requires POWER8 and later, so this no longer relevant. ------- Comment From tulioqm.com 2016-02-08 14:25 EDT------- (In reply to comment #5) > ppc64le requires POWER8 and later, so this no longer relevant. This is not clear to me. Are you saying that glibc is being configured with --with-cpu=power8 now? When I opened this bug report, Fedora wanted to support POWER7 on ppc64le. If it has changed to support POWER8, it's necessary to configure glibc --with-cpu=power8 in order to correctly use the POWER8 files from glibc. (In reply to IBM Bug Proxy from comment #4) > When I opened this bug report, Fedora wanted to support POWER7 on ppc64le. IBM does not want to support POWER7 on ppc64le, see the recent discussion on the Fedora secondary list. > If it has changed to support POWER8, it's necessary to configure glibc > --with-cpu=power8 in order to correctly use the POWER8 files from glibc. I don't see any logic in the glibc build system which reacts to that. As far as I can tell, just setting the GCC defaults appropriately is sufficient. It might be theoretically possible to omit support code for older CPU variants, but I don't think glibc can do that for any architecture right now (there is nothing like __ASSUME_KERNEL for CPU features, as far as I know). ------- Comment From tulioqm.com 2016-02-08 15:02 EDT------- (In reply to comment #9) > > If it has changed to support POWER8, it's necessary to configure glibc > > --with-cpu=power8 in order to correctly use the POWER8 files from glibc. > > I don't see any logic in the glibc build system which reacts to that. As > far as I can tell, just setting the GCC defaults appropriately is sufficient. No it isn't. If you don't set --with-cpu=power8, you won't be using POWER8-optimized files, i.e. those under the power8 directories. That's why we have this patch: http://patchwork.sourceware.org/patch/10641/ IMO, you really want to use --with-cpu, unless you want to support POWER >= 4. (In reply to IBM Bug Proxy from comment #6) > ------- Comment From tulioqm.com 2016-02-08 15:02 EDT------- > (In reply to comment #9) > > > If it has changed to support POWER8, it's necessary to configure glibc > > > --with-cpu=power8 in order to correctly use the POWER8 files from glibc. > > > > I don't see any logic in the glibc build system which reacts to that. As > > far as I can tell, just setting the GCC defaults appropriately is sufficient. > > No it isn't. > If you don't set --with-cpu=power8, you won't be using POWER8-optimized > files, i.e. those under the power8 directories. > That's why we have this patch: http://patchwork.sourceware.org/patch/10641/ Tulio is correct. However, perhaps you can answer a question I had. In general all of the functions in the power8/ sysdep directory appear to be routed to by IFUNCs anyway, so you will get their benefit in a generic build also? However, because it isn't guaranteed that all functions have IFUNC selectors you generally want to build with --with-cpu=powerx for POWERx (where x is an integer value). Florian, if you look deeply the --with-cpu options feed into the sysdeps selection mechanism which makes it a required option to pickup the POWER8 optimized functions. This is fixed this in Rawhide. e.g. 889 %if %{buildpower8} 890 ( 891 AddOns="$AddOns --with-cpu=power8" 892 GCC="$GCC -mcpu=power8 -mtune=power8" 893 GXX="$GXX -mcpu=power8 -mtune=power8" 894 build power8 895 ) I'm marking CLOSED/RAWHIDE since we aren't going to change the runtimes for F22. Reopening because the default runtime for ppc64le doesn't use the %{buildpower8} path. We need this additional fix: diff --git a/glibc.spec b/glibc.spec index 5cb5262..da36986 100644 --- a/glibc.spec +++ b/glibc.spec @@ -818,6 +818,9 @@ build() %endif --enable-obsolete-rpc \ --enable-systemtap \ +%ifarch ppc64le + --with-cpu=power8 \ +%endif %ifarch ppc64p7 --with-cpu=power7 \ %endif --- Testing changes to fix this. This is now fixed in rawhide. The default ppc64le runtime now correctly configures using --with-cpu=power8. Pre-tested using a ppc-koji scratch build and reviewed the final builds. ------- Comment From tulioqm.com 2016-02-09 07:47 EDT-------
> However, perhaps you can answer a question I had. In
> general all of the functions in the power8/ sysdep directory appear to be
> routed to by IFUNCs anyway, so you will get their benefit in a generic build
> also? However, because it isn't guaranteed that all functions have IFUNC
> selectors you generally want to build with --with-cpu=powerx for POWERx
> (where x is an integer value).
Not for all of the functions right now. That's especially important for math functions which still lack IFUNC support.
Thanks Florian and Carlos!
|