Mark Brown broonie@kernel.org writes:
Do some testing of the signal handling for GCS, checking that a GCS frame has the expected information in it and that the expected signals are delivered with invalid operations.
Reviewed-by: Thiago Jung Bauermann thiago.bauermann@linaro.org Signed-off-by: Mark Brown broonie@kernel.org
tools/testing/selftests/arm64/signal/.gitignore | 1 + .../selftests/arm64/signal/test_signals_utils.h | 10 +++ .../arm64/signal/testcases/gcs_exception_fault.c | 62 +++++++++++++++ .../selftests/arm64/signal/testcases/gcs_frame.c | 88 ++++++++++++++++++++++ .../arm64/signal/testcases/gcs_write_fault.c | 67 ++++++++++++++++ 5 files changed, 228 insertions(+)
The gcs_write_fault test fails for me, even without THP:
$ sudo ./run_kselftest.sh -t arm64:gcs_write_fault TAP version 13 1..1 # timeout set to 45 # selftests: arm64: gcs_write_fault # # GCS write fault :: Normal writes to a GCS segfault # Registered handlers for all signals. # Detected MINSTKSIGSZ:4720 # Required Features: [ GCS ] supported # Incompatible Features: [] absent # Testcase initialized. # Read value 0x0 # SIG_OK -- SP:0xFFFFCF1292D0 si_addr@:0xffffba645000 si_code:10 token@:(nil) offset:-281473808879616 # si_code != SEGV_ACCERR...test is probably broken! # -- RX UNEXPECTED SIGNAL: 6 code -6 address 0xf76 # ==>> completed. FAIL(0) not ok 1 selftests: arm64: gcs_write_fault # exit=1
It also generates an "INVALID GCS" line in dmesg.