qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL for-1.6 0/2] arm-devs queue
@ 2013-08-12 11:00 Peter Maydell
  2013-08-12 11:01 ` [Qemu-devel] [PULL 1/2] hw/virtio/virtio: Don't allow guests to add/remove queues Peter Maydell
  2013-08-12 11:01 ` [Qemu-devel] [PULL 2/2] hw/virtio/virtio-mmio: Make QueueNumMax read 0 for unavailable queues Peter Maydell
  0 siblings, 2 replies; 3+ messages in thread
From: Peter Maydell @ 2013-08-12 11:00 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Paul Brook

This pullrequest is just two bugfixes for virtio-mmio, which
have now been code-reviewed; MST recommended they go into 1.6,
so here they are.

thanks
-- PMM

The following changes since commit 2e985fe000e73097e325e18b943e8babfa96c35c:

  mips: revert commit b332d24a8e1290954029814d09156b06ede358e2 (2013-08-08 23:06:15 +0200)

are available in the git repository at:

  git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-arm-devs-20130812

for you to fetch changes up to f7b803b377f74f7e109559e8e64f04c4c1fcd86b:

  hw/virtio/virtio-mmio: Make QueueNumMax read 0 for unavailable queues (2013-08-12 11:57:56 +0100)

----------------------------------------------------------------
arm-devs queue

----------------------------------------------------------------
Peter Maydell (2):
      hw/virtio/virtio: Don't allow guests to add/remove queues
      hw/virtio/virtio-mmio: Make QueueNumMax read 0 for unavailable queues

 hw/virtio/virtio-mmio.c |    3 +++
 hw/virtio/virtio.c      |   12 +++++++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PULL 1/2] hw/virtio/virtio: Don't allow guests to add/remove queues
  2013-08-12 11:00 [Qemu-devel] [PULL for-1.6 0/2] arm-devs queue Peter Maydell
@ 2013-08-12 11:01 ` Peter Maydell
  2013-08-12 11:01 ` [Qemu-devel] [PULL 2/2] hw/virtio/virtio-mmio: Make QueueNumMax read 0 for unavailable queues Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2013-08-12 11:01 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Paul Brook

A queue size of 0 is used to indicate a nonexistent queue, so
don't allow the guest to flip a queue between zero-size and
non-zero-size. Don't permit setting of negative queue sizes
either.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1374853288-9912-2-git-send-email-peter.maydell@linaro.org
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/virtio/virtio.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 09f62c6..60653f7 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -673,10 +673,16 @@ hwaddr virtio_queue_get_addr(VirtIODevice *vdev, int n)
 
 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]);
+    /* Don't allow guest to flip queue between existent and
+     * nonexistent states, or to set it to an invalid size.
+     */
+    if (!!num != !!vdev->vq[n].vring.num ||
+        num > VIRTQUEUE_MAX_SIZE ||
+        num < 0) {
+        return;
     }
+    vdev->vq[n].vring.num = num;
+    virtqueue_init(&vdev->vq[n]);
 }
 
 int virtio_queue_get_num(VirtIODevice *vdev, int n)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PULL 2/2] hw/virtio/virtio-mmio: Make QueueNumMax read 0 for unavailable queues
  2013-08-12 11:00 [Qemu-devel] [PULL for-1.6 0/2] arm-devs queue Peter Maydell
  2013-08-12 11:01 ` [Qemu-devel] [PULL 1/2] hw/virtio/virtio: Don't allow guests to add/remove queues Peter Maydell
@ 2013-08-12 11:01 ` Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2013-08-12 11:01 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Paul Brook

The virtio-mmio spec says that QueueNumMax must read zero for queues
which are unavailable; implement this, rather than always returning
VIRTQUEUE_MAX_SIZE.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1374853288-9912-3-git-send-email-peter.maydell@linaro.org
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/virtio/virtio-mmio.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c
index 88cf994..4bd2953 100644
--- a/hw/virtio/virtio-mmio.c
+++ b/hw/virtio/virtio-mmio.c
@@ -151,6 +151,9 @@ static uint64_t virtio_mmio_read(void *opaque, hwaddr offset, unsigned size)
         }
         return proxy->host_features;
     case VIRTIO_MMIO_QUEUENUMMAX:
+        if (!virtio_queue_get_num(vdev, vdev->queue_sel)) {
+            return 0;
+        }
         return VIRTQUEUE_MAX_SIZE;
     case VIRTIO_MMIO_QUEUEPFN:
         return virtio_queue_get_addr(vdev, vdev->queue_sel)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-08-12 11:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-12 11:00 [Qemu-devel] [PULL for-1.6 0/2] arm-devs queue Peter Maydell
2013-08-12 11:01 ` [Qemu-devel] [PULL 1/2] hw/virtio/virtio: Don't allow guests to add/remove queues Peter Maydell
2013-08-12 11:01 ` [Qemu-devel] [PULL 2/2] hw/virtio/virtio-mmio: Make QueueNumMax read 0 for unavailable queues Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).