Re: [Qemu-devel] Re: [RFC PATCH 0/5] Introduce canonical device hierarchy string

Markus Armbruster
2010-06-16T08:34:41Z

Alex Williamson <alex.williamson@redhat.com> writes:

> On Tue, 2010-06-15 at 10:53 +0200, Markus Armbruster wrote:
>> Alex Williamson <alex.williamson@redhat.com> writes:
>>
>> > On Mon, 2010-06-14 at 09:02 +0200, Gerd Hoffmann wrote:
>> >> Hi,
>> >>
>> >> > My premise with this attempt is that we walk the hierarchy and use the
>> >> > names to create the base of the path. As we get to the device,
>> >> > particularly to the parent bus of the device, we need to start looking at
>> >> > properties to ensure uniqueness.
>> >>
>> >> You'll need that for every bus along the way down to the device. Create
>> >> a virtual machine with two lsi scsi host adapters, then attach a disk
>> >> with scsi id 0 to each. Just the scsi id isn't good enougth to identify
>> >> the device. You'll need the lsi pci address too.
>> >
>> > Yep, see below.
>> >
>> >> > For now, the only properties I've tagged as path
>> >> > properties are PCI bus addresses and MAC addresses.
>> >>
>> >> mac address isn't needed here. You need the property which specifies
>> >> the bus address. For PCI this obviously is the PCI address. For scsi
>> >> the scsi id. For ISA you can use the I/O port base. virtio-serial the
>> >> port number, ...
>> >
>> > PCI: addr
>> > SCSI: scsi-id
>> > ISA: serial/parallel = iobase, others??
>>
>> If there's no iobase (pathological case), require ID.
>>
>> > ide-drive: unit
>>
>> Bus name is IDE, but it's clear enough what you mean :)
>
> I put ide-drive here because the unit is a property of the device, not
> the bus.

I consider that a (very minor) bug.

>> > I2C: address
>> >
>> > virtio-serial doesn't seem to make a DeviceState per port, so I think it
>> > can be skipped.
>>
>> Really?
>>
>> Anyway, its port number should do as bus address.
>
> Maybe I'm not specifying it correctly. I see a max_nr_ports property,
> but I don't see that each port is a separate qdev.

I see property "nr" in virtconsole_info and virtserialport_info. I
can't see any other virtio-serial devices.

>> > I'm sure I'm still missing some...
>>
>> s390-virtio
>> SSI
>> System
>
> I'll need some help coming up with useful properties to key on for
> these. I had hoped there's only one System bus.
>
>> USB
>
> usb-storage seems to have a useful drive property that lets me
> distinguish these devices:
>
> /i440FX-pcihost/pci.0/piix3-usb-uhci.01.2/usb.0/usb-storage.usb0/scsi.0/scsi-disk.0
> /i440FX-pcihost/pci.0/piix3-usb-uhci.01.2/usb.0/usb-storage.usb1/scsi.0/scsi-disk.0
> ^^^^ drive
>
> But otherwise USB is disappointingly devoid of useful properties at the
> bus level.

Paul suggested physical ports. Doesn't look like we have them, but that
should be fixable.