From c29eafc890a1c177ccace3b6253011bdbf17356e Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 25 Jan 2013 10:46:49 +0000 Subject: [PATCH] Fix bogus reporting of KVM support for non-native emulators A logic bug meant we reported KVM was possible for every architecture, merely based on whether the query-kvm command exists. We should instead have been doing it based on whether the query-kvm command returns 'present: 1' Signed-off-by: Daniel P. Berrange --- src/qemu/qemu_capabilities.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f86c28f2a2..29693c339c 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -2117,11 +2117,16 @@ qemuCapsProbeQMPKVMState(qemuCapsPtr caps, return -1; /* The QEMU_CAPS_KVM flag was initially set according to the QEMU - * reporting the recognition of 'query-kvm' QMP command, but the - * flag means whether the KVM is enabled by default and should be - * disabled in case we want SW emulated machine, so let's fix that - * if it's true. */ - if (!enabled) { + * reporting the recognition of 'query-kvm' QMP command. That merely + * indicates existance of the command though, not whether KVM support + * is actually available, nor whether it is enabled by default. + * + * If it is not present we need to clear the flag, and if it is + * not enabled by default we need to change the flag. + */ + if (!present) { + qemuCapsClear(caps, QEMU_CAPS_KVM); + } else if (!enabled) { qemuCapsClear(caps, QEMU_CAPS_KVM); qemuCapsSet(caps, QEMU_CAPS_ENABLE_KVM); }