From: Andrea Bolognani Date: Fri, 12 Aug 2016 15:10:40 +0000 (+0200) Subject: qemu: domain: Drop piix3-ohci controller for migration X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=31de0fab9392db04f9b8b25f90846d73367fdd97;p=libvirt.git qemu: domain: Drop piix3-ohci controller for migration Now that the default USB controller model is explicit rather than implicit for i440fx machines, we have to tweak the conditions for dropping it in order to keep migration towards libvirt <= 0.9.4 working. --- diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index ec64ae01c7..6c0f261bf0 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3315,12 +3315,20 @@ qemuDomainDefFormatBuf(virQEMUDriverPtr driver, usb = def->controllers[i]; } } - /* The original purpose of the check was the migration compatibility - * with libvirt <= 0.9.4. Limitation doesn't apply to other archs - * and can cause problems on PPC64. + + /* In order to maintain compatibility with version of libvirt that + * didn't support (<= 0.9.4), we need to + * drop the default USB controller, ie. a USB controller at index + * zero with no model or with the default piix3-ohci model. + * + * However, we only need to do so for x86 i440fx machine types, + * because other architectures and machine types were introduced + * when libvirt already supported . */ if (ARCH_IS_X86(def->os.arch) && qemuDomainMachineIsI440FX(def) && - usb && usb->idx == 0 && usb->model == -1) { + usb && usb->idx == 0 && + (usb->model == -1 || + usb->model == VIR_DOMAIN_CONTROLLER_MODEL_USB_PIIX3_UHCI)) { VIR_DEBUG("Removing default USB controller from domain '%s'" " for migration compatibility", def->name); toremove++;