lkml.org 
[lkml]   [2014]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH 6/6] virtio: core support for config generation
Date
"Michael S. Tsirkin" <mst@redhat.com> writes:
> virtio 1.0 spec says:
>
> Drivers MUST NOT assume reads from fields greater than 32 bits wide are
> atomic, nor are reads from multiple fields: drivers SHOULD read device
> configuration space fields like so:
> u32 before, after;
> do {
> before = get_config_generation(device);
> // read config entry/entries.
> after = get_config_generation(device);
> } while (after != before);
>
> Do exactly this, for transports that support it.

> static inline void virtio_cwrite8(struct virtio_device *vdev,
> @@ -352,6 +375,7 @@ static inline u64 virtio_cread64(struct virtio_device *vdev,
> {
> u64 ret;
> vdev->config->get(vdev, offset, &ret, sizeof(ret));
> + __virtio_cread_many(vdev, offset, &ret, 1, sizeof(ret));
> return virtio64_to_cpu(vdev, (__force __virtio64)ret);
> }

The "vdev->config->get(vdev, offset, &ret, sizeof(ret));" should
be deleted. Harmless if not, though.

Cheers,
Rusty.


\
 
 \ /
  Last update: 2014-12-22 00:01    [W:0.127 / U:1.332 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site