lkml.org 
[lkml]   [2014]   [Oct]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 10/16] virtio: add API to enable VQs early
On Sun, 5 Oct 2014 19:07:19 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> virtio spec requires DRIVER_OK to be set before
> VQs are used, but some drivers use VQs before probe
> function returns.
> Since DRIVER_OK is set after probe, this violates the spec.

"Even though transitional devices support this behaviour, we want to
make it possible for those early callers to become spec compliant."

?

>
> Add API for drivers to call before using VQs.
>
> Sets DRIVER_OK internally.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> include/linux/virtio_config.h | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
> index e8f8f71..6127fc8 100644
> --- a/include/linux/virtio_config.h
> +++ b/include/linux/virtio_config.h
> @@ -109,6 +109,23 @@ struct virtqueue *virtio_find_single_vq(struct virtio_device *vdev,
> return vq;
> }
>
> +/**
> + * virtio_early_enable_vqs - enable vq use in probe function
> + * @vdev: the device
> + *
> + * Driver must call this to use vqs in the probe function.
> + *
> + * Note: vqs are enabled automatically after probe returns.
> + */
> +static inline
> +void virtio_early_enable_vqs(struct virtio_device *dev)
> +{
> + unsigned status = dev->config->get_status(dev);
> +
> + BUG_ON(status & VIRTIO_CONFIG_S_DRIVER_OK);
> + dev->config->set_status(dev, status | VIRTIO_CONFIG_S_DRIVER_OK);
> +}
> +

Maybe virtio_enable_vqs_early() instead?

> static inline
> const char *virtio_bus_name(struct virtio_device *vdev)
> {



\
 
 \ /
  Last update: 2014-10-06 16:42    [W:0.587 / U:0.156 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site