From: "Michael S. Tsirkin" <mst@redhat.com>
To: Milton Miller <miltonm@bga.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>,
Anthony Liguori <aliguori@us.ibm.com>,
Jamie Lokier <jamie@shareable.org>, Thomas Weber <swirl@gmx.li>,
Gleb Natapov <gleb@redhat.com>,
virtualization@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] virtio: remove virtio-pci root device
Date: Fri, 7 Jan 2011 12:24:32 +0200 [thread overview]
Message-ID: <20110107102432.GC8089@redhat.com> (raw)
In-Reply-To: <virtio-pci-noroot@mdm.bga.com>
On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> We sometimes need to map between the virtio device and
> the given pci device. One such use is OS installer that
> gets the boot pci device from BIOS and needs to
> find the relevant block device. Since it can't,
> installation fails.
>
> Instead of creating a top-level devices/virtio-pci
> directory, create each device under the corresponding
> pci device node. Symlinks to all virtio-pci
> devices can be found under the pci driver link in
> bus/pci/drivers/virtio-pci/devices, and all virtio
> devices under drivers/bus/virtio/devices.
>
> Signed-off-by: Milton Miller <miltonm@bga.com>
Thanks! I'll try this next week.
Some comments from looking at code:
- This will break apps that look for devices in the old virtio-pci directory.
There are not likely to be many of these,
but better be careful. Let's create a compatibility
option to put symlinks there?
Could be under a compile time option with a deprecation plan.
- This will create ./virtio0 under the pci device, right?
But if the device is then renamed, the installer
won't be able to find it, right?
And need to do pattern matching to find the name is a bit ugly.
Could we create ./virtio/virtio0 under the pci device?
Then one can open virtio directory and then the only file there.
> ---
>
> This is an alternative to the patch by Michael S. Tsirkin
> titled "virtio-pci: add softlinks between virtio and pci"
> https://patchwork.kernel.org/patch/454581/
>
> It creates simpler code, uses less memory, and should
> be even easier use by the installer as it won't have to
> know a virtio symlink to follow (just follow none).
>
> Compile tested only as I don't have kvm setup.
>
>
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> index ef8d9d5..4fb5b2b 100644
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
>
> MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
>
> -/* A PCI device has it's own struct device and so does a virtio device so
> - * we create a place for the virtio devices to show up in sysfs. I think it
> - * would make more sense for virtio to not insist on having it's own device. */
> -static struct device *virtio_pci_root;
> -
> /* Convert a generic virtio device to our structure */
> static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> {
> @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> if (vp_dev == NULL)
> return -ENOMEM;
>
> - vp_dev->vdev.dev.parent = virtio_pci_root;
> + vp_dev->vdev.dev.parent = &pci_dev->dev;
> vp_dev->vdev.dev.release = virtio_pci_release_dev;
> vp_dev->vdev.config = &virtio_pci_config_ops;
> vp_dev->pci_dev = pci_dev;
> @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
>
> static int __init virtio_pci_init(void)
> {
> - int err;
> -
> - virtio_pci_root = root_device_register("virtio-pci");
> - if (IS_ERR(virtio_pci_root))
> - return PTR_ERR(virtio_pci_root);
> -
> - err = pci_register_driver(&virtio_pci_driver);
> - if (err)
> - root_device_unregister(virtio_pci_root);
> -
> - return err;
> + return pci_register_driver(&virtio_pci_driver);
> }
>
> module_init(virtio_pci_init);
> @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> static void __exit virtio_pci_exit(void)
> {
> pci_unregister_driver(&virtio_pci_driver);
> - root_device_unregister(virtio_pci_root);
> }
>
> module_exit(virtio_pci_exit);
next prev parent reply other threads:[~2011-01-07 10:25 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-05 19:17 [PATCH] virtio-pci: add softlinks between virtio and pci Michael S. Tsirkin
2011-01-05 19:28 ` Anthony Liguori
2011-01-05 19:38 ` Michael S. Tsirkin
2011-01-05 20:06 ` Anthony Liguori
2011-01-05 20:05 ` Michael S. Tsirkin
2011-01-05 20:08 ` Anthony Liguori
2011-01-05 21:15 ` Michael S. Tsirkin
2011-01-06 8:51 ` Gleb Natapov
2011-01-07 8:54 ` Milton Miller
2011-01-07 8:55 ` [PATCH] virtio: remove virtio-pci root device Milton Miller
2011-01-07 10:24 ` Michael S. Tsirkin [this message]
2011-01-09 15:18 ` Michael S. Tsirkin
2011-01-10 11:18 ` Gleb Natapov
2011-01-10 11:22 ` Michael S. Tsirkin
2011-01-10 11:27 ` Gleb Natapov
2011-01-10 11:42 ` Gleb Natapov
2011-01-10 12:08 ` Michael S. Tsirkin
2011-01-10 12:50 ` Gleb Natapov
2011-01-10 13:31 ` Michael S. Tsirkin
2011-01-10 13:40 ` Gleb Natapov
2011-01-10 14:19 ` Michael S. Tsirkin
2011-01-10 17:10 ` Gleb Natapov
2011-01-10 17:19 ` Michael S. Tsirkin
2011-01-17 0:33 ` Rusty Russell
2011-01-10 17:44 ` Michael S. Tsirkin
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=20110107102432.GC8089@redhat.com \
--to=mst@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=gleb@redhat.com \
--cc=jamie@shareable.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miltonm@bga.com \
--cc=rusty@rustcorp.com.au \
--cc=swirl@gmx.li \
--cc=virtualization@lists.linux-foundation.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