KVM: selftests: Make the per vcpu memory size global
Rename vcpu_memory_bytes to something with "percpu" in it in order to be less ambiguous. Also make it global to simplify things. Signed-off-by: Andrew Jones <drjones@redhat.com> Message-Id: <20201104212357.171559-7-drjones@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Родитель
f663132d1e
Коммит
6769155fec
|
@ -27,8 +27,6 @@
|
||||||
|
|
||||||
#ifdef __NR_userfaultfd
|
#ifdef __NR_userfaultfd
|
||||||
|
|
||||||
#define DEFAULT_GUEST_TEST_MEM_SIZE (1 << 30) /* 1G */
|
|
||||||
|
|
||||||
#ifdef PRINT_PER_PAGE_UPDATES
|
#ifdef PRINT_PER_PAGE_UPDATES
|
||||||
#define PER_PAGE_DEBUG(...) printf(__VA_ARGS__)
|
#define PER_PAGE_DEBUG(...) printf(__VA_ARGS__)
|
||||||
#else
|
#else
|
||||||
|
@ -251,8 +249,7 @@ static int setup_demand_paging(struct kvm_vm *vm,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void run_test(enum vm_guest_mode mode, bool use_uffd,
|
static void run_test(enum vm_guest_mode mode, bool use_uffd,
|
||||||
useconds_t uffd_delay, int vcpus,
|
useconds_t uffd_delay, int vcpus)
|
||||||
uint64_t vcpu_memory_bytes)
|
|
||||||
{
|
{
|
||||||
pthread_t *vcpu_threads;
|
pthread_t *vcpu_threads;
|
||||||
pthread_t *uffd_handler_threads = NULL;
|
pthread_t *uffd_handler_threads = NULL;
|
||||||
|
@ -264,7 +261,7 @@ static void run_test(enum vm_guest_mode mode, bool use_uffd,
|
||||||
int vcpu_id;
|
int vcpu_id;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
vm = create_vm(mode, vcpus, vcpu_memory_bytes);
|
vm = create_vm(mode, vcpus, guest_percpu_mem_size);
|
||||||
|
|
||||||
perf_test_args.wr_fract = 1;
|
perf_test_args.wr_fract = 1;
|
||||||
|
|
||||||
|
@ -276,7 +273,7 @@ static void run_test(enum vm_guest_mode mode, bool use_uffd,
|
||||||
vcpu_threads = malloc(vcpus * sizeof(*vcpu_threads));
|
vcpu_threads = malloc(vcpus * sizeof(*vcpu_threads));
|
||||||
TEST_ASSERT(vcpu_threads, "Memory allocation failed");
|
TEST_ASSERT(vcpu_threads, "Memory allocation failed");
|
||||||
|
|
||||||
add_vcpus(vm, vcpus, vcpu_memory_bytes);
|
add_vcpus(vm, vcpus, guest_percpu_mem_size);
|
||||||
|
|
||||||
if (use_uffd) {
|
if (use_uffd) {
|
||||||
uffd_handler_threads =
|
uffd_handler_threads =
|
||||||
|
@ -293,9 +290,9 @@ static void run_test(enum vm_guest_mode mode, bool use_uffd,
|
||||||
vm_paddr_t vcpu_gpa;
|
vm_paddr_t vcpu_gpa;
|
||||||
void *vcpu_hva;
|
void *vcpu_hva;
|
||||||
|
|
||||||
vcpu_gpa = guest_test_phys_mem + (vcpu_id * vcpu_memory_bytes);
|
vcpu_gpa = guest_test_phys_mem + (vcpu_id * guest_percpu_mem_size);
|
||||||
PER_VCPU_DEBUG("Added VCPU %d with test mem gpa [%lx, %lx)\n",
|
PER_VCPU_DEBUG("Added VCPU %d with test mem gpa [%lx, %lx)\n",
|
||||||
vcpu_id, vcpu_gpa, vcpu_gpa + vcpu_memory_bytes);
|
vcpu_id, vcpu_gpa, vcpu_gpa + guest_percpu_mem_size);
|
||||||
|
|
||||||
/* Cache the HVA pointer of the region */
|
/* Cache the HVA pointer of the region */
|
||||||
vcpu_hva = addr_gpa2hva(vm, vcpu_gpa);
|
vcpu_hva = addr_gpa2hva(vm, vcpu_gpa);
|
||||||
|
@ -312,7 +309,7 @@ static void run_test(enum vm_guest_mode mode, bool use_uffd,
|
||||||
&uffd_handler_threads[vcpu_id],
|
&uffd_handler_threads[vcpu_id],
|
||||||
pipefds[vcpu_id * 2],
|
pipefds[vcpu_id * 2],
|
||||||
uffd_delay, &uffd_args[vcpu_id],
|
uffd_delay, &uffd_args[vcpu_id],
|
||||||
vcpu_hva, vcpu_memory_bytes);
|
vcpu_hva, guest_percpu_mem_size);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
exit(-r);
|
exit(-r);
|
||||||
}
|
}
|
||||||
|
@ -413,7 +410,6 @@ static void help(char *name)
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
bool mode_selected = false;
|
bool mode_selected = false;
|
||||||
uint64_t vcpu_memory_bytes = DEFAULT_GUEST_TEST_MEM_SIZE;
|
|
||||||
int vcpus = 1;
|
int vcpus = 1;
|
||||||
unsigned int mode;
|
unsigned int mode;
|
||||||
int opt, i;
|
int opt, i;
|
||||||
|
@ -463,7 +459,7 @@ int main(int argc, char *argv[])
|
||||||
"A negative UFFD delay is not supported.");
|
"A negative UFFD delay is not supported.");
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
vcpu_memory_bytes = parse_size(optarg);
|
guest_percpu_mem_size = parse_size(optarg);
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
vcpus = atoi(optarg);
|
vcpus = atoi(optarg);
|
||||||
|
@ -486,7 +482,7 @@ int main(int argc, char *argv[])
|
||||||
TEST_ASSERT(guest_modes[i].supported,
|
TEST_ASSERT(guest_modes[i].supported,
|
||||||
"Guest mode ID %d (%s) not supported.",
|
"Guest mode ID %d (%s) not supported.",
|
||||||
i, vm_guest_mode_string(i));
|
i, vm_guest_mode_string(i));
|
||||||
run_test(i, use_uffd, uffd_delay, vcpus, vcpu_memory_bytes);
|
run_test(i, use_uffd, uffd_delay, vcpus);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
/* Default guest test virtual memory offset */
|
/* Default guest test virtual memory offset */
|
||||||
#define DEFAULT_GUEST_TEST_MEM 0xc0000000
|
#define DEFAULT_GUEST_TEST_MEM 0xc0000000
|
||||||
|
|
||||||
|
#define DEFAULT_PER_VCPU_MEM_SIZE (1 << 30) /* 1G */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Guest physical memory offset of the testing memory slot.
|
* Guest physical memory offset of the testing memory slot.
|
||||||
* This will be set to the topmost valid physical address minus
|
* This will be set to the topmost valid physical address minus
|
||||||
|
@ -33,6 +35,7 @@ static uint64_t guest_test_phys_mem;
|
||||||
* Must not conflict with identity mapped test code.
|
* Must not conflict with identity mapped test code.
|
||||||
*/
|
*/
|
||||||
static uint64_t guest_test_virt_mem = DEFAULT_GUEST_TEST_MEM;
|
static uint64_t guest_test_virt_mem = DEFAULT_GUEST_TEST_MEM;
|
||||||
|
static uint64_t guest_percpu_mem_size = DEFAULT_PER_VCPU_MEM_SIZE;
|
||||||
|
|
||||||
struct vcpu_args {
|
struct vcpu_args {
|
||||||
uint64_t gva;
|
uint64_t gva;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче