[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 3/7] libqos: pass full QVirtQueue to set_queue_address()
From: |
Stefan Hajnoczi |
Subject: |
[PATCH v2 3/7] libqos: pass full QVirtQueue to set_queue_address() |
Date: |
Fri, 11 Oct 2019 09:56:07 +0100 |
Instead of just passing the vring page frame number, pass the full
QVirtQueue. This will allow the VIRTIO 1.0 transport to program the
fine-grained vring address registers in the future.
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
tests/libqos/virtio.h | 2 +-
tests/libqos/virtio-mmio.c | 6 ++++--
tests/libqos/virtio-pci.c | 6 ++++--
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/tests/libqos/virtio.h b/tests/libqos/virtio.h
index 2cb2448f46..37f55b6ade 100644
--- a/tests/libqos/virtio.h
+++ b/tests/libqos/virtio.h
@@ -79,7 +79,7 @@ struct QVirtioBus {
uint16_t (*get_queue_size)(QVirtioDevice *d);
/* Set the address of the selected queue */
- void (*set_queue_address)(QVirtioDevice *d, uint32_t pfn);
+ void (*set_queue_address)(QVirtioDevice *d, QVirtQueue *vq);
/* Setup the virtqueue specified by index */
QVirtQueue *(*virtqueue_setup)(QVirtioDevice *d, QGuestAllocator *alloc,
diff --git a/tests/libqos/virtio-mmio.c b/tests/libqos/virtio-mmio.c
index d0047876a8..43ca4e49c1 100644
--- a/tests/libqos/virtio-mmio.c
+++ b/tests/libqos/virtio-mmio.c
@@ -127,9 +127,11 @@ static uint16_t qvirtio_mmio_get_queue_size(QVirtioDevice
*d)
return (uint16_t)qtest_readl(dev->qts, dev->addr +
QVIRTIO_MMIO_QUEUE_NUM_MAX);
}
-static void qvirtio_mmio_set_queue_address(QVirtioDevice *d, uint32_t pfn)
+static void qvirtio_mmio_set_queue_address(QVirtioDevice *d, QVirtQueue *vq)
{
QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+ uint64_t pfn = vq->desc / dev->page_size;
+
qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_PFN, pfn);
}
@@ -162,7 +164,7 @@ static QVirtQueue
*qvirtio_mmio_virtqueue_setup(QVirtioDevice *d,
addr = guest_alloc(alloc, qvring_size(vq->size, dev->page_size));
qvring_init(dev->qts, alloc, vq, addr);
- qvirtio_mmio_set_queue_address(d, vq->desc / dev->page_size);
+ qvirtio_mmio_set_queue_address(d, vq);
return vq;
}
diff --git a/tests/libqos/virtio-pci.c b/tests/libqos/virtio-pci.c
index c8d736f4d1..4772239b61 100644
--- a/tests/libqos/virtio-pci.c
+++ b/tests/libqos/virtio-pci.c
@@ -190,9 +190,11 @@ static uint16_t qvirtio_pci_get_queue_size(QVirtioDevice
*d)
return qpci_io_readw(dev->pdev, dev->bar, VIRTIO_PCI_QUEUE_NUM);
}
-static void qvirtio_pci_set_queue_address(QVirtioDevice *d, uint32_t pfn)
+static void qvirtio_pci_set_queue_address(QVirtioDevice *d, QVirtQueue *vq)
{
QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev);
+ uint64_t pfn = vq->desc / VIRTIO_PCI_VRING_ALIGN;
+
qpci_io_writel(dev->pdev, dev->bar, VIRTIO_PCI_QUEUE_PFN, pfn);
}
@@ -229,7 +231,7 @@ static QVirtQueue
*qvirtio_pci_virtqueue_setup(QVirtioDevice *d,
addr = guest_alloc(alloc, qvring_size(vqpci->vq.size,
VIRTIO_PCI_VRING_ALIGN));
qvring_init(qvpcidev->pdev->bus->qts, alloc, &vqpci->vq, addr);
- qvirtio_pci_set_queue_address(d, vqpci->vq.desc / VIRTIO_PCI_VRING_ALIGN);
+ qvirtio_pci_set_queue_address(d, &vqpci->vq);
return &vqpci->vq;
}
--
2.21.0
- [PATCH v2 0/7] libqos: add VIRTIO PCI 1.0 support, Stefan Hajnoczi, 2019/10/11
- [PATCH v2 1/7] libqos: extract Legacy virtio-pci.c code, Stefan Hajnoczi, 2019/10/11
- [PATCH v2 2/7] libqos: add iteration support to qpci_find_capability(), Stefan Hajnoczi, 2019/10/11
- [PATCH v2 3/7] libqos: pass full QVirtQueue to set_queue_address(),
Stefan Hajnoczi <=
- [PATCH v2 4/7] libqos: add MSI-X callbacks to QVirtioPCIDevice, Stefan Hajnoczi, 2019/10/11
- [PATCH v2 5/7] libqos: expose common virtqueue setup/cleanup functions, Stefan Hajnoczi, 2019/10/11
- [PATCH v2 6/7] libqos: make the virtio-pci BAR index configurable, Stefan Hajnoczi, 2019/10/11