2022-09-17 09:56:20

by junbo4242

[permalink] [raw]
Subject: [PATCH] Do not name control queue for virtio-net

From: Junbo <[email protected]>

In virtio drivers, the control queue always named <virtioX>-config.

Signed-off-by: Junbo <[email protected]>
---
drivers/net/virtio_net.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 9cce7dec7366..0b3e74cfe201 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -3469,7 +3469,8 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
/* Parameters for control virtqueue, if any */
if (vi->has_cvq) {
callbacks[total_vqs - 1] = NULL;
- names[total_vqs - 1] = "control";
+ /* control virtqueue always named <virtioX>-config */
+ names[total_vqs - 1] = "";
}

/* Allocate/initialize parameters for send/receive virtqueues */
--
2.31.1


2022-09-18 07:11:48

by Michael S. Tsirkin

[permalink] [raw]
Subject: Re: [PATCH] Do not name control queue for virtio-net

On Sat, Sep 17, 2022 at 09:28:57AM +0000, [email protected] wrote:
> From: Junbo <[email protected]>
>
> In virtio drivers, the control queue always named <virtioX>-config.
>
> Signed-off-by: Junbo <[email protected]>

I don't think that's right. config is the config interrupt.



> ---
> drivers/net/virtio_net.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 9cce7dec7366..0b3e74cfe201 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -3469,7 +3469,8 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
> /* Parameters for control virtqueue, if any */
> if (vi->has_cvq) {
> callbacks[total_vqs - 1] = NULL;
> - names[total_vqs - 1] = "control";
> + /* control virtqueue always named <virtioX>-config */
> + names[total_vqs - 1] = "";
> }
>
> /* Allocate/initialize parameters for send/receive virtqueues */
> --
> 2.31.1

2022-09-18 12:53:23

by Michael S. Tsirkin

[permalink] [raw]
Subject: Re: [PATCH] Do not name control queue for virtio-net

On Sun, Sep 18, 2022 at 05:00:20PM +0800, Junbo wrote:
> hi Michael
>
> in virtio-net.c
>     /* Parameters for control virtqueue, if any */
>     if (vi->has_cvq) {
>         callbacks[total_vqs - 1] = NULL;
>         names[total_vqs - 1] = "control";
>     }
>
> I think the Author who write the code

wait, that was not you?

> maybe want to name the control queue to
> 'virtioX-control', but it never worked, we can see the name still be
> 'virtioX-config' in /proc/interrupts, for example 
>  43:          0          0          0          0          0          0        
>  0          0   PCI-MSI-edge      virtio0-config
>  44:         64          0          0          0          0          0      
> 1845          0   PCI-MSI-edge      virtio0-input.0
>  45:          1          0          0          0          0          0        
>  0          0   PCI-MSI-edge      virtio0-output.0
>
> Because in function vp_request_msix_vectors, it just allocate 'xxxx-config' to
> every virtio devices, even the virtio device do not need it. in /proc/
> interrupts, we can see that each virtio device's first interrupt always named
> 'virtioX-config'.
>
> So I think it's better to not explicitly give the "control" here, it's
> useless...  
>
>
> Michael S. Tsirkin <[email protected]> 于2022年9月18日周日 14:56写道:
>
> On Sat, Sep 17, 2022 at 09:28:57AM +0000, [email protected] wrote:
> > From: Junbo <[email protected]>
> >
> > In virtio drivers, the control queue always named <virtioX>-config.
> >
> > Signed-off-by: Junbo <[email protected]>
>
> I don't think that's right. config is the config interrupt.
>
>
>
> > ---
> >  drivers/net/virtio_net.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > index 9cce7dec7366..0b3e74cfe201 100644
> > --- a/drivers/net/virtio_net.c
> > +++ b/drivers/net/virtio_net.c
> > @@ -3469,7 +3469,8 @@ static int virtnet_find_vqs(struct virtnet_info
> *vi)
> >       /* Parameters for control virtqueue, if any */
> >       if (vi->has_cvq) {
> >               callbacks[total_vqs - 1] = NULL;
> > -             names[total_vqs - 1] = "control";
> > +             /* control virtqueue always named <virtioX>-config */
> > +             names[total_vqs - 1] = "";
> >       }
> > 
> >       /* Allocate/initialize parameters for send/receive virtqueues */
> > --
> > 2.31.1
>
>

