From: Jan Kiszka <jan.kiszka@siemens.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
"chrisw@redhat.com" <chrisw@redhat.com>,
"kraxel@redhat.com" <kraxel@redhat.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"avi@redhat.com" <avi@redhat.com>,
Paul Brook <paul@codesourcery.com>
Subject: Re: [Qemu-devel] [RFC PATCH 1/5] qdev: Create qdev_get_dev_path()
Date: Fri, 18 Jun 2010 16:14:18 +0200 [thread overview]
Message-ID: <4C1B7F3A.8050109@siemens.com> (raw)
In-Reply-To: <m3631gqvys.fsf@blackfin.pond.sub.org>
Markus Armbruster wrote:
> Alex Williamson <alex.williamson@redhat.com> writes:
>
>> 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"?
>
> I think the general rule for constructing a *canonical* qdev path should
> be:
>
> * If it's the main system bus, the path is /.
>
> * If it's another bus, the path is P/B, where P is the canonical path of
> the device providing the bus, and B is the bus name. Unambiguous,
> since no device ever defines two buses with the same name.
>
> * If it's a device, the path is P/D, where P is the canonical path of
> the bus. If the bus defines bus addresses, then D is @A, where A is
> the device's bus address.
>
> We haven't made up our minds whether the else case exists, or what to
> do if it does. The simple "else D is the device model driver's name"
> works only if the bus can't take multiple device models with the same
> driver.
...which is already on x86 the case with multiple APICs or HPETs on the
system bus.
>
> The canonical path is not the only path. For instance, a qdev ID is a
> valid path, but it's not canonical. /i440FX-pcihost/pci.0/e1000 is
> another valid, non-canonical path.
Not only canonical paths need to be specified, also alias like the
above. We should limit those alias to a required minimum ("required"
means to me: improves human-friendliness compared to canonical form and
preserves backward compatibility where relevant).
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: "chrisw@redhat.com" <chrisw@redhat.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
Paul Brook <paul@codesourcery.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Alex Williamson <alex.williamson@redhat.com>,
"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 16:14:18 +0200 [thread overview]
Message-ID: <4C1B7F3A.8050109@siemens.com> (raw)
In-Reply-To: <m3631gqvys.fsf@blackfin.pond.sub.org>
Markus Armbruster wrote:
> Alex Williamson <alex.williamson@redhat.com> writes:
>
>> 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"?
>
> I think the general rule for constructing a *canonical* qdev path should
> be:
>
> * If it's the main system bus, the path is /.
>
> * If it's another bus, the path is P/B, where P is the canonical path of
> the device providing the bus, and B is the bus name. Unambiguous,
> since no device ever defines two buses with the same name.
>
> * If it's a device, the path is P/D, where P is the canonical path of
> the bus. If the bus defines bus addresses, then D is @A, where A is
> the device's bus address.
>
> We haven't made up our minds whether the else case exists, or what to
> do if it does. The simple "else D is the device model driver's name"
> works only if the bus can't take multiple device models with the same
> driver.
...which is already on x86 the case with multiple APICs or HPETs on the
system bus.
>
> The canonical path is not the only path. For instance, a qdev ID is a
> valid path, but it's not canonical. /i440FX-pcihost/pci.0/e1000 is
> another valid, non-canonical path.
Not only canonical paths need to be specified, also alias like the
above. We should limit those alias to a required minimum ("required"
means to me: improves human-friendliness compared to canonical form and
preserves backward compatibility where relevant).
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2010-06-18 14:14 UTC|newest]
Thread overview: 160+ 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 ` [Qemu-devel] " Alex Williamson
2010-06-14 5:51 ` [RFC PATCH 1/5] qdev: Create qdev_get_dev_path() Alex Williamson
2010-06-14 5:51 ` [Qemu-devel] " Alex Williamson
2010-06-14 6:39 ` Markus Armbruster
2010-06-14 6:39 ` Markus Armbruster
2010-06-14 12:52 ` Alex Williamson
2010-06-14 12:52 ` Alex Williamson
2010-06-14 13:00 ` Jan Kiszka
2010-06-14 13:00 ` Jan Kiszka
2010-06-14 13:09 ` Paul Brook
2010-06-14 13:09 ` Paul Brook
2010-06-14 15:29 ` Alex Williamson
2010-06-14 15:29 ` Alex Williamson
2010-06-14 15:42 ` Paul Brook
2010-06-14 15:42 ` Paul Brook
2010-06-14 16:00 ` Jan Kiszka
2010-06-14 16:00 ` Jan Kiszka
2010-06-14 16:38 ` Alex Williamson
2010-06-14 16:38 ` Alex Williamson
2010-06-14 16:49 ` Jan Kiszka
2010-06-14 16:49 ` Jan Kiszka
2010-06-14 18:35 ` Alex Williamson
2010-06-14 18:35 ` Alex Williamson
2010-06-14 21:43 ` Paul Brook
2010-06-14 21:43 ` Paul Brook
2010-06-14 22:11 ` Alex Williamson
2010-06-14 22:11 ` Alex Williamson
2010-06-14 22:46 ` Paul Brook
2010-06-14 22:46 ` Paul Brook
2010-06-15 1:14 ` Alex Williamson
2010-06-15 1:14 ` Alex Williamson
2010-06-15 11:24 ` Paul Brook
2010-06-15 11:24 ` Paul Brook
2010-06-15 8:47 ` Markus Armbruster
2010-06-15 8:47 ` Markus Armbruster
2010-06-15 9:34 ` Jan Kiszka
2010-06-15 9:34 ` Jan Kiszka
2010-06-15 11:28 ` Paul Brook
2010-06-15 11:28 ` Paul Brook
2010-06-15 11:45 ` Jan Kiszka
2010-06-15 11:45 ` Jan Kiszka
2010-06-15 12:04 ` Paul Brook
2010-06-15 12:04 ` Paul Brook
2010-06-15 12:16 ` Jan Kiszka
2010-06-15 12:16 ` Jan Kiszka
2010-06-15 12:39 ` Paul Brook
2010-06-15 12:39 ` Paul Brook
2010-06-15 13:00 ` Jan Kiszka
2010-06-15 13:00 ` Jan Kiszka
2010-06-15 13:14 ` Paul Brook
2010-06-15 13:14 ` Paul Brook
2010-06-15 13:16 ` Markus Armbruster
2010-06-15 13:16 ` Markus Armbruster
2010-06-15 13:32 ` Jan Kiszka
2010-06-15 13:32 ` Jan Kiszka
2010-06-15 20:53 ` Alex Williamson
2010-06-15 20:53 ` Alex Williamson
2010-06-15 21:55 ` Paul Brook
2010-06-15 21:55 ` Paul Brook
2010-06-15 22:33 ` Alex Williamson
2010-06-15 22:33 ` Alex Williamson
2010-06-15 23:01 ` Paul Brook
2010-06-15 23:01 ` Paul Brook
2010-06-15 23:10 ` Alex Williamson
2010-06-15 23:10 ` Alex Williamson
2010-06-16 0:25 ` Chris Wright
2010-06-16 0:25 ` Chris Wright
2010-06-16 0:30 ` Paul Brook
2010-06-16 0:30 ` Paul Brook
2010-06-16 0:35 ` Chris Wright
2010-06-16 0:35 ` Chris Wright
2010-06-16 1:30 ` Paul Brook
2010-06-16 1:30 ` Paul Brook
2010-06-16 2:55 ` Alex Williamson
2010-06-16 2:55 ` Alex Williamson
2010-06-16 8:23 ` Markus Armbruster
2010-06-16 8:23 ` Markus Armbruster
2010-06-17 22:25 ` Alex Williamson
2010-06-17 22:25 ` Alex Williamson
2010-06-18 9:16 ` Jan Kiszka
2010-06-18 9:16 ` Jan Kiszka
2010-06-18 15:01 ` Alex Williamson
2010-06-18 15:01 ` Alex Williamson
2010-06-18 15:22 ` Jan Kiszka
2010-06-18 15:22 ` Jan Kiszka
2010-06-18 14:03 ` Markus Armbruster
2010-06-18 14:03 ` Markus Armbruster
2010-06-18 14:14 ` Jan Kiszka [this message]
2010-06-18 14:14 ` Jan Kiszka
2010-06-18 15:21 ` Alex Williamson
2010-06-18 15:21 ` Alex Williamson
2010-06-15 11:42 ` Markus Armbruster
2010-06-15 11:42 ` Markus Armbruster
2010-06-15 11:59 ` Jan Kiszka
2010-06-15 11:59 ` Jan Kiszka
2010-06-15 13:07 ` Markus Armbruster
2010-06-15 13:07 ` Markus Armbruster
2010-06-15 13:19 ` Paul Brook
2010-06-15 13:19 ` Paul Brook
2010-06-15 13:32 ` Paul Brook
2010-06-15 13:32 ` Paul Brook
2010-06-15 15:08 ` Jan Kiszka
2010-06-15 15:08 ` Jan Kiszka
2010-06-16 13:02 ` Markus Armbruster
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 ` [Qemu-devel] " Alex Williamson
2010-06-14 5:51 ` [RFC PATCH 3/5] savevm: Make use of the new " Alex Williamson
2010-06-14 5:51 ` [Qemu-devel] " 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 ` [Qemu-devel] " 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 5:51 ` [Qemu-devel] " Alex Williamson
2010-06-14 7:02 ` [RFC PATCH 0/5] Introduce canonical device hierarchy string Gerd Hoffmann
2010-06-14 7:02 ` [Qemu-devel] " Gerd Hoffmann
2010-06-14 19:56 ` Alex Williamson
2010-06-14 19:56 ` [Qemu-devel] " Alex Williamson
2010-06-15 8:53 ` Markus Armbruster
2010-06-15 8:53 ` Markus Armbruster
2010-06-15 18:01 ` Alex Williamson
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 9:12 ` [Qemu-devel] " Gerd Hoffmann
2010-06-15 18:03 ` Alex Williamson
2010-06-15 18:03 ` [Qemu-devel] " 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 9:46 ` Markus Armbruster
2010-06-16 10:40 ` Paul Brook
2010-06-16 10:40 ` Paul Brook
2010-06-16 11:37 ` RFC qdev path semantics Jan Kiszka
2010-06-16 11:37 ` [Qemu-devel] " Jan Kiszka
2010-06-16 11:45 ` Paul Brook
2010-06-16 11:45 ` [Qemu-devel] " Paul Brook
2010-06-16 12:01 ` Jan Kiszka
2010-06-16 12:01 ` [Qemu-devel] " Jan Kiszka
2010-06-16 12:21 ` Paul Brook
2010-06-16 12:21 ` Paul Brook
2010-06-16 13:50 ` Jan Kiszka
2010-06-16 13:50 ` Jan Kiszka
2010-06-16 13:05 ` Markus Armbruster
2010-06-16 13:05 ` [Qemu-devel] " Markus Armbruster
2010-06-16 13:23 ` Paul Brook
2010-06-16 13:23 ` [Qemu-devel] " Paul Brook
2010-06-16 14:31 ` Markus Armbruster
2010-06-16 14:31 ` Markus Armbruster
2010-06-17 21:43 ` Alex Williamson
2010-06-17 21:43 ` [Qemu-devel] " Alex Williamson
2010-06-17 22:01 ` Paul Brook
2010-06-17 22:01 ` [Qemu-devel] " Paul Brook
2010-06-17 22:34 ` Alex Williamson
2010-06-17 22:34 ` [Qemu-devel] " Alex Williamson
2010-06-18 7:52 ` Gerd Hoffmann
2010-06-18 7:52 ` [Qemu-devel] " Gerd Hoffmann
2010-06-18 14:58 ` Markus Armbruster
2010-06-18 14:58 ` [Qemu-devel] " Markus Armbruster
2010-06-22 14:27 ` Anthony Liguori
2010-06-22 14:27 ` [Qemu-devel] " 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=4C1B7F3A.8050109@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.