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

Reply via email to