@@ -50,11 +50,12 @@ static void sev_ioctl(int vm_fd, int cmd_id, void *data)
static struct kvm_vm *sev_vm_create(bool es)
{
struct kvm_vm *vm;
+ struct kvm_sev_init init = { 0 };
struct kvm_sev_launch_start start = { 0 };
int i;
- vm = vm_create_barebones();
- sev_ioctl(vm->fd, es ? KVM_SEV_ES_INIT : KVM_SEV_INIT, NULL);
+ vm = vm_create_barebones_type(es ? KVM_X86_SEV_ES_VM : KVM_X86_SEV_VM);
+ sev_ioctl(vm->fd, KVM_SEV_INIT2, &init);
for (i = 0; i < NR_MIGRATE_TEST_VCPUS; ++i)
__vm_vcpu_add(vm, i);
if (es)
@@ -65,12 +66,12 @@ static struct kvm_vm *sev_vm_create(bool es)
return vm;
}
-static struct kvm_vm *aux_vm_create(bool with_vcpus)
+static struct kvm_vm *aux_vm_create(bool es, bool with_vcpus)
{
struct kvm_vm *vm;
int i;
- vm = vm_create_barebones();
+ vm = vm_create_barebones_type(es ? KVM_X86_SEV_ES_VM : KVM_X86_SEV_VM);
if (!with_vcpus)
return vm;
@@ -102,7 +103,7 @@ static void test_sev_migrate_from(bool es)
src_vm = sev_vm_create(es);
for (i = 0; i < NR_MIGRATE_TEST_VMS; ++i)
- dst_vms[i] = aux_vm_create(true);
+ dst_vms[i] = aux_vm_create(es, true);
/* Initial migration from the src to the first dst. */
sev_migrate_from(dst_vms[0], src_vm);
@@ -164,16 +165,17 @@ static void test_sev_migrate_locking(void)
static void test_sev_migrate_parameters(void)
{
- struct kvm_vm *sev_vm, *sev_es_vm, *vm_no_vcpu, *vm_no_sev,
+ struct kvm_vm *sev_vm, *sev_es_vm, *vm_no_vcpu,
*sev_es_vm_no_vmsa;
int ret;
vm_no_vcpu = vm_create_barebones();
- vm_no_sev = aux_vm_create(true);
- ret = __sev_migrate_from(vm_no_vcpu, vm_no_sev);
+ sev_vm = aux_vm_create(false, true);
+ ret = __sev_migrate_from(vm_no_vcpu, sev_vm);
TEST_ASSERT(ret == -1 && errno == EINVAL,
"Migrations require SEV enabled. ret %d, errno: %d\n", ret,
errno);
+ kvm_vm_free(sev_vm);
if (!have_sev_es)
goto out;
@@ -213,7 +215,6 @@ static void test_sev_migrate_parameters(void)
kvm_vm_free(sev_es_vm_no_vmsa);
out:
kvm_vm_free(vm_no_vcpu);
- kvm_vm_free(vm_no_sev);
}
static int __sev_mirror_create(struct kvm_vm *dst, struct kvm_vm *src)
@@ -272,7 +273,7 @@ static void test_sev_mirror(bool es)
int i;
src_vm = sev_vm_create(es);
- dst_vm = aux_vm_create(false);
+ dst_vm = aux_vm_create(es, false);
sev_mirror_create(dst_vm, src_vm);
@@ -295,8 +296,8 @@ static void test_sev_mirror_parameters(void)
int ret;
sev_vm = sev_vm_create(/* es= */ false);
- vm_with_vcpu = aux_vm_create(true);
- vm_no_vcpu = aux_vm_create(false);
+ vm_with_vcpu = aux_vm_create(false, true);
+ vm_no_vcpu = aux_vm_create(false, false);
ret = __sev_mirror_create(sev_vm, sev_vm);
TEST_ASSERT(
@@ -345,13 +346,13 @@ static void test_sev_move_copy(void)
*dst_mirror_vm, *dst2_mirror_vm, *dst3_mirror_vm;
sev_vm = sev_vm_create(/* es= */ false);
- dst_vm = aux_vm_create(true);
- dst2_vm = aux_vm_create(true);
- dst3_vm = aux_vm_create(true);
- mirror_vm = aux_vm_create(false);
- dst_mirror_vm = aux_vm_create(false);
- dst2_mirror_vm = aux_vm_create(false);
- dst3_mirror_vm = aux_vm_create(false);
+ dst_vm = aux_vm_create(false, true);
+ dst2_vm = aux_vm_create(false, true);
+ dst3_vm = aux_vm_create(false, true);
+ mirror_vm = aux_vm_create(false, false);
+ dst_mirror_vm = aux_vm_create(false, false);
+ dst2_mirror_vm = aux_vm_create(false, false);
+ dst3_mirror_vm = aux_vm_create(false, false);
sev_mirror_create(mirror_vm, sev_vm);
@@ -378,9 +379,9 @@ static void test_sev_move_copy(void)
* destruction is done safely.
*/
sev_vm = sev_vm_create(/* es= */ false);
- dst_vm = aux_vm_create(true);
- mirror_vm = aux_vm_create(false);
- dst_mirror_vm = aux_vm_create(false);
+ dst_vm = aux_vm_create(false, true);
+ mirror_vm = aux_vm_create(false, false);
+ dst_mirror_vm = aux_vm_create(false, false);
sev_mirror_create(mirror_vm, sev_vm);