glibc/sysdeps/aarch64
Wilco Dijkstra fb8f66c22d 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 16:26:21 +01:00
..
bits Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
fpu Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
multiarch AArch64: Check kernel version for SVE ifuncs 2024-04-08 16:26:21 +01:00
nptl Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sys Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
__longjmp.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
__mtag_tag_region.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
__mtag_tag_zero_region.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
abort-instr.h
atomic-machine.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
bsd-_setjmp.c
bsd-setjmp.c
configure aarch64: fix check for SVE support in assembler 2024-04-08 16:25:05 +01:00
configure.ac aarch64: fix check for SVE support in assembler 2024-04-08 16:25:05 +01:00
crti.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
crtn.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-audit-check.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-bti.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-dtprocnum.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-irel.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-link.sym
dl-lookupcfg.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-machine.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-prop.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-start.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-tls.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-tlsdesc.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-tlsdesc.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-trampoline.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-tunables.list Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
e_sqrtl.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
elf-initfini.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
hp-timing.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
Implies
jmpbuf-offsets.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
jmpbuf-unwind.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
ldsodefs.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
libc-mtag.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
libc-tls.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
libm-test-ulps
libm-test-ulps-name
linkmap.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
machine-gmon.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
Makefile configure: Use -Wno-ignored-attributes if compiler warns about multiple aliases 2022-11-01 09:51:06 -03:00
math-tests-trap.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
mcount.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
memchr.S AArch64: Optimize memchr 2023-01-17 15:09:18 +00:00
memcmp.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
memcpy.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
memmove.c
memrchr.S AArch64: Optimize memrchr 2023-01-17 15:09:18 +00:00
memset-reg.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
memset.S AArch64: Add memset_zva64 2024-04-08 16:24:27 +01:00
preconfigure
rawmemchr.S aarch64: correct CFI in rawmemchr (bug 31113) 2024-04-08 16:24:55 +01:00
setjmp.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sfp-machine.h
sotruss-lib.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
stackinfo.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
start.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
stpcpy.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
strchr.S AArch64: Optimize strchr 2023-01-17 15:09:18 +00:00
strchrnul.S AArch64: Improve strchrnul 2023-01-17 15:09:18 +00:00
strcmp.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
strcpy.S AArch64: Optimize strcpy 2023-01-17 15:09:18 +00:00
string_private.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
strlen.S AArch64: Optimize strlen 2023-01-17 15:09:18 +00:00
strncmp.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
strnlen.S AArch64: Optimize strnlen 2023-01-17 15:09:18 +00:00
strrchr.S AArch64: Improve strrchr 2023-01-17 15:09:18 +00:00
sysdep.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tlsdesc.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tlsdesc.sym
tst-audit26.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-audit26mod.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-audit26mod.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-audit27.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-audit27mod.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-audit27mod.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-audit.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-auditmod26.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-auditmod27.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-ifunc-arg-1.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-ifunc-arg-2.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-vpcs-mod.S Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tst-vpcs.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
Versions
wordcopy.c aarch64: Don't build wordcopy 2022-10-28 11:14:54 +01:00