From: Avi Kivity <avi@qumranet.com>
To: arnd@arndb.de
Cc: virtualization@lists.linux-foundation.org
Subject: Re: [RFC 1/4] New virtio bus driver
Date: Sun, 08 Jul 2007 12:59:56 +0300 [thread overview]
Message-ID: <4690B59C.10201@qumranet.com> (raw)
In-Reply-To: <20070706125717.576683142@arndb.de>
arnd@arndb.de wrote:
> This adds a new bus_type for virtio that is intended to
> be completely agnostic of the underlying host transport
> and the upper-level protocol.
>
> Device drivers and host drivers register here, and operations
> are provided that let a device driver talk to the device
> emulation in the hypervisor without knowing the kind of hypervisor.
> Module autoloading through udev should also work.
>
> Loosely based on Rusty's Virtio draft III.
> +
> +/**
> + * virtio_device_id - match a virtio device to a driver
> + * @device_type: string identifying the virtio interface.
> + * @driver_data: used internally by the driver.
> + */
> +struct virtio_device_id {
> + const char *device_type;
> + unsigned long driver_data;
> +};
>
Carrying a string through a hypervisor interface can be unpleasant. How
about a constant instead?
> +
> +/**
> + * virtio_config - virtual device configuration.
> + * @host: structured data interpreted by the host driver.
> + * @driver: structured data interpreted by the device driver.
> + *
> + * The configuration space is what gets used to tell a driver
> + * about the device, e.g. MAC address or block device size.
> + * All fields in here are read-only in the virtual machine,
> + * they are set up by the host.
> + *
> + * The host part remains opaque to the device driver, it can
> + * contain e.g. lguest device index numbers or part of a PCI
> + * configuration space.
> + *
> + * The 256 bytes total intentionally match the size of the
> + * legacy PCI config registers, but the driver should not
> + * expect the layout to be derived from PCI.
> + *
> + * Every virtio_driver should define a data structure for the
> + * virtio_config->driver data, which becomes part of its ABI.
> + */
> +struct virtio_config {
> + const char host[128];
> + const char driver[128];
> +};
>
There needs to be a way for the driver to tell the device that
configuration has changed (promiscuous mode, MAC address) and vice versa
(media detect).
Maybe have a configuration virtqueue for that.
What I'm missing here is the lego approach, where you can mix and match:
virtnet.ko: basic net driver atop virtio, not linked to any implementation
virtio-lguest.ko, virtio-kvm.ko, virtio-xen.ko: virtio transports
virtbus-pci.ko, virtbus-vio.ko, virtbus-xen.ko: virtual configuration
space handlers; responsible for creating queues
vnet-kvm-pci.ko, vnet-kvm-virtbus.ko: stub drivers that glue the
components together
So we'd have one 10-line driver for every combination.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2007-07-08 9:59 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-06 12:42 [RFC 0/4] Using a generic bus_type for virtio arnd
2007-07-06 12:42 ` [RFC 1/4] New virtio bus driver arnd
2007-07-08 9:59 ` Avi Kivity [this message]
2007-07-08 15:29 ` Arnd Bergmann
2007-07-08 15:48 ` Avi Kivity
2007-07-08 20:29 ` Arnd Bergmann
2007-07-08 23:42 ` Rusty Russell
2007-07-09 6:49 ` Avi Kivity
2007-07-09 11:18 ` Arnd Bergmann
2007-07-09 11:41 ` Avi Kivity
2007-07-09 11:38 ` Arnd Bergmann
2007-07-09 12:09 ` Avi Kivity
2007-07-09 14:24 ` Arnd Bergmann
2007-07-09 14:56 ` Avi Kivity
2007-07-09 16:33 ` Arnd Bergmann
2007-07-10 1:53 ` Rusty Russell
2007-07-10 7:56 ` Avi Kivity
2007-07-10 1:17 ` Rusty Russell
2007-07-10 6:06 ` Avi Kivity
2007-07-06 12:42 ` [RFC 2/4] Convert virtio_net to new virtio bus arnd
2007-07-06 12:42 ` [RFC 3/4] Convert virtio_blk " arnd
2007-07-06 12:42 ` [RFC 4/4] Example virtio host implementation, using chardev arnd
2007-07-08 2:15 ` [RFC 0/4] Using a generic bus_type for virtio Rusty Russell
2007-07-08 9:45 ` Avi Kivity
2007-07-08 15:55 ` Arnd Bergmann
2007-07-08 9:42 ` Avi Kivity
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=4690B59C.10201@qumranet.com \
--to=avi@qumranet.com \
--cc=arnd@arndb.de \
--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 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.