]>
Commit | Line | Data |
---|---|---|
4b5d12b0 BG |
1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* | |
3 | * tools/testing/selftests/kvm/include/perf_test_util.h | |
4 | * | |
5 | * Copyright (C) 2020, Google LLC. | |
6 | */ | |
7 | ||
8 | #ifndef SELFTEST_KVM_PERF_TEST_UTIL_H | |
9 | #define SELFTEST_KVM_PERF_TEST_UTIL_H | |
10 | ||
81bcb261 DM |
11 | #include <pthread.h> |
12 | ||
4b5d12b0 | 13 | #include "kvm_util.h" |
4b5d12b0 BG |
14 | |
15 | /* Default guest test virtual memory offset */ | |
16 | #define DEFAULT_GUEST_TEST_MEM 0xc0000000 | |
17 | ||
6769155f AJ |
18 | #define DEFAULT_PER_VCPU_MEM_SIZE (1 << 30) /* 1G */ |
19 | ||
b268b6f0 | 20 | #define PERF_TEST_MEM_SLOT_INDEX 1 |
3be18630 | 21 | |
b268b6f0 | 22 | struct perf_test_vcpu_args { |
613d6118 | 23 | uint64_t gpa; |
4b5d12b0 BG |
24 | uint64_t gva; |
25 | uint64_t pages; | |
26 | ||
27 | /* Only used by the host userspace part of the vCPU thread */ | |
28 | int vcpu_id; | |
29 | }; | |
30 | ||
31 | struct perf_test_args { | |
32 | struct kvm_vm *vm; | |
71d48966 | 33 | /* The starting address and size of the guest test region. */ |
b91b637f | 34 | uint64_t gpa; |
71d48966 | 35 | uint64_t size; |
4b5d12b0 | 36 | uint64_t guest_page_size; |
92ab4b9a | 37 | int wr_fract; |
4b5d12b0 | 38 | |
71d48966 DM |
39 | /* Run vCPUs in L2 instead of L1, if the architecture supports it. */ |
40 | bool nested; | |
41 | ||
b268b6f0 | 42 | struct perf_test_vcpu_args vcpu_args[KVM_MAX_VCPUS]; |
4b5d12b0 BG |
43 | }; |
44 | ||
b268b6f0 | 45 | extern struct perf_test_args perf_test_args; |
4b5d12b0 | 46 | |
b268b6f0 | 47 | struct kvm_vm *perf_test_create_vm(enum vm_guest_mode mode, int vcpus, |
609e6202 | 48 | uint64_t vcpu_memory_bytes, int slots, |
cf1d5930 SC |
49 | enum vm_mem_backing_src_type backing_src, |
50 | bool partition_vcpu_memory_access); | |
b268b6f0 | 51 | void perf_test_destroy_vm(struct kvm_vm *vm); |
4b5d12b0 | 52 | |
13bbc703 SC |
53 | void perf_test_set_wr_fract(struct kvm_vm *vm, int wr_fract); |
54 | ||
81bcb261 DM |
55 | void perf_test_start_vcpu_threads(int vcpus, void (*vcpu_fn)(struct perf_test_vcpu_args *)); |
56 | void perf_test_join_vcpu_threads(int vcpus); | |
71d48966 DM |
57 | void perf_test_guest_code(uint32_t vcpu_id); |
58 | ||
59 | uint64_t perf_test_nested_pages(int nr_vcpus); | |
60 | void perf_test_setup_nested(struct kvm_vm *vm, int nr_vcpus); | |
81bcb261 | 61 | |
4b5d12b0 | 62 | #endif /* SELFTEST_KVM_PERF_TEST_UTIL_H */ |