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