mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-28 18:10:32 +00:00

Currently fp-stress only covers userspace use of floating point, it does not cover any kernel mode uses. Since currently kernel mode floating point usage can't be preempted and there are explicit preemption points in the existing implementations this isn't so important for fp-stress but when we readd preemption it will be good to try to exercise it. When the arm64 accelerated crypto operations are implemented we can relatively straightforwardly trigger kernel mode floating point usage by using the crypto userspace API to hash data, using the splice() support in an effort to minimise copying. We use /proc/crypto to check which accelerated implementations are available, picking the first symmetric hash we find. We run the kernel mode test unconditionally, replacing the second copy of the FPSIMD testcase for systems with FPSIMD only. If we don't think there are any suitable kernel mode implementations we fall back to running another copy of fpsimd-stress. There are a number issues with this approach, we don't actually verify that we are using an accelerated (or even CPU) implementation of the algorithm being tested and even with attempting to use splice() to minimise copying there are sizing limits on how much data gets spliced at once. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20240521-arm64-fp-stress-kernel-v1-1-e38f107baad4@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
55 lines
1.7 KiB
Makefile
55 lines
1.7 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
# A proper top_srcdir is needed by KSFT(lib.mk)
|
|
top_srcdir = $(realpath ../../../../../)
|
|
|
|
CFLAGS += $(KHDR_INCLUDES)
|
|
|
|
TEST_GEN_PROGS := \
|
|
fp-ptrace \
|
|
fp-stress \
|
|
sve-ptrace sve-probe-vls \
|
|
vec-syscfg \
|
|
za-fork za-ptrace
|
|
TEST_GEN_PROGS_EXTENDED := fp-pidbench fpsimd-test \
|
|
kernel-test \
|
|
rdvl-sme rdvl-sve \
|
|
sve-test \
|
|
ssve-test \
|
|
za-test \
|
|
zt-ptrace \
|
|
zt-test \
|
|
vlset
|
|
TEST_PROGS_EXTENDED := fpsimd-stress sve-stress ssve-stress za-stress
|
|
|
|
EXTRA_CLEAN += $(OUTPUT)/asm-utils.o $(OUTPUT)/rdvl.o $(OUTPUT)/za-fork-asm.o
|
|
|
|
# Build with nolibc to avoid effects due to libc's clone() support
|
|
$(OUTPUT)/fp-pidbench: fp-pidbench.S $(OUTPUT)/asm-utils.o
|
|
$(CC) -nostdlib $^ -o $@
|
|
$(OUTPUT)/fp-ptrace: fp-ptrace.c fp-ptrace-asm.S
|
|
$(OUTPUT)/fpsimd-test: fpsimd-test.S $(OUTPUT)/asm-utils.o
|
|
$(CC) -nostdlib $^ -o $@
|
|
$(OUTPUT)/rdvl-sve: rdvl-sve.c $(OUTPUT)/rdvl.o
|
|
$(OUTPUT)/rdvl-sme: rdvl-sme.c $(OUTPUT)/rdvl.o
|
|
$(OUTPUT)/sve-ptrace: sve-ptrace.c
|
|
$(OUTPUT)/sve-probe-vls: sve-probe-vls.c $(OUTPUT)/rdvl.o
|
|
$(OUTPUT)/sve-test: sve-test.S $(OUTPUT)/asm-utils.o
|
|
$(CC) -nostdlib $^ -o $@
|
|
$(OUTPUT)/ssve-test: sve-test.S $(OUTPUT)/asm-utils.o
|
|
$(CC) -DSSVE -nostdlib $^ -o $@
|
|
$(OUTPUT)/vec-syscfg: vec-syscfg.c $(OUTPUT)/rdvl.o
|
|
$(OUTPUT)/vlset: vlset.c
|
|
$(OUTPUT)/za-fork: za-fork.c $(OUTPUT)/za-fork-asm.o
|
|
$(CC) -fno-asynchronous-unwind-tables -fno-ident -s -Os -nostdlib \
|
|
-include ../../../../include/nolibc/nolibc.h -I../..\
|
|
-static -ffreestanding -Wall $^ -o $@
|
|
$(OUTPUT)/za-ptrace: za-ptrace.c
|
|
$(OUTPUT)/za-test: za-test.S $(OUTPUT)/asm-utils.o
|
|
$(CC) -nostdlib $^ -o $@
|
|
$(OUTPUT)/zt-ptrace: zt-ptrace.c
|
|
$(OUTPUT)/zt-test: zt-test.S $(OUTPUT)/asm-utils.o
|
|
$(CC) -nostdlib $^ -o $@
|
|
|
|
include ../../lib.mk
|