[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 58/58] virtio-pci: fix queue_enable write
From: |
Michael S. Tsirkin |
Subject: |
[PULL v2 58/58] virtio-pci: fix queue_enable write |
Date: |
Fri, 12 Jun 2020 10:53:09 -0400 |
From: Jason Wang <jasowang@redhat.com>
Spec said: The driver uses this to selectively prevent the device from
executing requests from this virtqueue. 1 - enabled; 0 - disabled.
Though write 0 to queue_enable is forbidden by the spec, we should not
assume that the value is 1.
Fix this by ignore the write value other than 1.
Signed-off-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20200610054351.15811-1-jasowang@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/virtio/virtio-pci.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index d028c17c24..7bc8c1c056 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -1273,16 +1273,20 @@ static void virtio_pci_common_write(void *opaque,
hwaddr addr,
virtio_queue_set_vector(vdev, vdev->queue_sel, val);
break;
case VIRTIO_PCI_COMMON_Q_ENABLE:
- virtio_queue_set_num(vdev, vdev->queue_sel,
- proxy->vqs[vdev->queue_sel].num);
- virtio_queue_set_rings(vdev, vdev->queue_sel,
+ if (val == 1) {
+ virtio_queue_set_num(vdev, vdev->queue_sel,
+ proxy->vqs[vdev->queue_sel].num);
+ virtio_queue_set_rings(vdev, vdev->queue_sel,
((uint64_t)proxy->vqs[vdev->queue_sel].desc[1]) << 32 |
proxy->vqs[vdev->queue_sel].desc[0],
((uint64_t)proxy->vqs[vdev->queue_sel].avail[1]) << 32 |
proxy->vqs[vdev->queue_sel].avail[0],
((uint64_t)proxy->vqs[vdev->queue_sel].used[1]) << 32 |
proxy->vqs[vdev->queue_sel].used[0]);
- proxy->vqs[vdev->queue_sel].enabled = 1;
+ proxy->vqs[vdev->queue_sel].enabled = 1;
+ } else {
+ virtio_error(vdev, "wrong value for queue_enable %"PRIx64, val);
+ }
break;
case VIRTIO_PCI_COMMON_Q_DESCLO:
proxy->vqs[vdev->queue_sel].desc[0] = val;
--
MST
- [PULL v2 56/58] Fix parameter type in vhost migration log path, (continued)
- [PULL v2 56/58] Fix parameter type in vhost migration log path, Michael S. Tsirkin, 2020/06/12
- [PULL v2 31/58] hw/pci/pci_bridge: Correct pci_bridge_io memory region size, Michael S. Tsirkin, 2020/06/12
- [PULL v2 05/58] qtest: allow DSDT acpi table changes, Michael S. Tsirkin, 2020/06/12
- [PULL v2 04/58] tests/acpi: update expected SRAT files, Michael S. Tsirkin, 2020/06/12
- [PULL v2 02/58] diffs-allowed: add the SRAT AML to diffs-allowed, Michael S. Tsirkin, 2020/06/12
- [PULL v2 18/58] tests/acpi: Add void tables for Q35/TPM-TIS bios-tables-test, Michael S. Tsirkin, 2020/06/12
- [PULL v2 25/58] virtio-balloon: Implement support for page poison reporting feature, Michael S. Tsirkin, 2020/06/12
- [PULL v2 14/58] acpi: Convert build_tpm2() to build_append* API, Michael S. Tsirkin, 2020/06/12
- [PULL v2 32/58] hw/pci/pci_bridge: Use the IEC binary prefix definitions, Michael S. Tsirkin, 2020/06/12
- [PULL v2 17/58] test/tpm-emu: include sockets and channel headers in tpm-emu header, Michael S. Tsirkin, 2020/06/12
- [PULL v2 58/58] virtio-pci: fix queue_enable write,
Michael S. Tsirkin <=
- [PULL v2 49/58] virtio: add vhost-user-vsock base device, Michael S. Tsirkin, 2020/06/12
- [PULL v2 30/58] hw/pci-host/prep: Correct RAVEN bus bridge memory region size, Michael S. Tsirkin, 2020/06/12
- [PULL v2 50/58] virtio: add vhost-user-vsock-pci device, Michael S. Tsirkin, 2020/06/12
- [PULL v2 48/58] vhost-vsock: add vhost-vsock-common abstraction, Michael S. Tsirkin, 2020/06/12
- Re: [PULL v2 00/58] virtio, acpi, pci: features, fixes, cleanups, tests, no-reply, 2020/06/12
- Re: [PULL v2 00/58] virtio, acpi, pci: features, fixes, cleanups, tests, Peter Maydell, 2020/06/12
- Re: [PULL v2 00/58] virtio, acpi, pci: features, fixes, cleanups, tests, Auger Eric, 2020/06/16