From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [RFC PATCH 0/5] Introduce canonical device hierarchy string Date: Mon, 14 Jun 2010 13:56:29 -0600 Message-ID: <1276545389.12015.499.camel@x201> References: <20100614054923.879.33717.stgit@localhost.localdomain> <4C15D413.6020803@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, avi@redhat.com, anthony@codemonkey.ws, paul@codesourcery.com, chrisw@redhat.com To: Gerd Hoffmann Return-path: Received: from mx1.redhat.com ([209.132.183.28]:42786 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751100Ab0FNT5F (ORCPT ); Mon, 14 Jun 2010 15:57:05 -0400 In-Reply-To: <4C15D413.6020803@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: 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