xref: /linux/tools/testing/selftests/kvm/include/timer_test.h (revision 7255fcc80d4b525cc10cfaaf7f485830d4ed2000)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * timer test specific header
4  *
5  * Copyright (C) 2018, Google LLC
6  */
7 
8 #ifndef SELFTEST_KVM_TIMER_TEST_H
9 #define SELFTEST_KVM_TIMER_TEST_H
10 
11 #include "kvm_util.h"
12 
13 #define NR_VCPUS_DEF            4
14 #define NR_TEST_ITERS_DEF       5
15 #define TIMER_TEST_PERIOD_MS_DEF    10
16 #define TIMER_TEST_ERR_MARGIN_US    100
17 #define TIMER_TEST_MIGRATION_FREQ_MS    2
18 
19 /* Timer test cmdline parameters */
20 struct test_args {
21 	uint32_t nr_vcpus;
22 	uint32_t nr_iter;
23 	uint32_t timer_period_ms;
24 	uint32_t migration_freq_ms;
25 	uint32_t timer_err_margin_us;
26 	/* Members of struct kvm_arm_counter_offset */
27 	uint64_t counter_offset;
28 	uint64_t reserved;
29 };
30 
31 /* Shared variables between host and guest */
32 struct test_vcpu_shared_data {
33 	uint32_t nr_iter;
34 	int guest_stage;
35 	uint64_t xcnt;
36 };
37 
38 extern struct test_args test_args;
39 extern struct kvm_vcpu *vcpus[];
40 extern struct test_vcpu_shared_data vcpu_shared_data[];
41 
42 struct kvm_vm *test_vm_create(void);
43 void test_vm_cleanup(struct kvm_vm *vm);
44 
45 #endif /* SELFTEST_KVM_TIMER_TEST_H */
46