From 31de0fab9392db04f9b8b25f90846d73367fdd97 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Fri, 12 Aug 2016 17:10:40 +0200 Subject: [PATCH] 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. --- src/qemu/qemu_domain.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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++; -- 2.39.5