2022-09-22 09:22:02

by Michael S. Tsirkin

[permalink] [raw]
Subject: Re: [PATCH] Do not name control queue for virtio-net

On Thu, Sep 22, 2022 at 11:10:37AM +0200, Paolo Abeni wrote:
> On Sun, 2022-09-18 at 08:17 -0400, Michael S. Tsirkin wrote:
> > On Sun, Sep 18, 2022 at 05:00:20PM +0800, Junbo wrote:
> > > hi?Michael
> > >
> > > in virtio-net.c
> > > ? ? /* Parameters for control virtqueue, if any */
> > > ? ? if (vi->has_cvq) {
> > > ? ? ? ? callbacks[total_vqs - 1] = NULL;
> > > ? ? ? ? names[total_vqs - 1] = "control";
> > > ? ? }
> > >
> > > I think the Author who write the code
> >
> > wait, that was not you?
>
> I believe 'the Author' refers to the author of the current code, not to
> the author of the patch.

Oh I see. Responded.

> @Junbo: the control queue is created only if the VIRTIO_NET_F_CTRL_VQ
> feature is set, please check that in your setup.
>
> Thanks
>
> Paolo


--
MST

2022-09-22 09:31:09

by Michael S. Tsirkin

[permalink] [raw]
Subject: Re: [PATCH] Do not name control queue for virtio-net

On Sun, Sep 18, 2022 at 05:00:20PM +0800, Junbo wrote:
> hi?Michael
>
> in virtio-net.c
> ? ? /* Parameters for control virtqueue, if any */
> ? ? if (vi->has_cvq) {
> ? ? ? ? callbacks[total_vqs - 1] = NULL;
> ? ? ? ? names[total_vqs - 1] = "control";
> ? ? }
>
> I think the Author who write the code maybe want to name the control queue to
> 'virtioX-control',

That would be me I suspect ;)

> but it never worked, we can see the name still be
> 'virtioX-config' in /proc/interrupts,

Nope, what you see in /proc/interrupts are the interrupts, not the queue
name.

> for example?
> ?43: ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ?
> ?0 ? ? ? ? ?0 ? PCI-MSI-edge ? ? ?virtio0-config
> ?44: ? ? ? ? 64 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ?
> 1845 ? ? ? ? ?0 ? PCI-MSI-edge ? ? ?virtio0-input.0
> ?45: ? ? ? ? ?1 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ?
> ?0 ? ? ? ? ?0 ? PCI-MSI-edge ? ? ?virtio0-output.0
>
> Because in function?vp_request_msix_vectors, it just allocate 'xxxx-config' to
> every virtio devices, even the virtio device do not need it.

Oh yes, we can fix that. The result will be this line disappearing for
devices without a config interrupt. Not for net though, that
generally uses a config interrupt for things like link
state detection.


> in /proc/
> interrupts, we can see that each virtio device's first interrupt always named
> 'virtioX-config'.
>
> So I think it's better to not explicitly give the "control" here, it's
> useless...??


it's used for debugging.


2022-09-22 09:39:51

by Paolo Abeni

[permalink] [raw]
Subject: Re: [PATCH] Do not name control queue for virtio-net

On Sun, 2022-09-18 at 08:17 -0400, Michael S. Tsirkin wrote:
> On Sun, Sep 18, 2022 at 05:00:20PM +0800, Junbo wrote:
> > hi Michael
> >
> > in virtio-net.c
> >     /* Parameters for control virtqueue, if any */
> >     if (vi->has_cvq) {
> >         callbacks[total_vqs - 1] = NULL;
> >         names[total_vqs - 1] = "control";
> >     }
> >
> > I think the Author who write the code
>
> wait, that was not you?

I believe 'the Author' refers to the author of the current code, not to
the author of the patch.

@Junbo: the control queue is created only if the VIRTIO_NET_F_CTRL_VQ
feature is set, please check that in your setup.

Thanks

Paolo