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

Alex Williamson
2010-06-14T19:57:05Z

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??
ide-drive: unit
I2C: address

virtio-serial doesn't seem to make a DeviceState per port, so I think it
can be skipped. I'm sure I'm still missing some...

That gives me the list below (printed from qdev_init()):

/i440FX-pcihost
/i440FX-pcihost/pci.0/i440FX.00.0
/i440FX-pcihost/pci.0/PIIX3.01.0
/i440FX-pcihost/pci.0/cirrus-vga.02.0
/i440FX-pcihost/pci.0/PIIX3.01.0/isa.0/mc146818rtc
/i440FX-pcihost/pci.0/PIIX3.01.0/isa.0/isa-serial.0x3f8
/i440FX-pcihost/pci.0/PIIX3.01.0/isa.0/isa-serial.0x2f8
/i440FX-pcihost/pci.0/PIIX3.01.0/isa.0/isa-parallel.0x378
/i440FX-pcihost/pci.0/PIIX3.01.0/isa.0/i8042
/i440FX-pcihost/pci.0/PIIX3.01.0/isa.0/isa-fdc
/i440FX-pcihost/pci.0/i82551.03.0
/i440FX-pcihost/pci.0/virtio-net-pci.04.0
/i440FX-pcihost/pci.0/e1000.05.0
/i440FX-pcihost/pci.0/rtl8139.06.0
/i440FX-pcihost/pci.0/pcnet.07.0
/i440FX-pcihost/pci.0/piix3-ide.01.1
/i440FX-pcihost/pci.0/piix3-ide.01.1/ide.0/ide-drive.0
/i440FX-pcihost/pci.0/piix3-ide.01.1/ide.0/ide-drive.1
/i440FX-pcihost/pci.0/piix3-ide.01.1/ide.1/ide-drive.0
/i440FX-pcihost/pci.0/PIIX4_PM.01.3
/i440FX-pcihost/pci.0/PIIX4_PM.01.3/i2c/smbus-eeprom.80
/i440FX-pcihost/pci.0/PIIX4_PM.01.3/i2c/smbus-eeprom.81
/i440FX-pcihost/pci.0/PIIX4_PM.01.3/i2c/smbus-eeprom.82
/i440FX-pcihost/pci.0/PIIX4_PM.01.3/i2c/smbus-eeprom.83
/i440FX-pcihost/pci.0/PIIX4_PM.01.3/i2c/smbus-eeprom.84
/i440FX-pcihost/pci.0/PIIX4_PM.01.3/i2c/smbus-eeprom.85
/i440FX-pcihost/pci.0/PIIX4_PM.01.3/i2c/smbus-eeprom.86
/i440FX-pcihost/pci.0/PIIX4_PM.01.3/i2c/smbus-eeprom.87
/i440FX-pcihost/pci.0/lsi53c895a.08.0/scsi.0/scsi-disk.0
/i440FX-pcihost/pci.0/lsi53c895a.08.0/scsi.0/scsi-disk.3
/i440FX-pcihost/pci.0/lsi53c895a.08.0
/i440FX-pcihost/pci.0/virtio-serial-pci.09.0
/i440FX-pcihost/pci.0/virtio-serial-pci.0a.0
/i440FX-pcihost/pci.0/virtio-blk-pci.0b.0