]> git.ipfire.org Git - people/ms/linux.git/blame - tools/testing/selftests/kvm/include/perf_test_util.h
Merge tag 'riscv-for-linus-5.19-rc3' of git://git.kernel.org/pub/scm/linux/kernel...
[people/ms/linux.git] / tools / testing / selftests / kvm / include / perf_test_util.h
CommitLineData
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 22struct 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
31struct 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 45extern struct perf_test_args perf_test_args;
4b5d12b0 46
b268b6f0 47struct 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 51void perf_test_destroy_vm(struct kvm_vm *vm);
4b5d12b0 52
13bbc703
SC
53void perf_test_set_wr_fract(struct kvm_vm *vm, int wr_fract);
54
81bcb261
DM
55void perf_test_start_vcpu_threads(int vcpus, void (*vcpu_fn)(struct perf_test_vcpu_args *));
56void perf_test_join_vcpu_threads(int vcpus);
71d48966
DM
57void perf_test_guest_code(uint32_t vcpu_id);
58
59uint64_t perf_test_nested_pages(int nr_vcpus);
60void perf_test_setup_nested(struct kvm_vm *vm, int nr_vcpus);
81bcb261 61
4b5d12b0 62#endif /* SELFTEST_KVM_PERF_TEST_UTIL_H */