]> git.proxmox.com Git - qemu.git/commitdiff
virtio: Add support for guest setting of queue size
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 16 Jul 2013 12:25:07 +0000 (13:25 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 19 Jul 2013 11:58:46 +0000 (12:58 +0100)
The MMIO virtio transport spec allows the guest to tell the host how
large the queue size is. Add virtio_queue_set_num() function which
implements this in the QEMU common virtio support code.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1373977512-28932-4-git-send-email-peter.maydell@linaro.org

hw/virtio/virtio.c
include/hw/virtio/virtio.h

index 8176c147e18860a53ebdcce3bdc54adc2989fb1d..01b05f37e177b38fb8da2f3e9d51aab8e8651348 100644 (file)
@@ -667,6 +667,14 @@ hwaddr virtio_queue_get_addr(VirtIODevice *vdev, int n)
     return vdev->vq[n].pa;
 }
 
+void virtio_queue_set_num(VirtIODevice *vdev, int n, int num)
+{
+    if (num <= VIRTQUEUE_MAX_SIZE) {
+        vdev->vq[n].vring.num = num;
+        virtqueue_init(&vdev->vq[n]);
+    }
+}
+
 int virtio_queue_get_num(VirtIODevice *vdev, int n)
 {
     return vdev->vq[n].vring.num;
index 5d1d2be2955b5ad7ba82a797a2382d50e231aa32..65f378d19860ad5f6c61eda3b3cb0796a7bf3ca8 100644 (file)
@@ -200,6 +200,7 @@ void virtio_config_writew(VirtIODevice *vdev, uint32_t addr, uint32_t data);
 void virtio_config_writel(VirtIODevice *vdev, uint32_t addr, uint32_t data);
 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_notify(VirtIODevice *vdev, int n);
 uint16_t virtio_queue_vector(VirtIODevice *vdev, int n);