aboutsummaryrefslogtreecommitdiff
path: root/kvm-all.c
diff options
context:
space:
mode:
Diffstat (limited to 'kvm-all.c')
-rw-r--r--kvm-all.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/kvm-all.c b/kvm-all.c
index 69ca46b..8615bf6 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -283,6 +283,21 @@ int kvm_init(int smp_cpus)
goto err;
}
+ /* There was a nasty bug in < kvm-80 that prevents memory slots from being
+ * destroyed properly. Since we rely on this capability, refuse to work
+ * with any kernel without this capability. */
+ ret = kvm_ioctl(s, KVM_CHECK_EXTENSION,
+ KVM_CAP_DESTROY_MEMORY_REGION_WORKS);
+ if (ret <= 0) {
+ if (ret == 0)
+ ret = -EINVAL;
+
+ fprintf(stderr,
+ "KVM kernel module broken (DESTROY_MEMORY_REGION)\n"
+ "Please upgrade to at least kvm-81.\n");
+ goto err;
+ }
+
ret = kvm_arch_init(s, smp_cpus);
if (ret < 0)
goto err;