Commit f49b8138 authored by David Dunn's avatar David Dunn Committed by Paolo Bonzini
Browse files

KVM: selftests: Carve out helper to create "default" VM without vCPUs



Carve out portion of vm_create_default so that selftests can modify
a "default" VM prior to creating vcpus.

Signed-off-by: default avatarDavid Dunn <daviddunn@google.com>
Message-Id: <20220223225743.2703915-3-daviddunn@google.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent ba7bb663
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -336,6 +336,9 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr_vcpus,
				    uint32_t num_percpu_pages, void *guest_code,
				    uint32_t vcpuids[]);

/* Create a default VM without any vcpus. */
struct kvm_vm *vm_create_without_vcpus(enum vm_guest_mode mode, uint64_t pages);

/*
 * Adds a vCPU with reasonable defaults (e.g. a stack)
 *
+15 −6
Original line number Diff line number Diff line
@@ -362,6 +362,20 @@ struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages, int perm)
	return vm;
}

struct kvm_vm *vm_create_without_vcpus(enum vm_guest_mode mode, uint64_t pages)
{
	struct kvm_vm *vm;

	vm = vm_create(mode, pages, O_RDWR);

	kvm_vm_elf_load(vm, program_invocation_name);

#ifdef __x86_64__
	vm_create_irqchip(vm);
#endif
	return vm;
}

/*
 * VM Create with customized parameters
 *
@@ -412,13 +426,8 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr_vcpus,
		    nr_vcpus, kvm_check_cap(KVM_CAP_MAX_VCPUS));

	pages = vm_adjust_num_guest_pages(mode, pages);
	vm = vm_create(mode, pages, O_RDWR);

	kvm_vm_elf_load(vm, program_invocation_name);

#ifdef __x86_64__
	vm_create_irqchip(vm);
#endif
	vm = vm_create_without_vcpus(mode, pages);

	for (i = 0; i < nr_vcpus; ++i) {
		uint32_t vcpuid = vcpuids ? vcpuids[i] : i;