From: Mark McLoughlin <markmc@redhat.com>
To: Kay Sievers <kay.sievers@vrfy.org>
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: Wed, 10 Dec 2008 09:49:18 +0000 [thread overview]
Message-ID: <1228902558.5384.19.camel@blaa> (raw)
In-Reply-To: <ac3eb2510812091016u944d6c9je6ac8470127e5115@mail.gmail.com>
On Tue, 2008-12-09 at 19:16 +0100, Kay Sievers wrote:
> On Tue, Dec 9, 2008 at 17:41, Mark McLoughlin <markmc@redhat.com> wrote:
> > On Mon, 2008-12-08 at 08:46 -0600, Anthony Liguori wrote:
> >> Mark McLoughlin wrote:
> >> > On Sun, 2008-12-07 at 18:52 +1030, Rusty Russell wrote:
> >> >> On Saturday 06 December 2008 01:37:06 Mark McLoughlin wrote:
> >> >>
> >> >>> Another example of a lack of an explicit dependency causing problems is
> >> >>> Fedora's mkinitrd having this hack:
> >> >>>
> >> >>> if echo $PWD | grep -q /virtio-pci/ ; then
> >> >>> findmodule virtio_pci
> >> >>> fi
> >> >>>
> >> >>> which basically says "if this is a virtio device, don't forget to
> >> >>> include virtio_pci in the initrd too!". Now, mkinitrd is full of hacks,
> >> >>> but this is a particularly unusual one.
> >> >>>
> >> >> Um, I don't know what this does, sorry.
> >> >>
> >> >> I have no idea how Fedora chooses what to put in an initrd; I can't think
> >> >> of a sensible way of deciding what goes in and what doesn't other than
> >> >> lists and heuristics.
> >> >>
> >> >
> >> > Fedora's mkinitrd creates an initrd suitable to boot the machine you run
> >> > mkinitrd on, rather than creating an initrd suitable to boot any
> >> > machine.
> >> >
> >> > So, it goes "ah, / is mounted from /dev/vda, we need to include
> >> > virtio_blk and it's dependencies". It does that in a generic way that
> >> > works well for most setups:
> >> >
> >> > 1) Find the device name (e.g. vda) below /sys/block
> >> >
> >> > 2) Follow the 'device' link to e.g. /sys/devices/virtio-pci/virtio1
> >> >
> >> > 3) Find the module need for this through either 'modalias' or the
> >> > 'driver/module' symlink
> >> >
> >> > 4) Use modprobe to list any dependencies of that module
> >> >
> >> > Clearly, virtio-pci won't be pulled in by any of this so we've added a
> >> > hack to say "oh, it's a virtio device, let's include virtio_pci just in
> >> > case".
> >> >
> >> > It's not even the case that mkinitrd needs to know how to include the
> >> > the module for the bus, because in our case that's virtio.ko ... we've
> >> > pretty effectively hidden the the bus *implementation* from userspace.
> >> >
> >> > I don't think this is worth wasting too much time fixing, that's why I'm
> >> > thinking we should just make virtio_pci built-in by default with
> >> > CONFIG_KVM_GUEST.
> >> >
> >>
> >> What if we have multiple virtio transports?
> >
> > I don't think that's so much an an issue (just build in any transport
> > supported by KVM), but rather that you might build a non-pv_ops kernel
> > to run on QEMU which would benefit from using virtio drivers ...
> >
> >> Is there a way that we can
> >> expose the relationship with virtio-blk and virtio-pci in sysfs? We
> >> have a struct device for the PCI device, it's just a matter of making
> >> the link visible.
> >
> > 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
>
> Doesn't the device have a "driver" link already? If yes, the driver it
> points to should have a "module" link.
The virtio bus is an abstraction that has several different backend
implementations - currently virtio-pci, lguest and kvm-s390.
So yes, the driver/module link gives us the device driver, but the
virtio_module link is to the virtio bus driver (aka implementation,
transport, backend, ...):
$> basename $(readlink virtio_module)
virtio_pci
$> basename $(readlink driver/module)
virtio_net
Cheers,
Mark.
next prev parent reply other threads:[~2008-12-10 9:51 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
2008-12-09 18:16 ` Kay Sievers
2008-12-10 9:49 ` Mark McLoughlin [this message]
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 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-12 9:29 ` Cornelia Huck
2008-12-12 9:29 ` Cornelia Huck
2008-12-12 9:35 ` Mark McLoughlin
2008-12-12 9:35 ` Mark McLoughlin
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 ` 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:29 ` [PATCH 4/4] s390: remove s390_root_dev_*() Cornelia Huck
2008-12-11 17:00 ` Cornelia Huck
2008-12-11 16:56 ` [PATCH 1/4] driver core: add root_device_register() Cornelia Huck
2008-12-11 16:56 ` Cornelia Huck
2008-12-11 18:23 ` Mark McLoughlin
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-12 8:42 ` Cornelia Huck
2008-12-11 18:23 ` Mark McLoughlin
2008-12-11 16:16 ` [PATCH 2/6] virtio: add register_virtio_root_device() Mark McLoughlin
2008-12-11 12:59 ` Cornelia Huck
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=1228902558.5384.19.camel@blaa \
--to=markmc@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=jbarnes@virtuousgeek.org \
--cc=kay.sievers@vrfy.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--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.