summaryrefslogtreecommitdiffstats
path: root/test/kvm-targetstep.c
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2023-02-07 07:58:27 -0600
committerLouis Burda <quent.burda@gmail.com>2023-02-07 07:58:27 -0600
commit32331c7f421411bccb87ea818a2a0198b8cf88aa (patch)
treec1168e406640acf1a6dbca60dfb046bedaaab533 /test/kvm-targetstep.c
parenta2cdd64c6f915d969dfa21e23049ff4b3836b13d (diff)
downloadcachepc-32331c7f421411bccb87ea818a2a0198b8cf88aa.tar.gz
cachepc-32331c7f421411bccb87ea818a2a0198b8cf88aa.zip
Add syscall to deinit events to prevent blocking on send
Diffstat (limited to 'test/kvm-targetstep.c')
-rw-r--r--test/kvm-targetstep.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/test/kvm-targetstep.c b/test/kvm-targetstep.c
index f30563c..d7bb81c 100644
--- a/test/kvm-targetstep.c
+++ b/test/kvm-targetstep.c
@@ -53,10 +53,13 @@ monitor(struct kvm *kvm, bool baseline)
}
void
-kill_child(void)
+deinit(void)
{
- printf("Killing vm..\n");
+ ioctl(kvm_dev, KVM_CPC_DEINIT);
+
kill(child, SIGKILL);
+
+ kvm_setup_deinit();
}
int
@@ -73,15 +76,10 @@ main(int argc, const char **argv)
uint32_t arg;
int ret;
- vmtype = "kvm";
- if (argc > 1) vmtype = argv[1];
- if (strcmp(vmtype, "kvm") && strcmp(vmtype, "sev")
- && strcmp(vmtype, "sev-es")
- && strcmp(vmtype, "sev-snp"))
- errx(1, "invalid vm mode: %s", vmtype);
-
setvbuf(stdout, NULL, _IONBF, 0);
+ parse_vmtype(argc, argv);
+
kvm_setup_init();
ipc = ipc_alloc();
@@ -113,10 +111,13 @@ main(int argc, const char **argv)
printf("VM exit\n");
vm_deinit(&kvm);
+
+ ipc_free(ipc);
+ kvm_setup_deinit();
} else {
pin_process(0, SECONDARY_CORE, true);
- atexit(kill_child);
+ atexit(deinit);
ipc_wait_child(ipc);
@@ -218,10 +219,8 @@ main(int argc, const char **argv)
while (monitor(&kvm, false) != 2);
printf("Monitor exit\n");
- }
-
- ipc_free(ipc);
- kvm_setup_deinit();
+ ipc_free(ipc);
+ }
}