Message ID | 20200622153756.19189-5-lulu@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vDPA support in qemu | expand |
On 2020/6/22 下午11:37, 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> > Signed-off-by: Cindy Lu <lulu@redhat.com> > --- > hw/virtio/virtio-pci.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > index 4cb784389c..3918aa9f6c 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1107,6 +1107,23 @@ static AddressSpace *virtio_pci_get_dma_as(DeviceState *d) > return pci_get_address_space(dev); > } > > +static bool virtio_queue_check_enabled(VirtIODevice *vdev, int n) One space is sufficient between bool and virtio_queue_check_enabled. > +{ > + return virtio_queue_get_desc_addr(vdev, n) != 0; > +} > + > +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_check_enabled(vdev, n); Similar issue here. Thanks > +} > + > static int virtio_pci_add_mem_cap(VirtIOPCIProxy *proxy, > struct virtio_pci_cap *cap) > { > @@ -2059,6 +2076,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 Tue, Jun 23, 2020 at 3:13 PM Jason Wang <jasowang@redhat.com> wrote: > > > On 2020/6/22 下午11:37, 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> > > Signed-off-by: Cindy Lu <lulu@redhat.com> > > --- > > hw/virtio/virtio-pci.c | 18 ++++++++++++++++++ > > 1 file changed, 18 insertions(+) > > > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > > index 4cb784389c..3918aa9f6c 100644 > > --- a/hw/virtio/virtio-pci.c > > +++ b/hw/virtio/virtio-pci.c > > @@ -1107,6 +1107,23 @@ static AddressSpace *virtio_pci_get_dma_as(DeviceState *d) > > return pci_get_address_space(dev); > > } > > > > +static bool virtio_queue_check_enabled(VirtIODevice *vdev, int n) > > > One space is sufficient between bool and virtio_queue_check_enabled. > > > > +{ > > + return virtio_queue_get_desc_addr(vdev, n) != 0; > > +} > > + > > +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_check_enabled(vdev, n); > > > Similar issue here. > > Thanks > Thanks, I will correct this > > > +} > > + > > static int virtio_pci_add_mem_cap(VirtIOPCIProxy *proxy, > > struct virtio_pci_cap *cap) > > { > > @@ -2059,6 +2076,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 22/06/2020 17:37, 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> > Signed-off-by: Cindy Lu <lulu@redhat.com> > --- > hw/virtio/virtio-pci.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > index 4cb784389c..3918aa9f6c 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1107,6 +1107,23 @@ static AddressSpace *virtio_pci_get_dma_as(DeviceState *d) > return pci_get_address_space(dev); > } > > +static bool virtio_queue_check_enabled(VirtIODevice *vdev, int n) > +{ > + return virtio_queue_get_desc_addr(vdev, n) != 0; > +} This function is already defined under a different name in hw/virtio/virtio.c: 3287 bool virtio_queue_enabled(VirtIODevice *vdev, int n) 3288 { 3289 return virtio_queue_get_desc_addr(vdev, n) != 0; 3290 } As this file includes "hw/virtio/virtio.h" you can use it directly. Thanks, Laurent
On Wed, Jun 24, 2020 at 9:25 PM Laurent Vivier <lvivier@redhat.com> wrote: > > On 22/06/2020 17:37, 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> > > Signed-off-by: Cindy Lu <lulu@redhat.com> > > --- > > hw/virtio/virtio-pci.c | 18 ++++++++++++++++++ > > 1 file changed, 18 insertions(+) > > > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > > index 4cb784389c..3918aa9f6c 100644 > > --- a/hw/virtio/virtio-pci.c > > +++ b/hw/virtio/virtio-pci.c > > @@ -1107,6 +1107,23 @@ static AddressSpace *virtio_pci_get_dma_as(DeviceState *d) > > return pci_get_address_space(dev); > > } > > > > +static bool virtio_queue_check_enabled(VirtIODevice *vdev, int n) > > +{ > > + return virtio_queue_get_desc_addr(vdev, n) != 0; > > +} > > This function is already defined under a different name in > hw/virtio/virtio.c: > > > 3287 bool virtio_queue_enabled(VirtIODevice *vdev, int n) > 3288 { > 3289 return virtio_queue_get_desc_addr(vdev, n) != 0; > 3290 } > > As this file includes "hw/virtio/virtio.h" you can use it directly. > Thanks Laurent, Will fix this > Thanks, > Laurent >
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 4cb784389c..3918aa9f6c 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1107,6 +1107,23 @@ static AddressSpace *virtio_pci_get_dma_as(DeviceState *d) return pci_get_address_space(dev); } +static bool virtio_queue_check_enabled(VirtIODevice *vdev, int n) +{ + return virtio_queue_get_desc_addr(vdev, n) != 0; +} + +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_check_enabled(vdev, n); +} + static int virtio_pci_add_mem_cap(VirtIOPCIProxy *proxy, struct virtio_pci_cap *cap) { @@ -2059,6 +2076,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 = {