aboutsummaryrefslogtreecommitdiff
path: root/sys/arm64
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2025-01-09 14:49:34 +0000
committerMark Johnston <markj@FreeBSD.org>2025-01-09 14:49:34 +0000
commit4a46ece6c6a90f18effbfae7ddef79b41ef43eec (patch)
tree5fb60286cd0c2027e1e7cd247d1cfd7c7260cde2 /sys/arm64
parent7c94d515db900401a339cd26861856c8fefb3086 (diff)
Diffstat (limited to 'sys/arm64')
-rw-r--r--sys/arm64/vmm/vmm.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/arm64/vmm/vmm.c b/sys/arm64/vmm/vmm.c
index 808df5e599ac..77c565e37264 100644
--- a/sys/arm64/vmm/vmm.c
+++ b/sys/arm64/vmm/vmm.c
@@ -361,21 +361,26 @@ vmm_handler(module_t mod, int what, void *arg)
switch (what) {
case MOD_LOAD:
- /* TODO: if (vmm_is_hw_supported()) { */
error = vmmdev_init();
if (error != 0)
break;
error = vmm_init();
if (error == 0)
vmm_initialized = true;
+ else
+ (void)vmmdev_cleanup();
break;
case MOD_UNLOAD:
- /* TODO: if (vmm_is_hw_supported()) { */
error = vmmdev_cleanup();
if (error == 0 && vmm_initialized) {
error = vmmops_modcleanup();
- if (error)
+ if (error) {
+ /*
+ * Something bad happened - prevent new
+ * VMs from being created
+ */
vmm_initialized = false;
+ }
}
break;
default: