
On Wed, 2016-07-20 at 16:09 +0200, Andrea Bolognani wrote:
It seems that we could solve this by just changing the logic in qemuDomainAssignDevicePCISlots() so that when it is auto-assigning addresses, it always uses 00:00.0 for the USB controller when guest arch is ppc64. Existing guests deployed from a libvirt version using -device won't be affected, because we'll have recorded a PCI address for that in the XML and continue to use that. ie the auto-allocation logic won't run for them. Existing guests deployed from a libvirt version using -usb should then get the fixed PCI address of 00:00.0 when they upgrade to the fix libvirt (assuming they didn't get run with a broken libvirt in between). Mh, that could actually work! Thanks :) I'll try to cook up a patch tomorrow.
Unfortunately Martin pointed out a problem with this plan: even though they're not actually using it, old guests have been assigned a PCI address for the USB controller. Which means we can't tell whether <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller is an old guest that should be assigned the 00:00.0 address or a new guest that should keep using the 00:03.0 address :( -- Andrea Bolognani / Red Hat / Virtualization