KVM: selftests: Add vgic initialization for dirty log perf test for ARM
authorJing Zhang <jingzhangos@google.com>
Tue, 18 Jan 2022 01:57:03 +0000 (01:57 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 8 Feb 2022 14:27:53 +0000 (14:27 +0000)
For ARM64, if no vgic is setup before the dirty log perf test, the
userspace irqchip would be used, which would affect the dirty log perf
test result.

Signed-off-by: Jing Zhang <jingzhangos@google.com>
Tested-by: Fuad Tabba <tabba@google.com>
Reviewed-by: Fuad Tabba <tabba@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220118015703.3630552-4-jingzhangos@google.com
tools/testing/selftests/kvm/dirty_log_perf_test.c

index 1954b96..b501338 100644 (file)
 #include "test_util.h"
 #include "perf_test_util.h"
 #include "guest_modes.h"
+#ifdef __aarch64__
+#include "aarch64/vgic.h"
+
+#define GICD_BASE_GPA                  0x8000000ULL
+#define GICR_BASE_GPA                  0x80A0000ULL
+#endif
 
 /* How many host loops to run by default (one KVM_GET_DIRTY_LOG for each loop)*/
 #define TEST_HOST_LOOP_N               2UL
@@ -200,6 +206,10 @@ static void run_test(enum vm_guest_mode mode, void *arg)
                vm_enable_cap(vm, &cap);
        }
 
+#ifdef __aarch64__
+       vgic_v3_setup(vm, nr_vcpus, 64, GICD_BASE_GPA, GICR_BASE_GPA);
+#endif
+
        /* Start the iterations */
        iteration = 0;
        host_quit = false;