Message ID | 20200529140620.28759-5-lulu@redhat.com |
---|---|
State | New |
Headers | show |
Series | vDPA support in qemu | expand |
On 29/05/2020 16:06, Cindy Lu wrote: > From: Jason Wang <jasowang@redhat.com> > > With version 1, we can detect whether a queue is enabled via > queue_enabled. > > Signed-off-by: Jason Wang <jasowang@redhat.com> Add your S-o-b. > --- > hw/virtio/virtio-pci.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > index 4cb784389c..2c82ed5246 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1107,6 +1107,18 @@ static AddressSpace *virtio_pci_get_dma_as(DeviceState *d) > return pci_get_address_space(dev); > } > > +static bool virtio_pci_queue_enabled(DeviceState *d, int n) > +{ > + VirtIOPCIProxy *proxy = VIRTIO_PCI(d); > + VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); > + > + if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { > + return proxy->vqs[vdev->queue_sel].enabled; > + } > + > + return virtio_queue_get_desc_addr(vdev, n) != 0; I think it would be clearer/cleaner to use here: return virtio_queue_enabled(vdev, n); Thanks, Laurent
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 4cb784389c..2c82ed5246 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1107,6 +1107,18 @@ static AddressSpace *virtio_pci_get_dma_as(DeviceState *d) return pci_get_address_space(dev); } +static bool virtio_pci_queue_enabled(DeviceState *d, int n) +{ + VirtIOPCIProxy *proxy = VIRTIO_PCI(d); + VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); + + if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { + return proxy->vqs[vdev->queue_sel].enabled; + } + + return virtio_queue_get_desc_addr(vdev, n) != 0; +} + static int virtio_pci_add_mem_cap(VirtIOPCIProxy *proxy, struct virtio_pci_cap *cap) { @@ -2059,6 +2071,7 @@ static void virtio_pci_bus_class_init(ObjectClass *klass, void *data) k->ioeventfd_enabled = virtio_pci_ioeventfd_enabled; k->ioeventfd_assign = virtio_pci_ioeventfd_assign; k->get_dma_as = virtio_pci_get_dma_as; + k->queue_enabled = virtio_pci_queue_enabled; } static const TypeInfo virtio_pci_bus_info = {