diff options
| author | Peter Maydell | 2013-07-16 14:25:08 +0200 |
|---|---|---|
| committer | Peter Maydell | 2013-07-19 13:58:46 +0200 |
| commit | 6ce69d1c7741c0ad524e4cad6dca31e782108a65 (patch) | |
| tree | de2f0e260a882410a21659f83090ab5627d751ee /include | |
| parent | virtio: Add support for guest setting of queue size (diff) | |
| download | qemu-6ce69d1c7741c0ad524e4cad6dca31e782108a65.tar.gz qemu-6ce69d1c7741c0ad524e4cad6dca31e782108a65.tar.xz qemu-6ce69d1c7741c0ad524e4cad6dca31e782108a65.zip | |
virtio: Support transports which can specify the vring alignment
Support virtio transports which can specify the vring alignment
(ie where the guest communicates this to the host) by providing
a new virtio_queue_set_align() function. (The default alignment
remains as before.)
Transports which wish to make use of this must set the
has_variable_vring_alignment field in their VirtioBusClass
struct to true; they can then change the alignment via
virtio_queue_set_align().
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1373977512-28932-5-git-send-email-peter.maydell@linaro.org
Diffstat (limited to 'include')
| -rw-r--r-- | include/hw/virtio/virtio-bus.h | 6 | ||||
| -rw-r--r-- | include/hw/virtio/virtio.h | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/include/hw/virtio/virtio-bus.h b/include/hw/virtio/virtio-bus.h index 9ed60f9c9d..9217f85abc 100644 --- a/include/hw/virtio/virtio-bus.h +++ b/include/hw/virtio/virtio-bus.h @@ -62,6 +62,12 @@ typedef struct VirtioBusClass { * This is called by virtio-bus just before the device is unplugged. */ void (*device_unplug)(DeviceState *d); + /* + * Does the transport have variable vring alignment? + * (ie can it ever call virtio_queue_set_align()?) + * Note that changing this will break migration for this transport. + */ + bool has_variable_vring_alignment; } VirtioBusClass; struct VirtioBusState { diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index 65f378d198..d7e9e0fc8a 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -202,6 +202,7 @@ void virtio_queue_set_addr(VirtIODevice *vdev, int n, hwaddr addr); hwaddr virtio_queue_get_addr(VirtIODevice *vdev, int n); void virtio_queue_set_num(VirtIODevice *vdev, int n, int num); int virtio_queue_get_num(VirtIODevice *vdev, int n); +void virtio_queue_set_align(VirtIODevice *vdev, int n, int align); void virtio_queue_notify(VirtIODevice *vdev, int n); uint16_t virtio_queue_vector(VirtIODevice *vdev, int n); void virtio_queue_set_vector(VirtIODevice *vdev, int n, uint16_t vector); |
