As the name implies, for_each_guest_mode() will run the test case for all supported guest addressing modes. On x86 that doesn't amount to anything, but arm64 can handle 4K, 16K, and 64K page sizes on supporting hardware. Blindly attempting to run access_tracking_perf_test on arm64 stalls on the second test case, as the 'done' global remains set between test iterations. Clear it after VM teardown in anticipation of a subsequent test case. Signed-off-by: Oliver Upton <oliver.upton@xxxxxxxxx> --- tools/testing/selftests/kvm/access_tracking_perf_test.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/testing/selftests/kvm/access_tracking_perf_test.c b/tools/testing/selftests/kvm/access_tracking_perf_test.c index 76c583a07ea2..4da066479e0a 100644 --- a/tools/testing/selftests/kvm/access_tracking_perf_test.c +++ b/tools/testing/selftests/kvm/access_tracking_perf_test.c @@ -326,6 +326,9 @@ static void run_test(enum vm_guest_mode mode, void *arg) perf_test_join_vcpu_threads(nr_vcpus); perf_test_destroy_vm(vm); + + /* Clear done in anticipation of testing another guest mode */ + done = false; } static void help(char *name) -- 2.38.1.431.g37b22c650d-goog