From: Anthony Liguori <anthony@codemonkey.ws>
To: Mark McLoughlin <markmc@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
Rusty Russell <rusty@rustcorp.com.au>,
linux-kernel <linux-kernel@vger.kernel.org>,
kvm <kvm@vger.kernel.org>, Michael Tokarev <mjt@tls.msk.ru>,
Jesse Barnes <jbarnes@virtuousgeek.org>
Subject: Re: [PATCH] virtio: make PCI devices take a virtio_pci module ref
Date: Tue, 09 Dec 2008 10:57:09 -0600 [thread overview]
Message-ID: <493EA365.9070408@codemonkey.ws> (raw)
In-Reply-To: <1228840890.26198.25.camel@blaa>
Mark McLoughlin wrote:
> On Mon, 2008-12-08 at 08:46 -0600, Anthony Liguori wrote:
>
> It feels a bit like busy work to generalise this since only virtio_pci
> can be built as a module, but here's a patch.
>
> The mkinitrd hack turns into:
>
> # Handle finding virtio bus implementations
> if [ -L ./virtio_module ] ; then
> findmodule $(basename $(readlink ./virtio_module))
> else if echo $PWD | grep -q /virtio-pci/ ; then
> findmodule virtio_pci
> fi; fi
>
> Cheers,
> Mark.
>
> [PATCH] virtio: add a 'virtio_module' sysfs symlink
>
> Add a way for userspace to determine which virtio bus transport a
> given device is associated with.
>
> This will be used by Fedora mkinitrd to generically determine e.g.
> that virtio_pci is needed to mount a given root filesystem.
>
> Signed-off-by: Mark McLoughlin <markmc@redhat.com>
>
Acked-by: Anthony Liguori <aliguori@us.ibm.com>
> ---
> drivers/virtio/virtio.c | 21 ++++++++++++++++++++-
> drivers/virtio/virtio_pci.c | 1 +
> include/linux/virtio_config.h | 2 ++
> 3 files changed, 23 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
> index 018c070..640ede8 100644
> --- a/drivers/virtio/virtio.c
> +++ b/drivers/virtio/virtio.c
> @@ -189,13 +189,32 @@ int register_virtio_device(struct virtio_device *dev)
> * matching driver. */
> err = device_register(&dev->dev);
> if (err)
> - add_status(dev, VIRTIO_CONFIG_S_FAILED);
> + goto out;
> +
> + /* Create a virtio_module symlink */
> + if (dev->config->owner) {
> + struct module_kobject *mk = &dev->config->owner->mkobj;
> +
> + err = sysfs_create_link(&dev->dev.kobj, &mk->kobj,
> + "virtio_module");
> + if (err)
> + goto unreg;
> + }
> +
> + return 0;
> +
> +unreg:
> + device_unregister(&dev->dev);
> +out:
> + add_status(dev, VIRTIO_CONFIG_S_FAILED);
> return err;
> }
> EXPORT_SYMBOL_GPL(register_virtio_device);
>
> void unregister_virtio_device(struct virtio_device *dev)
> {
> + if (dev->config->owner)
> + sysfs_remove_link(&dev->dev.kobj, "virtio_module");
> device_unregister(&dev->dev);
> }
> EXPORT_SYMBOL_GPL(unregister_virtio_device);
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> index 939e0b4..59e928d 100644
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -328,6 +328,7 @@ static void vp_del_vq(struct virtqueue *vq)
> }
>
> static struct virtio_config_ops virtio_pci_config_ops = {
> + .owner = THIS_MODULE,
> .get = vp_get,
> .set = vp_set,
> .get_status = vp_get_status,
> diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
> index bf8ec28..0a01cda 100644
> --- a/include/linux/virtio_config.h
> +++ b/include/linux/virtio_config.h
> @@ -33,6 +33,7 @@
>
> /**
> * virtio_config_ops - operations for configuring a virtio device
> + * @owner: the module implementing these ops, usually THIS_MODULE
> * @get: read the value of a configuration field
> * vdev: the virtio_device
> * offset: the offset of the configuration field
> @@ -68,6 +69,7 @@
> */
> struct virtio_config_ops
> {
> + struct module *owner;
> void (*get)(struct virtio_device *vdev, unsigned offset,
> void *buf, unsigned len);
> void (*set)(struct virtio_device *vdev, unsigned offset,
>
next prev parent reply other threads:[~2008-12-09 16:57 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-04 12:44 [PATCH] virtio: make PCI devices take a virtio_pci module ref Mark McLoughlin
2008-12-04 22:46 ` Jiri Slaby
2008-12-05 9:02 ` Michael Tokarev
2008-12-05 13:17 ` Jiri Slaby
2008-12-05 14:55 ` Mark McLoughlin
2008-12-05 15:25 ` Jiri Slaby
2008-12-05 15:26 ` Greg KH
2008-12-05 15:26 ` Greg KH
2008-12-05 18:30 ` Mark McLoughlin
2008-12-05 18:46 ` Greg KH
2008-12-08 11:49 ` [PATCH 1/2] virtio: add PCI device release() function Mark McLoughlin
2008-12-08 11:49 ` [PATCH 2/2] virtio: do not statically allocate root device Mark McLoughlin
2008-12-08 14:43 ` Anthony Liguori
2008-12-08 14:58 ` Mark McLoughlin
2008-12-05 18:33 ` [PATCH] virtio: make PCI devices take a virtio_pci module ref Mark McLoughlin
2008-12-05 15:43 ` Anthony Liguori
2008-12-05 17:22 ` Jiri Slaby
2008-12-05 18:36 ` Mark McLoughlin
2008-12-05 18:54 ` Anthony Liguori
2008-12-07 8:30 ` Rusty Russell
2008-12-07 13:36 ` Jiri Slaby
2008-12-05 0:13 ` Rusty Russell
2008-12-05 15:07 ` Mark McLoughlin
2008-12-07 8:22 ` Rusty Russell
2008-12-08 13:03 ` Mark McLoughlin
2008-12-08 14:46 ` Anthony Liguori
2008-12-09 16:41 ` Mark McLoughlin
2008-12-09 16:57 ` Anthony Liguori [this message]
2008-12-09 18:16 ` Kay Sievers
2008-12-10 9:49 ` Mark McLoughlin
2008-12-10 12:02 ` Kay Sievers
2008-12-10 17:44 ` [PATCH 0/6] Clean up virtio device object handling [was Re: [PATCH] virtio: make PCI devices take a virtio_pci module ref] Mark McLoughlin
2008-12-10 17:44 ` Mark McLoughlin
2008-12-10 17:45 ` [PATCH 1/6] virtio: add PCI device release() function Mark McLoughlin
2008-12-10 17:45 ` [PATCH 2/6] virtio: add register_virtio_root_device() Mark McLoughlin
2008-12-10 17:45 ` [PATCH 3/6] virtio: do not statically allocate root device Mark McLoughlin
2008-12-10 17:45 ` [PATCH 4/6] lguest: " Mark McLoughlin
2008-12-10 17:45 ` [PATCH 5/6] kvm-s390: use register_virtio_root_device() Mark McLoughlin
2008-12-10 17:45 ` [PATCH 6/6] lguest: struct device - replace bus_id with dev_name() Mark McLoughlin
2008-12-11 9:05 ` [PATCH 5/6] kvm-s390: use register_virtio_root_device() Christian Borntraeger
2008-12-11 12:49 ` Cornelia Huck
2008-12-11 12:49 ` Cornelia Huck
2008-12-11 9:05 ` Christian Borntraeger
2008-12-11 12:59 ` [PATCH 2/6] virtio: add register_virtio_root_device() Cornelia Huck
2008-12-11 12:59 ` Cornelia Huck
2008-12-11 16:16 ` Mark McLoughlin
2008-12-11 16:16 ` [PATCH 1/4] driver core: add root_device_register() Mark McLoughlin
2008-12-11 16:16 ` [PATCH 2/4] virtio: do not statically allocate root device Mark McLoughlin
2008-12-11 16:16 ` [PATCH 3/4] lguest: " Mark McLoughlin
2008-12-11 16:16 ` [PATCH 4/4] s390: remove s390_root_dev_*() Mark McLoughlin
2008-12-11 17:00 ` Cornelia Huck
2008-12-11 17:00 ` Cornelia Huck
2008-12-11 17:00 ` Cornelia Huck
2008-12-12 9:29 ` Cornelia Huck
2008-12-12 9:29 ` Cornelia Huck
2008-12-12 9:29 ` Cornelia Huck
2008-12-12 9:35 ` Mark McLoughlin
2008-12-12 9:45 ` Martin Schwidefsky
2008-12-12 9:45 ` Martin Schwidefsky
2008-12-12 9:54 ` Martin Schwidefsky
2008-12-12 9:54 ` Martin Schwidefsky
2008-12-12 9:45 ` Cornelia Huck
2008-12-12 9:45 ` Cornelia Huck
2008-12-12 19:07 ` Greg KH
2008-12-12 19:07 ` Greg KH
2008-12-15 12:58 ` [PATCH 1/4] driver core: add root_device_register() Mark McLoughlin
2008-12-15 12:58 ` [PATCH 2/4] virtio: do not statically allocate root device Mark McLoughlin
2008-12-15 12:58 ` [PATCH 3/4] lguest: " Mark McLoughlin
2008-12-15 12:58 ` [PATCH 4/4] s390: remove s390_root_dev_*() Mark McLoughlin
2008-12-15 22:27 ` [PATCH 2/4] virtio: do not statically allocate root device Rusty Russell
2008-12-15 22:27 ` Rusty Russell
2008-12-12 9:35 ` [PATCH 4/4] s390: remove s390_root_dev_*() Mark McLoughlin
2008-12-11 16:56 ` [PATCH 1/4] driver core: add root_device_register() Cornelia Huck
2008-12-11 18:23 ` Mark McLoughlin
2008-12-11 18:23 ` Mark McLoughlin
2008-12-12 8:42 ` Cornelia Huck
2008-12-12 8:42 ` Cornelia Huck
2008-12-12 8:56 ` Mark McLoughlin
2008-12-12 8:56 ` Mark McLoughlin
2008-12-12 9:23 ` Cornelia Huck
2008-12-12 9:23 ` Cornelia Huck
2008-12-11 16:56 ` Cornelia Huck
2008-12-11 16:16 ` [PATCH 2/6] virtio: add register_virtio_root_device() Mark McLoughlin
2008-12-10 18:07 ` [PATCH 0/6] Clean up virtio device object handling [was Re: [PATCH] virtio: make PCI devices take a virtio_pci module ref] Kay Sievers
2008-12-10 18:07 ` Kay Sievers
2008-12-09 22:25 ` [PATCH] virtio: make PCI devices take a virtio_pci module ref Jesse Barnes
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=493EA365.9070408@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=aliguori@us.ibm.com \
--cc=jbarnes@virtuousgeek.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=markmc@redhat.com \
--cc=mjt@tls.msk.ru \
--cc=rusty@rustcorp.com.au \
/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.