On Thu, 2017-03-02 at 09:48 +0100, Pavel Hrdina wrote:
The history of USB controller for ppc64 guest is complex and goes
back to libvirt 1.3.1 where the fun started.
Prior Libvirt 1.3.1 if no model for USB controller was specified
we've simply passed "-usb" on QEMU command line.
Since Libvirt 1.3.1 there is a patch (8156493d8db) that fixes this
issue by using "-device pci-ohci,..." but it breaks migration with
older Libvirts which was agreed that's acceptable. However this
patch didn't reflect this change in the domain XML and the model
was still missing.
Unfortunately, migrating a guest with
<controller type='usb' index='0'>
<address type='pci' .../>
</controller>
from libvirt 2.1.0 (which still allows not specifying the
controller model) to a build of libvirt including this patch
doesn't work as expected.
On the source host, I run
# virsh migrate \
mig-usb \
qemu+ssh://root@destination/system \
--live --persistent --copy-storage-all --compressed
While migration is still running, I can check on the
destination host and verify that:
* the <controller> element has model='pci-ohci';
* the QEMU command line contains -device pci-ohci.
However, after migration is complete, the <controller>
element has model='nec-xhci' instead of model='pci-ohci',
which means that power cycling the guest results in
breaking the guest ABI.
--
Andrea Bolognani / Red Hat / Virtualization