Re: [PATCH 2/2] virtio-net: delete also control queue when TX/RX deleted

2020-01-01 Thread Yuri Benditovich
On Thu, Jan 2, 2020 at 1:43 AM Michael S. Tsirkin  wrote:

> On Thu, Dec 26, 2019 at 06:36:49AM +0200, Yuri Benditovich wrote:
> > https://bugzilla.redhat.com/show_bug.cgi?id=1708480
> > If the control queue is not deleted together with TX/RX, it
> > later will be ignored in freeing cache resources and hot
> > unplug will not be completed.
> >
> > Signed-off-by: Yuri Benditovich 
> > ---
> >  hw/net/virtio-net.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> > index db3d7c38e6..f325440d01 100644
> > --- a/hw/net/virtio-net.c
> > +++ b/hw/net/virtio-net.c
> > @@ -3101,7 +3101,8 @@ static void
> virtio_net_device_unrealize(DeviceState *dev, Error **errp)
> >  for (i = 0; i < max_queues; i++) {
> >  virtio_net_del_queue(n, i);
> >  }
> > -
> > +/* delete also control vq */
> > +virtio_del_queue(vdev, max_queues * 2);
> >  qemu_announce_timer_del(&n->announce_timer, false);
> >  g_free(n->vqs);
> >  qemu_del_nic(n->nic);
>
> Do we need to limit this to when ctrl vq exists?
>

ctrl vq always exists (we _add_ it unconditionally).
we may suggest respective feature or not, but the initialized queue
structure present.


>
> > --
> > 2.17.1
>
>


Re: [PATCH 2/2] virtio-net: delete also control queue when TX/RX deleted

2020-01-01 Thread Michael S. Tsirkin
On Thu, Dec 26, 2019 at 06:36:49AM +0200, Yuri Benditovich wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=1708480
> If the control queue is not deleted together with TX/RX, it
> later will be ignored in freeing cache resources and hot
> unplug will not be completed.
> 
> Signed-off-by: Yuri Benditovich 
> ---
>  hw/net/virtio-net.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index db3d7c38e6..f325440d01 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -3101,7 +3101,8 @@ static void virtio_net_device_unrealize(DeviceState 
> *dev, Error **errp)
>  for (i = 0; i < max_queues; i++) {
>  virtio_net_del_queue(n, i);
>  }
> -
> +/* delete also control vq */
> +virtio_del_queue(vdev, max_queues * 2);
>  qemu_announce_timer_del(&n->announce_timer, false);
>  g_free(n->vqs);
>  qemu_del_nic(n->nic);

Do we need to limit this to when ctrl vq exists?

> -- 
> 2.17.1




[PATCH 2/2] virtio-net: delete also control queue when TX/RX deleted

2019-12-25 Thread Yuri Benditovich
https://bugzilla.redhat.com/show_bug.cgi?id=1708480
If the control queue is not deleted together with TX/RX, it
later will be ignored in freeing cache resources and hot
unplug will not be completed.

Signed-off-by: Yuri Benditovich 
---
 hw/net/virtio-net.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index db3d7c38e6..f325440d01 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -3101,7 +3101,8 @@ static void virtio_net_device_unrealize(DeviceState *dev, 
Error **errp)
 for (i = 0; i < max_queues; i++) {
 virtio_net_del_queue(n, i);
 }
-
+/* delete also control vq */
+virtio_del_queue(vdev, max_queues * 2);
 qemu_announce_timer_del(&n->announce_timer, false);
 g_free(n->vqs);
 qemu_del_nic(n->nic);
-- 
2.17.1