From: Guido Trotter <[email protected]> -enable-kvm and -disable-kvm are deprecated in favor of accel=kvm passed as a machine specification. This fixes compatibility with newer qemu versions.
Signed-off-by: Guido Trotter <[email protected]> --- lib/hypervisor/hv_kvm.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index cffdb62..b5439a7 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -549,6 +549,7 @@ class KVMHypervisor(hv_base.BaseHypervisor): _DISABLE_KVM_RE = re.compile(r"^-disable-kvm\s", re.M) _NETDEV_RE = re.compile(r"^-netdev\s", re.M) _DISPLAY_RE = re.compile(r"^-display\s", re.M) + _MACHINE_RE = re.compile(r"^-machine\s", re.M) _NEW_VIRTIO_RE = re.compile(r"^name \"%s\"" % _VIRTIO_NET_PCI, re.M) # match -drive.*boot=on|off on different lines, but in between accept only # dashes not preceeded by a new line (which would mean another option @@ -1050,7 +1051,22 @@ class KVMHypervisor(hv_base.BaseHypervisor): mversion = hvp[constants.HV_KVM_MACHINE_VERSION] if not mversion: mversion = self._GetDefaultMachineVersion(kvm) - kvm_cmd.extend(["-M", mversion]) + if self._MACHINE_RE.search(kvmhelp): + # TODO (2.8): kernel_irqchip and kvm_shadow_mem properties + if (hvp[constants.HV_KVM_FLAG] == constants.HT_KVM_ENABLED): + specprop = ",accel=kvm" + else: + specprop = "" + machinespec = "%s%s" % (mversion, specprop) + kvm_cmd.extend(["-machine", machinespec]) + else: + kvm_cmd.extend(["-M", mversion]) + if (hvp[constants.HV_KVM_FLAG] == constants.HT_KVM_ENABLED and + self._ENABLE_KVM_RE.search(kvmhelp)): + kvm_cmd.extend(["-enable-kvm"]) + elif (hvp[constants.HV_KVM_FLAG] == constants.HT_KVM_DISABLED and + self._DISABLE_KVM_RE.search(kvmhelp)): + kvm_cmd.extend(["-disable-kvm"]) kernel_path = hvp[constants.HV_KERNEL_PATH] if kernel_path: @@ -1064,13 +1080,6 @@ class KVMHypervisor(hv_base.BaseHypervisor): if startup_paused: kvm_cmd.extend([_KVM_START_PAUSED_FLAG]) - if (hvp[constants.HV_KVM_FLAG] == constants.HT_KVM_ENABLED and - self._ENABLE_KVM_RE.search(kvmhelp)): - kvm_cmd.extend(["-enable-kvm"]) - elif (hvp[constants.HV_KVM_FLAG] == constants.HT_KVM_DISABLED and - self._DISABLE_KVM_RE.search(kvmhelp)): - kvm_cmd.extend(["-disable-kvm"]) - if boot_network: kvm_cmd.extend(["-boot", "n"]) -- 1.7.10.4
