glibc/sysdeps/aarch64
Wilco Dijkstra 24de733967 AArch64: Check kernel version for SVE ifuncs
Old Linux kernels disable SVE after every system call.  Calling the
SVE-optimized memcpy afterwards will then cause a trap to reenable SVE.
As a result, applications with a high use of syscalls may run slower with
the SVE memcpy.  This is true for kernels between 4.15.0 and before 6.2.0,
except for 5.14.0 which was patched.  Avoid this by checking the kernel
version and selecting the SVE ifunc on modern kernels.

Parse the kernel version reported by uname() into a 24-bit kernel.major.minor
value without calling any library functions.  If uname() is not supported or
if the version format is not recognized, assume the kernel is modern.

Tested-by: Florian Weimer <fweimer@redhat.com>
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
(cherry picked from commit 2e94e2f5d2)
2024-04-08 17:08:03 +01:00
..
bits elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
fpu AArch64: Reset HWCAP2_AFP bits in FPCR for default fenv 2022-07-05 14:01:17 +01:00
multiarch AArch64: Check kernel version for SVE ifuncs 2024-04-08 17:08:03 +01:00
nptl Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
sys Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
__longjmp.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
__mtag_tag_region.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
__mtag_tag_zero_region.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
abort-instr.h
atomic-machine.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
bsd-_setjmp.c aarch64: Rename place holder .S files to .c 2020-07-08 15:02:37 +01:00
bsd-setjmp.c aarch64: Rename place holder .S files to .c 2020-07-08 15:02:37 +01:00
configure aarch64: fix check for SVE support in assembler 2024-04-08 16:53:05 +01:00
configure.ac aarch64: fix check for SVE support in assembler 2024-04-08 16:53:05 +01:00
crti.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
crtn.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-audit-check.h elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
dl-bti.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-dtprocnum.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-irel.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-link.sym elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
dl-lookupcfg.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-machine.h aarch64: Handle fewer relocations for RTLD_BOOTSTRAP 2022-06-15 19:21:53 -07:00
dl-prop.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-start.S aarch64: Move ld.so _start to separate file and drop _dl_skip_args 2022-05-17 10:14:03 +01:00
dl-tls.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-tlsdesc.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-tlsdesc.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-trampoline.S elf: Fix rtld-audit trampoline for aarch64 2022-11-22 10:45:11 -03:00
dl-tunables.list Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
e_sqrtl.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
elf-initfini.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
hp-timing.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
Implies Remove dbl-64/wordsize-64 (part 2) 2021-01-07 15:26:26 +00:00
jmpbuf-offsets.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
jmpbuf-unwind.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ldsodefs.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
libc-mtag.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
libc-tls.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
libm-test-ulps aarch64: update libm test ulps 2021-10-05 13:44:27 +01:00
libm-test-ulps-name Do not hardcode platform names in manual/libm-err-tab.pl (bug 14139). 2016-11-04 16:49:06 +00:00
linkmap.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
machine-gmon.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
Makefile arc4random: simplify design for better safety 2022-07-27 08:58:27 -03:00
math-tests-trap.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
mcount.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memchr.S AArch64: Optimize memchr 2024-04-08 16:42:04 +01:00
memcmp.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memcpy.S aarch64: Use memcpy_simd as the default memcpy 2024-04-08 16:41:52 +01:00
memmove.c aarch64: Rename place holder .S files to .c 2020-07-08 15:02:37 +01:00
memrchr.S AArch64: Optimize memrchr 2024-04-08 16:42:14 +01:00
memset-reg.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memset.S AArch64: Add memset_zva64 2024-04-08 16:51:34 +01:00
preconfigure Remove relro configure test. 2014-06-27 16:51:22 +00:00
rawmemchr.S aarch64: correct CFI in rawmemchr (bug 31113) 2024-04-08 16:52:55 +01:00
setjmp.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
sfp-machine.h Break more lines before not after operators. 2019-02-25 13:19:19 +00:00
sotruss-lib.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
stackinfo.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
start.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
stpcpy.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strchr.S AArch64: Optimize strchr 2024-04-08 16:45:20 +01:00
strchrnul.S AArch64: Improve strchrnul 2024-04-08 16:45:31 +01:00
strcmp.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strcpy.S AArch64: Optimize strcpy 2024-04-08 16:45:50 +01:00
string_private.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strlen.S AArch64: Optimize strlen 2024-04-08 16:45:59 +01:00
strncmp.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strnlen.S AArch64: Optimize strnlen 2024-04-08 16:46:11 +01:00
strrchr.S AArch64: Improve strrchr 2024-04-08 16:46:23 +01:00
sysdep.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tlsdesc.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tlsdesc.sym aarch64: Use explicit offsets in _dl_tlsdesc_dynamic 2016-12-02 16:52:57 +01:00
tst-audit26.c elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
tst-audit26mod.c elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
tst-audit26mod.h elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
tst-audit27.c elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
tst-audit27mod.c elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
tst-audit27mod.h elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
tst-audit.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-auditmod26.c elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
tst-auditmod27.c elf: Fix runtime linker auditing on aarch64 (BZ #26643) 2022-02-01 14:49:46 -03:00
tst-ifunc-arg-1.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-ifunc-arg-2.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-vpcs-mod.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-vpcs.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
Versions