[Bug 1887989] Re: [20.04 Feature] Enable glibc for POWER10
Dimitri John Ledkov
1887989 at bugs.launchpad.net
Mon Aug 17 15:41:22 UTC 2020
** Description changed:
+ [Impact]
+
+ * glibc / ld does not know about new power10 capability, and thus
+ unable to load libraries optimizied for power10, on power10 hardware.
+
+ [Test Case]
+
+ * sudo rm /etc/ld.so.cache
+ * LD_SHOW_AUXV=yes LD_DEBUG=libs /bin/true
+
+ Expectations are that in AT_HWCAP2 power10 specific features are listed
+ AT_PLATFORM is set to power10
+ and that search paths include /power10/ directories
+
+
+ The sample output from power8 machine is this
+
+ $ LD_SHOW_AUXV=yes LD_DEBUG=libs /bin/true
+ AT_DCACHEBSIZE: 0x80
+ AT_ICACHEBSIZE: 0x80
+ AT_UCACHEBSIZE: 0x0
+ AT_SYSINFO_EHDR: 0x73b685b20000
+ AT_L1I_CACHESIZE: 32768
+ AT_L1I_CACHEGEOMETRY: 128B line size, 8-way set associative
+ AT_L1D_CACHESIZE: 65536
+ AT_L1D_CACHEGEOMETRY: 128B line size, 8-way set associative
+ AT_L2_CACHESIZE: 524288
+ AT_L2_CACHEGEOMETRY: 128B line size, 8-way set associative
+ AT_L3_CACHESIZE: 8388608
+ AT_L3_CACHEGEOMETRY: 128B line size, 8-way set associative
+ AT_HWCAP: true_le archpmu vsx arch_2_06 dfp ic_snoop smt mmu fpu altivec ppc64 ppc32
+ AT_PAGESZ: 65536
+ AT_CLKTCK: 100
+ AT_PHDR: 0x5b376320040
+ AT_PHENT: 56
+ AT_PHNUM: 9
+ AT_BASE: 0x73b685b40000
+ AT_FLAGS: 0x0
+ AT_ENTRY: 0x5b376321ab0
+ AT_UID: 1000
+ AT_EUID: 1000
+ AT_GID: 1000
+ AT_EGID: 1000
+ AT_SECURE: 0
+ AT_RANDOM: 0x7fffc779b3f2
+ AT_HWCAP2: htm-nosc vcrypto tar isel ebb dscr htm arch_2_07
+ AT_EXECFN: /bin/true
+ AT_PLATFORM: power8
+ AT_BASE_PLATFORM: power8
+ 277374: find library=libc.so.6 [0]; searching
+ 277374: search cache=/etc/ld.so.cache
+ 277374: search path=/lib/powerpc64le-linux-gnu/tls/power8/altivec/dfp:/lib/powerpc64le-linux-gnu/tls/power8/altivec:/lib/powerpc64le-linux-gnu/tls/power8/dfp:/lib/powerpc64le-linux-gnu/tls/power8:/lib/powerpc64le-linux-gnu/tls/altivec/dfp:/lib/powerpc64le-linux-gnu/tls/altivec:/lib/powerpc64le-linux-gnu/tls/dfp:/lib/powerpc64le-linux-gnu/tls:/lib/powerpc64le-linux-gnu/power8/altivec/dfp:/lib/powerpc64le-linux-gnu/power8/altivec:/lib/powerpc64le-linux-gnu/power8/dfp:/lib/powerpc64le-linux-gnu/power8:/lib/powerpc64le-linux-gnu/altivec/dfp:/lib/powerpc64le-linux-gnu/altivec:/lib/powerpc64le-linux-gnu/dfp:/lib/powerpc64le-linux-gnu:/usr/lib/powerpc64le-linux-gnu/tls/power8/altivec/dfp:/usr/lib/powerpc64le-linux-gnu/tls/power8/altivec:/usr/lib/powerpc64le-linux-gnu/tls/power8/dfp:/usr/lib/powerpc64le-linux-gnu/tls/power8:/usr/lib/powerpc64le-linux-gnu/tls/altivec/dfp:/usr/lib/powerpc64le-linux-gnu/tls/altivec:/usr/lib/powerpc64le-linux-gnu/tls/dfp:/usr/lib/powerpc64le-linux-gnu/tls:/usr/lib/powerpc64le-linux-gnu/power8/altivec/dfp:/usr/lib/powerpc64le-linux-gnu/power8/altivec:/usr/lib/powerpc64le-linux-gnu/power8/dfp:/usr/lib/powerpc64le-linux-gnu/power8:/usr/lib/powerpc64le-linux-gnu/altivec/dfp:/usr/lib/powerpc64le-linux-gnu/altivec:/usr/lib/powerpc64le-linux-gnu/dfp:/usr/lib/powerpc64le-linux-gnu:/lib/tls/power8/altivec/dfp:/lib/tls/power8/altivec:/lib/tls/power8/dfp:/lib/tls/power8:/lib/tls/altivec/dfp:/lib/tls/altivec:/lib/tls/dfp:/lib/tls:/lib/power8/altivec/dfp:/lib/power8/altivec:/lib/power8/dfp:/lib/power8:/lib/altivec/dfp:/lib/altivec:/lib/dfp:/lib:/usr/lib/tls/power8/altivec/dfp:/usr/lib/tls/power8/altivec:/usr/lib/tls/power8/dfp:/usr/lib/tls/power8:/usr/lib/tls/altivec/dfp:/usr/lib/tls/altivec:/usr/lib/tls/dfp:/usr/lib/tls:/usr/lib/power8/altivec/dfp:/usr/lib/power8/altivec:/usr/lib/power8/dfp:/usr/lib/power8:/usr/lib/altivec/dfp:/usr/lib/altivec:/usr/lib/dfp:/usr/lib (system search path)
+ 277374: trying file=/lib/powerpc64le-linux-gnu/tls/power8/altivec/dfp/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/tls/power8/altivec/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/tls/power8/dfp/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/tls/power8/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/tls/altivec/dfp/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/tls/altivec/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/tls/dfp/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/tls/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/power8/altivec/dfp/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/power8/altivec/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/power8/dfp/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/power8/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/altivec/dfp/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/altivec/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/dfp/libc.so.6
+ 277374: trying file=/lib/powerpc64le-linux-gnu/libc.so.6
+ 277374:
+ 277374:
+ 277374: calling init: /lib/powerpc64le-linux-gnu/libc.so.6
+ 277374:
+ 277374:
+ 277374: initialize program: /bin/true
+ 277374:
+ 277374:
+ 277374: transferring control: /bin/true
+ 277374:
+ 277374:
+ 277374: calling fini: /bin/true [0]
+ 277374:
+
+
+ [Regression Potential]
+
+ * The additional parsing of the new constant for HWCAP / PLATFORM are
+ backwards compatible, however, it would be nice for the kernel to have
+ the constants backported too. Such that focal kernel has support for
+ POWER10 platform too. These will arrive in the hwe kernel, but should be
+ backported to the generic kernel too.
+
+ At the moment Ubuntu, does not provide any power10 libraries, thus only
+ locally built/provided libraries could be installed and loaded from the
+ power10 paths. If such files are present on disk, on a power10 machines,
+ and happen to be buggy and/or abi incompatible, hard to debug crashes
+ may occur. However, this is no different to locally built
+ power9/avx2/avx512/lse etc built libraries on other architectures.
+
+ There might be other pieces of software in focal unprepared for power10
+ AT_PLATFORM as it does sort lower than power9, when similar stanzas
+ looped in the past unintended breakage may also occur.
+
+ If incompatibilities with power10 support are detected, they would need
+ to be fixed up under HWE banner.
+
+ Note there are no current power10 hardware in production, thus these
+ changes can currently only affect pre-release hardware.
+
+ [Other Info]
+
+ * Original bug report
+
+
== Comment: #0 - Tulio Magno Quites Machado Filho <tulioqm at br.ibm.com> - 2020-06-04 09:30:54 ==
Add the basic enablement of POWER10 in glibc (AT_PLATFORM and AT_HWCAP2) allowing userspace software to use POWER10 features by using STT_GNU_IFUNC or providing shared libraries for POWER10, e.g. with files in /usr/lib/powerpc64le-linux-gnu/power10/.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to glibc in Ubuntu.
https://bugs.launchpad.net/bugs/1887989
Title:
[20.04 Feature] Enable glibc for POWER10
Status in The Ubuntu-power-systems project:
Triaged
Status in glibc package in Ubuntu:
In Progress
Status in glibc source package in Focal:
Triaged
Status in glibc source package in Groovy:
In Progress
Bug description:
[Impact]
* glibc / ld does not know about new power10 capability, and thus
unable to load libraries optimizied for power10, on power10 hardware.
[Test Case]
* sudo rm /etc/ld.so.cache
* LD_SHOW_AUXV=yes LD_DEBUG=libs /bin/true
Expectations are that in AT_HWCAP2 power10 specific features are listed
AT_PLATFORM is set to power10
and that search paths include /power10/ directories
The sample output from power8 machine is this
$ LD_SHOW_AUXV=yes LD_DEBUG=libs /bin/true
AT_DCACHEBSIZE: 0x80
AT_ICACHEBSIZE: 0x80
AT_UCACHEBSIZE: 0x0
AT_SYSINFO_EHDR: 0x73b685b20000
AT_L1I_CACHESIZE: 32768
AT_L1I_CACHEGEOMETRY: 128B line size, 8-way set associative
AT_L1D_CACHESIZE: 65536
AT_L1D_CACHEGEOMETRY: 128B line size, 8-way set associative
AT_L2_CACHESIZE: 524288
AT_L2_CACHEGEOMETRY: 128B line size, 8-way set associative
AT_L3_CACHESIZE: 8388608
AT_L3_CACHEGEOMETRY: 128B line size, 8-way set associative
AT_HWCAP: true_le archpmu vsx arch_2_06 dfp ic_snoop smt mmu fpu altivec ppc64 ppc32
AT_PAGESZ: 65536
AT_CLKTCK: 100
AT_PHDR: 0x5b376320040
AT_PHENT: 56
AT_PHNUM: 9
AT_BASE: 0x73b685b40000
AT_FLAGS: 0x0
AT_ENTRY: 0x5b376321ab0
AT_UID: 1000
AT_EUID: 1000
AT_GID: 1000
AT_EGID: 1000
AT_SECURE: 0
AT_RANDOM: 0x7fffc779b3f2
AT_HWCAP2: htm-nosc vcrypto tar isel ebb dscr htm arch_2_07
AT_EXECFN: /bin/true
AT_PLATFORM: power8
AT_BASE_PLATFORM: power8
277374: find library=libc.so.6 [0]; searching
277374: search cache=/etc/ld.so.cache
277374: search path=/lib/powerpc64le-linux-gnu/tls/power8/altivec/dfp:/lib/powerpc64le-linux-gnu/tls/power8/altivec:/lib/powerpc64le-linux-gnu/tls/power8/dfp:/lib/powerpc64le-linux-gnu/tls/power8:/lib/powerpc64le-linux-gnu/tls/altivec/dfp:/lib/powerpc64le-linux-gnu/tls/altivec:/lib/powerpc64le-linux-gnu/tls/dfp:/lib/powerpc64le-linux-gnu/tls:/lib/powerpc64le-linux-gnu/power8/altivec/dfp:/lib/powerpc64le-linux-gnu/power8/altivec:/lib/powerpc64le-linux-gnu/power8/dfp:/lib/powerpc64le-linux-gnu/power8:/lib/powerpc64le-linux-gnu/altivec/dfp:/lib/powerpc64le-linux-gnu/altivec:/lib/powerpc64le-linux-gnu/dfp:/lib/powerpc64le-linux-gnu:/usr/lib/powerpc64le-linux-gnu/tls/power8/altivec/dfp:/usr/lib/powerpc64le-linux-gnu/tls/power8/altivec:/usr/lib/powerpc64le-linux-gnu/tls/power8/dfp:/usr/lib/powerpc64le-linux-gnu/tls/power8:/usr/lib/powerpc64le-linux-gnu/tls/altivec/dfp:/usr/lib/powerpc64le-linux-gnu/tls/altivec:/usr/lib/powerpc64le-linux-gnu/tls/dfp:/usr/lib/powerpc64le-linux-gnu/tls:/usr/lib/powerpc64le-linux-gnu/power8/altivec/dfp:/usr/lib/powerpc64le-linux-gnu/power8/altivec:/usr/lib/powerpc64le-linux-gnu/power8/dfp:/usr/lib/powerpc64le-linux-gnu/power8:/usr/lib/powerpc64le-linux-gnu/altivec/dfp:/usr/lib/powerpc64le-linux-gnu/altivec:/usr/lib/powerpc64le-linux-gnu/dfp:/usr/lib/powerpc64le-linux-gnu:/lib/tls/power8/altivec/dfp:/lib/tls/power8/altivec:/lib/tls/power8/dfp:/lib/tls/power8:/lib/tls/altivec/dfp:/lib/tls/altivec:/lib/tls/dfp:/lib/tls:/lib/power8/altivec/dfp:/lib/power8/altivec:/lib/power8/dfp:/lib/power8:/lib/altivec/dfp:/lib/altivec:/lib/dfp:/lib:/usr/lib/tls/power8/altivec/dfp:/usr/lib/tls/power8/altivec:/usr/lib/tls/power8/dfp:/usr/lib/tls/power8:/usr/lib/tls/altivec/dfp:/usr/lib/tls/altivec:/usr/lib/tls/dfp:/usr/lib/tls:/usr/lib/power8/altivec/dfp:/usr/lib/power8/altivec:/usr/lib/power8/dfp:/usr/lib/power8:/usr/lib/altivec/dfp:/usr/lib/altivec:/usr/lib/dfp:/usr/lib (system search path)
277374: trying file=/lib/powerpc64le-linux-gnu/tls/power8/altivec/dfp/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/tls/power8/altivec/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/tls/power8/dfp/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/tls/power8/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/tls/altivec/dfp/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/tls/altivec/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/tls/dfp/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/tls/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/power8/altivec/dfp/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/power8/altivec/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/power8/dfp/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/power8/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/altivec/dfp/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/altivec/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/dfp/libc.so.6
277374: trying file=/lib/powerpc64le-linux-gnu/libc.so.6
277374:
277374:
277374: calling init: /lib/powerpc64le-linux-gnu/libc.so.6
277374:
277374:
277374: initialize program: /bin/true
277374:
277374:
277374: transferring control: /bin/true
277374:
277374:
277374: calling fini: /bin/true [0]
277374:
[Regression Potential]
* The additional parsing of the new constant for HWCAP / PLATFORM are
backwards compatible, however, it would be nice for the kernel to have
the constants backported too. Such that focal kernel has support for
POWER10 platform too. These will arrive in the hwe kernel, but should
be backported to the generic kernel too.
At the moment Ubuntu, does not provide any power10 libraries, thus
only locally built/provided libraries could be installed and loaded
from the power10 paths. If such files are present on disk, on a
power10 machines, and happen to be buggy and/or abi incompatible, hard
to debug crashes may occur. However, this is no different to locally
built power9/avx2/avx512/lse etc built libraries on other
architectures.
There might be other pieces of software in focal unprepared for
power10 AT_PLATFORM as it does sort lower than power9, when similar
stanzas looped in the past unintended breakage may also occur.
If incompatibilities with power10 support are detected, they would
need to be fixed up under HWE banner.
Note there are no current power10 hardware in production, thus these
changes can currently only affect pre-release hardware.
[Other Info]
* Original bug report
== Comment: #0 - Tulio Magno Quites Machado Filho <tulioqm at br.ibm.com> - 2020-06-04 09:30:54 ==
Add the basic enablement of POWER10 in glibc (AT_PLATFORM and AT_HWCAP2) allowing userspace software to use POWER10 features by using STT_GNU_IFUNC or providing shared libraries for POWER10, e.g. with files in /usr/lib/powerpc64le-linux-gnu/power10/.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-power-systems/+bug/1887989/+subscriptions
More information about the foundations-bugs
mailing list