
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