linux-yocto/tools/testing/selftests/arm64/fp
Colin Ian King 963c5d4968 kselftest/arm64: Fix a couple of spelling mistakes
There are two spelling mistakes in some error messages. Fix them.

Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20240613073429.1797451-1-colin.i.king@gmail.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2024-06-13 10:21:12 +01:00
..
.gitignore kselftest/arm64: Include kernel mode NEON in fp-stress 2024-06-12 15:50:36 +01:00
asm-offsets.h kselftest/arm64: Count SIGUSR2 deliveries in FP stress tests 2022-09-06 18:31:41 +01:00
asm-utils.S selftests: arm64: Factor out utility functions for assembly FP tests 2021-10-21 11:11:27 +01:00
assembler.h kselftest/arm64: Fix .pushsection for strings in FP tests 2023-01-20 14:30:45 +00:00
fp-pidbench.S kselftest/arm64: Remove redundant _start labels from FP tests 2023-01-20 14:30:45 +00:00
fp-ptrace-asm.S kselftest/arm64: Test that ptrace takes effect in the target process 2024-02-21 17:59:35 +00:00
fp-ptrace.c kselftest/arm64: Test that ptrace takes effect in the target process 2024-02-21 17:59:35 +00:00
fp-ptrace.h kselftest/arm64: Test that ptrace takes effect in the target process 2024-02-21 17:59:35 +00:00
fp-stress.c kselftest/arm64: Include kernel mode NEON in fp-stress 2024-06-12 15:50:36 +01:00
fpsimd-stress
fpsimd-test.S kselftest/arm64: Remove redundant _start labels from FP tests 2023-01-20 14:30:45 +00:00
kernel-test.c kselftest/arm64: Fix a couple of spelling mistakes 2024-06-13 10:21:12 +01:00
Makefile kselftest/arm64: Include kernel mode NEON in fp-stress 2024-06-12 15:50:36 +01:00
rdvl-sme.c kselftest/arm64: Extend vector configuration API tests to cover SME 2022-04-28 17:57:11 +01:00
rdvl-sve.c kselftest/arm64: Provide a helper binary and "library" for SVE RDVL 2021-08-03 16:20:05 +01:00
rdvl.h kselftest/arm64: Extend vector configuration API tests to cover SME 2022-04-28 17:57:11 +01:00
rdvl.S kselftest/arm64: Extend vector configuration API tests to cover SME 2022-04-28 17:57:11 +01:00
README
sme-inst.h kselftest/arm64: Add a stress test program for ZT0 2023-01-20 12:23:07 +00:00
ssve-stress kselftest/arm64: sme: Provide streaming mode SVE stress test 2022-04-28 17:57:11 +01:00
sve-probe-vls.c kselftest/arm64: Validate vector lengths are set in sve-probe-vls 2021-08-03 16:20:05 +01:00
sve-ptrace.c kselftest/arm64: Limit the maximum VL we try to set via ptrace 2023-01-31 15:33:23 +00:00
sve-stress
sve-test.S kselftest/arm64: Log SVCR when the SME tests barf 2023-12-11 12:02:00 +00:00
TODO selftests: arm64: More comprehensively test the SVE ptrace interface 2021-09-29 14:40:32 +01:00
vec-syscfg.c kselftest/arm64: Don't probe the current VL for unsupported vector types 2023-12-19 10:03:17 +00:00
vlset.c kselftest/arm64: sme: Add SME support to vlset 2022-04-28 17:57:11 +01:00
za-fork-asm.S selftests/arm64: Add a testcase for handling of ZA on clone() 2022-04-28 17:57:12 +01:00
za-fork.c kselftest/arm64: Fix output formatting for za-fork 2023-11-23 14:16:15 +00:00
za-ptrace.c kselftest/arm64: Limit the maximum VL we try to set via ptrace 2023-01-31 15:33:23 +00:00
za-stress kselftest/arm64: Add stress test for SME ZA context switching 2022-04-28 17:57:12 +01:00
za-test.S kselftest/arm64: Log SVCR when the SME tests barf 2023-12-11 12:02:00 +00:00
zt-ptrace.c kselftest/arm64: Add coverage of the ZT ptrace regset 2023-01-20 12:23:09 +00:00
zt-test.S kselftest/arm64: Log SVCR when the SME tests barf 2023-12-11 12:02:00 +00:00

This directory contains a mix of tests integrated with kselftest and standalone stress tests.

kselftest tests

sve-probe-vls - Checks the SVE vector length enumeration interface sve-ptrace - Checks the SVE ptrace interface

Running the non-kselftest tests

sve-stress performs an SVE context switch stress test, as described below.

(The fpsimd-stress test works the same way; just substitute "fpsimd" for "sve" in the following commands.)

The test runs until killed by the user.

If no context switch error was detected, you will see output such as the following:

$ ./sve-stress (wait for some time) ^C Vector length: 512 bits PID: 1573 Terminated by signal 15, no error, iterations=9467, signals=1014 Vector length: 512 bits PID: 1575 Terminated by signal 15, no error, iterations=9448, signals=1028 Vector length: 512 bits PID: 1577 Terminated by signal 15, no error, iterations=9436, signals=1039 Vector length: 512 bits PID: 1579 Terminated by signal 15, no error, iterations=9421, signals=1039 Vector length: 512 bits PID: 1581 Terminated by signal 15, no error, iterations=9403, signals=1039 Vector length: 512 bits PID: 1583 Terminated by signal 15, no error, iterations=9385, signals=1036 Vector length: 512 bits PID: 1585 Terminated by signal 15, no error, iterations=9376, signals=1039 Vector length: 512 bits PID: 1587 Terminated by signal 15, no error, iterations=9361, signals=1039 Vector length: 512 bits PID: 1589 Terminated by signal 15, no error, iterations=9350, signals=1039

If an error was detected, details of the mismatch will be printed instead of "no error".

Ideally, the test should be allowed to run for many minutes or hours to maximise test coverage.

KVM stress testing

To try to reproduce the bugs that we have been observing, sve-stress should be run in parallel in two KVM guests, while simultaneously running on the host.

  1. Start 2 guests, using the following command for each:

$ lkvm run --console=virtio -pconsole=hvc0 --sve Image

(Depending on the hardware GIC implementation, you may also need --irqchip=gicv3. New kvmtool defaults to that if appropriate, but I can't remember whether my branch is new enough for that. Try without the option first.)

Kvmtool occupies the terminal until you kill it (Ctrl+A x), or until the guest terminates. It is therefore recommended to run each instance in separate terminal (use screen or ssh etc.) This allows multiple guests to be run in parallel while running other commands on the host.

Within the guest, the host filesystem is accessible, mounted on /host.

  1. Run the sve-stress on each guest with the Vector-Length set to 32: guest$ ./vlset --inherit 32 ./sve-stress

  2. Run the sve-stress on the host with the maximum Vector-Length: host$ ./vlset --inherit --max ./sve-stress

Again, the test should be allowed to run for many minutes or hours to maximise test coverage.

If no error is detected, you will see output from each sve-stress instance similar to that illustrated above; otherwise details of the observed mismatches will be printed.