Message ID | 20200508163218.22592-8-lulu@redhat.com |
---|---|
State | New |
Headers | show |
Series | vDPA support in qemu | expand |
On 2020/5/9 上午12:32, 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> This patch should come before any vhost-vdpa patch. Thanks > --- > 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 c6b47a9c73..4aaf5d953e 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1103,6 +1103,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) > { > @@ -2053,6 +2065,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 = {
Typo "virtio-pci" in patch subject. On 5/8/20 6:32 PM, 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> > --- > 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 c6b47a9c73..4aaf5d953e 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1103,6 +1103,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) > { > @@ -2053,6 +2065,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 = { >
On Sat, May 9, 2020 at 8:02 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > Typo "virtio-pci" in patch subject. > Thanks Philippe, I will fix this > On 5/8/20 6:32 PM, 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> > > --- > > 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 c6b47a9c73..4aaf5d953e 100644 > > --- a/hw/virtio/virtio-pci.c > > +++ b/hw/virtio/virtio-pci.c > > @@ -1103,6 +1103,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) > > { > > @@ -2053,6 +2065,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 = { > > >
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index c6b47a9c73..4aaf5d953e 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1103,6 +1103,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) { @@ -2053,6 +2065,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 = {