From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=46678 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OIOIz-0002BB-Di for qemu-devel@nongnu.org; Sat, 29 May 2010 11:50:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OIGoF-0000nS-Pv for qemu-devel@nongnu.org; Sat, 29 May 2010 03:50:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56098) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OIGoF-0000nO-Ja for qemu-devel@nongnu.org; Sat, 29 May 2010 03:50:19 -0400 From: Markus Armbruster Subject: Re: [Qemu-devel] [PATCH v2 03/15] qdev: Allow device addressing via 'driver.instance' References: Date: Sat, 29 May 2010 09:50:10 +0200 In-Reply-To: (Jan Kiszka's message of "Sat, 22 May 2010 10:18:00 +0200") Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Anthony Liguori , Juan Quintela , Jan Kiszka , qemu-devel@nongnu.org, Luiz Capitulino , Avi Kivity Jan Kiszka writes: > From: Jan Kiszka > > Extend qbus_find_dev to allow addressing of devices without an unique id > via an optional per-bus instance number. The new formats are > 'driver.instance' and 'alias.instance'. > > Signed-off-by: Jan Kiszka > --- > docs/qdev-device-use.txt | 12 +++++++++++- > hw/qdev.c | 23 ++++++++++++++++++----- > 2 files changed, 29 insertions(+), 6 deletions(-) > > diff --git a/docs/qdev-device-use.txt b/docs/qdev-device-use.txt > index 9ac1fa1..5939481 100644 > --- a/docs/qdev-device-use.txt > +++ b/docs/qdev-device-use.txt > @@ -1,6 +1,6 @@ > = How to convert to -device & friends = > > -=== Specifying Bus and Address on Bus === > +=== Specifying Bus, Address on Bus, and Devices === > > In qdev, each device has a parent bus. Some devices provide one or > more buses for children. You can specify a device's parent bus with > @@ -24,6 +24,16 @@ Furthermore, if a device only hosts a single bus, the bus name can be > omitted in the path. Example: /i440FX-pcihost/PIIX3 abbreviates > /i440FX-pcihost/pci.0/PIIX3/isa.0 as none of the buses has siblings. > > +Existing devices can be addressed either via a unique ID if it was > +assigned during creation or via the device tree path: > + > +/full_bus_address/driver_name[.instance_number] > + or > +abbreviated_bus_address/driver_name[.instance_number] > + > +Example: /i440FX-pcihost/pci.0/e1000.2 addresses the second e1000 > +adapter on the bus 'pci.0'. > + > Note: the USB device address can't be controlled at this time. "instance number" isn't defined in this document. I understand the problem you're trying to solve; I've had it myself many times. But is inventing an instance number the right solution? The two e1000 devices already have a perfectly fine unique identifier on their bus: their bus address. What about recognizing bus addresses in paths? Requires a suitable restriction on device names and IDs to avoid ambiguity, say "start with letter". qdev currently doesn't abstract bus addresses, but that's fixable. [...]