Il 20/08/2014 20:32, Eric Blake ha scritto: > On 08/20/2014 08:57 AM, Markus Armbruster wrote: >> Paolo Bonzini <pbonz...@redhat.com> writes: >> >>> Il 20/08/2014 13:36, Michael S. Tsirkin ha scritto: >>>> >>>> For pci bridges, unless you set bus_name, bus name will >>>> match device itself. See this code: >>>> >>>> * If we don't specify the name, the bus will be addressed as >>>> * <id>.0, where id is the device id. >>>> * Since PCI Bridge devices have a single bus each, we don't need >>>> * the index: >>>> * let users address the bus using the device name. >>>> */ >>>> if (!br->bus_name && dev->qdev.id && *dev->qdev.id) { >>>> br->bus_name = dev->qdev.id; >>>> } >>> >>> Is libvirt using this rule? If not, I'd rather slash it since the >>> <id>.0 name is shared with all other buses and not PCI-bridge-specific. >> >> br->bus_name is null unless pci_bridge_map_irq() set it. Only caller >> for ioh3420 is ioh3420_init(), and that's dead code. Therefore, >> br->bus_name is null here. >> >> Libvirt always sets a device ID. Slashing this this special case would >> change the bus name from ID.0 to just ID. That'll break libvirt, as far >> as I can tell from its source. > > Libvirt has had to deal with shenanigans like this before: > > http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/qemu/qemu_capabilities.c;h=b758b5a0d4;hb=HEAD#l1982
While I applaud your attempts, I still maintain that it is pointless to support anything but a very recent QEMU (let's say 2.0+ right now) for non-x86 architecture. I think that for q35 we should still be able to do modifications (and perhaps should not even be providing backwards-compatible machine types), but pci bridges affect piix4 too. Paolo