Mark Brown broonie@kernel.org writes:
Add a stress test which runs one more process than we have CPUs spinning through a very recursive function with frequent syscalls immediately prior to return and signals being injected every 100ms. The goal is to flag up any scheduling related issues, for example failure to ensure that barriers are inserted when moving a GCS using task to another CPU. The test runs for a configurable amount of time, defaulting to 10 seconds.
Reviewed-by: Thiago Jung Bauermann thiago.bauermann@linaro.org Signed-off-by: Mark Brown broonie@kernel.org
tools/testing/selftests/arm64/gcs/.gitignore | 2 + tools/testing/selftests/arm64/gcs/Makefile | 6 +- tools/testing/selftests/arm64/gcs/asm-offsets.h | 0 .../selftests/arm64/gcs/gcs-stress-thread.S | 311 ++++++++++++ tools/testing/selftests/arm64/gcs/gcs-stress.c | 532 +++++++++++++++++++++ 5 files changed, 850 insertions(+), 1 deletion(-)
This test fails for me, even without THP:
$ sudo ./run_kselftest.sh -t arm64:gcs-stress TAP version 13 1..1 # timeout set to 45 # selftests: arm64: gcs-stress # TAP version 13 # 1..9 # # 8 CPUs, 9 GCS threads # # Will run for 10s # # Started Thread-4030 # # Started Thread-4031 # # Started Thread-4032 # # Started Thread-4033 # # Started Thread-4034 # # Started Thread-4035 # # Started Thread-4036 # # Started Thread-4037 # # Started Thread-4038 # # Waiting for 9 children # # Waiting for 9 children # # Thread-4030: Failed to enable GCS # # Thread-4031: Failed to enable GCS # # Thread-4032: Failed to enable GCS # # Thread-4033: Failed to enable GCS # # Thread-4034: Failed to enable GCS # # Thread-4035: Failed to enable GCS # # Thread-4036: Failed to enable GCS # # Thread-4038: Failed to enable GCS # # Thread-4037: Failed to enable GCS # # Sending signals, timeout remaining: 10000ms # # Sending signals, timeout remaining: 9900ms ⋮ # # Sending signals, timeout remaining: 200ms # # Sending signals, timeout remaining: 100ms # # Finishing up... # # Thread-4030 exited with error code 255 # not ok 1 Thread-4030 # # Thread-4031 exited with error code 255 # not ok 2 Thread-4031 # # Thread-4032 exited with error code 255 # not ok 3 Thread-4032 # # Thread-4033 exited with error code 255 # not ok 4 Thread-4033 # # Thread-4034 exited with error code 255 # not ok 5 Thread-4034 # # Thread-4035 exited with error code 255 # not ok 6 Thread-4035 # # Thread-4036 exited with error code 255 # not ok 7 Thread-4036 # # Thread-4037 exited with error code 255 # not ok 8 Thread-4037 # # Thread-4038 exited with error code 255 # not ok 9 Thread-4038 # # Totals: pass:0 fail:9 xfail:0 xpass:0 skip:0 error:0 ok 1 selftests: arm64: gcs-stress