Add arch_timer_edge_cases selftest to test various corner cases of the ARM timers such as: * timers above the max TVAL value * timers in the past * moving counters ahead and behind pending timers * reprograming timers * timers fired multiple times * masking/unmasking using the timer control mask These are intentionally unusual scenarios to stress compliance with the arm architecture. v3: * Rebase to v6.6 * Patch to standardize GIC base addresses across tests * Patch to guarantee interrupt handling in vgic_irq with context sync, fixing an error there that was caught here * Expand sync_cmd enum for more logical arguments to waiting functions v2: https://lore.kernel.org/kvmarm/20230928210201.1310536-1-coltonlewis@xxxxxxxxxx/ v1: https://lore.kernel.org/kvm/20230516213731.387132-1-coltonlewis@xxxxxxxxxx/ Colton Lewis (3): KVM: arm64: selftests: Standardize GIC base addresses KVM: arm64: selftests: Guarantee interrupts are handled KVM: arm64: selftests: Add arch_timer_edge_cases selftest tools/testing/selftests/kvm/Makefile | 1 + .../selftests/kvm/aarch64/arch_timer.c | 8 +- .../kvm/aarch64/arch_timer_edge_cases.c | 1104 +++++++++++++++++ .../testing/selftests/kvm/aarch64/vgic_irq.c | 23 +- .../selftests/kvm/dirty_log_perf_test.c | 5 +- .../kvm/include/aarch64/arch_timer.h | 18 +- .../selftests/kvm/include/aarch64/gic.h | 8 +- .../selftests/kvm/include/aarch64/vgic.h | 3 +- tools/testing/selftests/kvm/lib/aarch64/gic.c | 12 +- .../testing/selftests/kvm/lib/aarch64/vgic.c | 7 +- 10 files changed, 1159 insertions(+), 30 deletions(-) create mode 100644 tools/testing/selftests/kvm/aarch64/arch_timer_edge_cases.c -- 2.42.0.869.gea05f2083d-goog