public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>,
	Paul Brook <paul@codesourcery.com>,
	"chrisw@redhat.com" <chrisw@redhat.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"avi@redhat.com" <avi@redhat.com>,
	"kraxel@redhat.com" <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [RFC PATCH 1/5] qdev: Create qdev_get_dev_path()
Date: Fri, 18 Jun 2010 11:16:55 +0200	[thread overview]
Message-ID: <4C1B3987.7000402@siemens.com> (raw)
In-Reply-To: <1276813540.3216.52.camel@x201>

Alex Williamson wrote:
> On Wed, 2010-06-16 at 10:23 +0200, Markus Armbruster wrote:
>> Alex Williamson <alex.williamson@redhat.com> writes:
>>
>>> On Tue, 2010-06-15 at 12:28 +0100, Paul Brook wrote:
>>>>>> Alex proposed to disambiguate by adding "identified properties of the
>>>>>> immediate parent bus and device" to the path component.  For PCI, these
>>>>>> are dev.fn.  Likewise for any other bus where devices have unambigous
>>>>>> bus address.  The driver name carries no information!
>>>>> From user POV, driver names are very handly to address a device
>>>>> intuitively - except for the case you have tones of devices on the same
>>>>> bus that are handled by the same driver. For that case we need to
>>>>> augment the device name with a useful per-bus ID, derived from the bus
>>>>> address where available, otherwise based on instance numbers.
>>>> This is where I think you're missing a trick. We don't need to augment the 
>>>> name, we just need to allow the bus id to be used instead.
>>> For the case of a hot remove, I agree.  If the user specifies "pci_del
>>> pci.0/03.0", that's completely sufficient because we don't care what's
>>> in that slot, just remove it.  However, I still see some use cases for
>>> device names in the path.  Take for example:
>>>
>>> (A): /i440FX-pcihost/pci.0/e1000.05.0
>>>
>>> vs
>>>
>>> (B): /pci.0/05.0
>>>
>>> (removing both the root bridge driver name and the device driver name)
>> / is the main system bus.  System bus defines no bus address at the
>> moment.  Therefore, you have to use the driver name i440FX-pcihost.
> 
> So is the general rule "If a device's parent bus does not provide an
> address, print device name"?

What is the device name?

> 
>> /i440FX-pcihost/pci.0 is the PCI bus.  PCI bus defines a bus address:
>> dev.fn.  Therefore, you can either use the bus address @05.0, or the
>> driver name e1000.
>>
>> We have "/i440FX-pcihost/pci.0/e1000" vs. "/i440FX-pcihost/pci.0/@05.0".
> 
> I object to being able to use anything but an address under a bus that
> supports hotplug, but that aside, I think the paths for my example
> system look like below.  Note that anything behind and including the $
> is not the canonical path, that begins the free form, usage specific
> string, here filled by missing device names (open to suggestions other
> than $ here).

What about ":" instead of "$"? Visually more appealing IMO.

>  Note that were isa devices do not have a bus identifier,
> I'm using the device name,

Don't understand. Why don't they have their I/O base as prefix? This is
inconsistent, and if we consider anything behind "$" (or ":")
informative, the bus address is mandatory for any device (on a bus with
an addressing scheme).

> which I think follows the same rule as
> i440FX-pcihost.  Can we agree this is the goal?  Thanks,

It looks almost acceptable from my POV. We just need to define how to
get hold of devices on buses without an addressing scheme (e.g. the
system bus). Using the driver name is insufficient once you have > 1
devices of the same type. Introducing device instance numbers to those
buses would be straightforward IMO.

Once this is done, the next step should be a specification for later use
in docs/qdev-device-use.txt.

