Dear list,
my USB address assignment code (released in 2.1.0) incorrectly assumed
that older libvirt allows specifying USB addresses for all usb devices:
https://bugzilla.redhat.com/show_bug.cgi?id=1360963
For usb-ccid devices, this is only possible since commit 2dabe2e0
(Released in libvirt 1.3.3 this April). Before that, we required either
a PCI address or no address for all controllers, a USB address will
be rejected by the XML parser.
The only reliable way to fix this that I could think of is: not to
assign addresses to domains which might need to be migrated backwards.
This is doable downstream where we can make assumptions on the version
of libvirt based on the machine type, but that won't work upstream.
I have considered dropping just the USB address of the CCID controller from
the XML if we do not know that we are migrating to a new enough libvirt
(that would be 2.2.0 since it would need a new driver flag and migration
flag), but that would only fix it for cases where the address generated
by libvirt matches the one that QEMU will give it. But if it does not,
migration to libvirt 1.3.3 to 2.1.0 will be broken.
Do you have any ideas how this might be fixed (other than reverting the
assignment), or is this something that downstreams have to deal with?
Jan