qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 3/7] libqos: pass full QVirtQueue to set_queue_address()


From: Sergio Lopez
Subject: Re: [PATCH v2 3/7] libqos: pass full QVirtQueue to set_queue_address()
Date: Fri, 11 Oct 2019 14:22:44 +0200
User-agent: mu4e 1.2.0; emacs 26.2

Stefan Hajnoczi <address@hidden> writes:

> 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;
>  }

Reviewed-by: Sergio Lopez <address@hidden>

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]