提交 d85dc283 编写于 作者: A aliguori

Disable KVM support if the kernel modules have broken memory slot handling

Prior to kvm-80, memory slot deletion was broken in the KVM kernel 
modules.  In kvm-81, a new capability is introduced to signify that this
problem has been fixed.

Since we rely on being able to delete memory slots, refuse to work with 
any kernel module that does not have this capability present.
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5960 c046a42c-6fe2-441c-8c8c-71466251a162
上级 f19412a2
......@@ -933,7 +933,8 @@ if test "$kvm" = "yes" ; then
KVM_API_VERSION < 12 || \
KVM_API_VERSION > 12 || \
!defined(KVM_CAP_USER_MEMORY) || \
!defined(KVM_CAP_SET_TSS_ADDR)
!defined(KVM_CAP_SET_TSS_ADDR) || \
!defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
#error Invalid KVM version
#endif
int main(void) { return 0; }
......
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册