On Fri, Apr 29, 2016 at 01:09:26PM -0400, Cole Robinson wrote: > On 04/29/2016 10:01 AM, Shivaprasad G Bhat wrote: > > The default USB controller is not sent to destination as the older versions > > of libvirt(0.9.4 or earlier as I see in commit log of 409b5f54) didn't > > support them. For some archs where the support started much later can > > safely send the USB controllers without this worry. So, send the controller > > to destination for all archs except x86. Moreover this is not very > > applicable > > to x86 as the USB controller has model ich9_ehci1 on q35 and for pc-i440fx, > > there cant be any slots before USB as it is fixed on slot 1. > > > > The patch fixes a bug that, if the USB controller happens to occupy > > a slot after disks/interfaces and one of them is hot-unplugged, then > > the default USB controller added on destination takes the smallest slot > > number and that would lead to savestate mismatch and migration > > failure. Seen and verified on PPC64. > > > > Signed-off-by: Shivaprasad G Bhat <sb...@linux.vnet.ibm.com> > > --- > > src/qemu/qemu_domain.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c > > index 6262bfe..963ff35 100644 > > --- a/src/qemu/qemu_domain.c > > +++ b/src/qemu/qemu_domain.c > > @@ -2599,7 +2599,11 @@ qemuDomainDefFormatBuf(virQEMUDriverPtr driver, > > usb = def->controllers[i]; > > } > > } > > - if (usb && usb->idx == 0 && usb->model == -1) { > > + /* 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. > > + * > > + if (ARCH_IS_X86(def->os.arch) && usb && usb->idx == 0 && > > usb->model == -1) {
As of commit fcbfd50: qemu: only check for PIIX3-specific device addrs on pc-* machinetypes we only check that the controller is on slot 1 for PIIX3 machines, so qemuDomainMachineIsI440FX(def) should also be one of the conditions. It is possible to specify a usb controller with model='-1' on q35 too, but I do not know if anyone actually uses it in the wild. Jan > > VIR_DEBUG("Removing default USB controller from domain '%s'" > > " for migration compatibility", def->name); > > toremove++; > > > > ACK, but I'll push next week after the release is out. > > Thanks, > Cole > > -- > libvir-list mailing list > libvir-list@redhat.com > https://www.redhat.com/mailman/listinfo/libvir-list -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list