Jan

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

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux

  reply	other threads:[~2010-06-18  9:17 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-14  5:51 [RFC PATCH 0/5] Introduce canonical device hierarchy string Alex Williamson
2010-06-14  5:51 ` [RFC PATCH 1/5] qdev: Create qdev_get_dev_path() Alex Williamson
2010-06-14  6:39   ` [Qemu-devel] " Markus Armbruster
2010-06-14 12:52     ` Alex Williamson
2010-06-14 13:00       ` Jan Kiszka
2010-06-14 13:09       ` Paul Brook
2010-06-14 15:29         ` Alex Williamson
2010-06-14 15:42           ` Paul Brook
2010-06-14 16:00           ` Jan Kiszka
2010-06-14 16:38             ` Alex Williamson
2010-06-14 16:49               ` Jan Kiszka
2010-06-14 18:35                 ` Alex Williamson
2010-06-14 21:43                   ` Paul Brook
2010-06-14 22:11                     ` Alex Williamson
2010-06-14 22:46                       ` Paul Brook
2010-06-15  1:14                         ` Alex Williamson
2010-06-15 11:24                           ` Paul Brook
2010-06-15  8:47         ` Markus Armbruster
2010-06-15  9:34           ` Jan Kiszka
2010-06-15 11:28             ` Paul Brook
2010-06-15 11:45               ` Jan Kiszka
2010-06-15 12:04                 ` Paul Brook
2010-06-15 12:16                   ` Jan Kiszka
2010-06-15 12:39                     ` Paul Brook
2010-06-15 13:00                       ` Jan Kiszka
2010-06-15 13:14                         ` Paul Brook
2010-06-15 13:16                 ` Markus Armbruster
2010-06-15 13:32                   ` Jan Kiszka
2010-06-15 20:53               ` Alex Williamson
2010-06-15 21:55                 ` Paul Brook
2010-06-15 22:33                   ` Alex Williamson
2010-06-15 23:01                     ` Paul Brook
2010-06-15 23:10                       ` Alex Williamson
2010-06-16  0:25                       ` Chris Wright
2010-06-16  0:30                         ` Paul Brook
2010-06-16  0:35                           ` Chris Wright
2010-06-16  1:30                             ` Paul Brook
2010-06-16  2:55                               ` Alex Williamson
2010-06-16  8:23                 ` Markus Armbruster
2010-06-17 22:25                   ` Alex Williamson
2010-06-18  9:16                     ` Jan Kiszka [this message]
2010-06-18 15:01                       ` Alex Williamson
2010-06-18 15:22                         ` Jan Kiszka
2010-06-18 14:03                     ` Markus Armbruster
2010-06-18 14:14                       ` Jan Kiszka
2010-06-18 15:21                       ` Alex Williamson
2010-06-15 11:42             ` Markus Armbruster
2010-06-15 11:59               ` Jan Kiszka
2010-06-15 13:07                 ` Markus Armbruster
2010-06-15 13:19                   ` Paul Brook
2010-06-15 13:32                     ` Paul Brook
2010-06-15 15:08                   ` Jan Kiszka
2010-06-16 13:02                     ` Markus Armbruster
2010-06-14  5:51 ` [RFC PATCH 2/5] savevm: Add DeviceState param Alex Williamson
2010-06-14  5:51 ` [RFC PATCH 3/5] savevm: Make use of the new " Alex Williamson
2010-06-14  5:51 ` [RFC PATCH 4/5] eepro100: Add a dev field to eeprom new/free functions Alex Williamson
2010-06-14  5:51 ` [RFC PATCH 5/5] virtio-net: Incorporate a DeviceState pointer and let savevm track instances Alex Williamson
2010-06-14  7:02 ` [RFC PATCH 0/5] Introduce canonical device hierarchy string Gerd Hoffmann
2010-06-14 19:56   ` Alex Williamson
2010-06-15  8:53     ` [Qemu-devel] " Markus Armbruster
2010-06-15 18:01       ` Alex Williamson
2010-06-16  8:34         ` Markus Armbruster
2010-06-16  8:36           ` Markus Armbruster
2010-06-15  9:12     ` Gerd Hoffmann
2010-06-15 18:03       ` Alex Williamson
2010-06-16  9:46 ` RFC qdev path semantics (was: [Qemu-devel] [RFC PATCH 0/5] Introduce canonical device hierarchy string) Markus Armbruster
2010-06-16 10:40   ` Paul Brook
2010-06-16 11:37   ` RFC qdev path semantics Jan Kiszka
2010-06-16 11:45     ` Paul Brook
2010-06-16 12:01       ` Jan Kiszka
2010-06-16 12:21         ` [Qemu-devel] " Paul Brook
2010-06-16 13:50           ` Jan Kiszka
2010-06-16 13:05   ` Markus Armbruster
2010-06-16 13:23     ` Paul Brook
2010-06-16 14:31       ` [Qemu-devel] " Markus Armbruster
2010-06-17 21:43   ` Alex Williamson
2010-06-17 22:01     ` Paul Brook
2010-06-17 22:34       ` Alex Williamson
2010-06-18  7:52     ` Gerd Hoffmann
2010-06-18 14:58   ` Markus Armbruster
2010-06-22 14:27   ` Anthony Liguori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C1B3987.7000402@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=alex.williamson@redhat.com \
    --cc=armbru@redhat.com \
    --cc=avi@redhat.com \
    --cc=chrisw@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=paul@codesourcery.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox