Thread (16 messages) 16 messages, 3 authors, 2025-08-19

Re: [PATCH net] virtio_net: adjust the execution order of function `virtnet_close` during freeze

From: Junnan Wu <hidden>
Date: 2025-08-18 01:19:52
Also in: lkml, netdev

On Fri, 15 Aug 2025 08:55:03 -0700 Jakub Kicinski wrote
On Fri, 15 Aug 2025 14:06:15 +0800 Junnan Wu wrote:
quoted
On Fri, 15 Aug 2025 13:38:21 +0800 Jason Wang [off-list ref] wrote
quoted
On Fri, Aug 15, 2025 at 10:24 AM Junnan Wu [off-list ref] wrote:  
quoted
Sorry, I basically mean that the tx napi which caused by
userspace will not be scheduled during suspend, others can not be
guaranteed, such as unfinished packets already in tx vq etc.

But after this patch, once `virtnet_close` completes,
both tx and rq napi will be disabled which guarantee their napi
will not be scheduled in future. And the tx state will be set to
"__QUEUE_STATE_DRV_XOFF" correctly in `netif_device_detach`.  
Ok, so the commit mentioned by fix tag is incorrect.  
Yes, you are right. The commit of this fix tag is the first commit I
found which add function `virtnet_poll_cleantx`. Actually, we are not
sure whether this issue appears after this commit.

In our side, this issue is found by chance in version 5.15.

It's hard to find the key commit which cause this issue
for reason that the reproduction of this scenario is too complex.
I think the problem needs to be more clearly understood, and then it
will be easier to find the fixes tag. At the face of it the patch
makes it look like close() doesn't reliably stop the device, which
is highly odd.
Yes, you are right. It is really strange that `close()` acts like that, because current order has worked for long time.
But panic call stack in our env shows that the function `virtnet_close` and `netif_device_detach`
should have a correct execution order.
And it needs more time to find the fixes tag. I wonder that is it must have fixes tag to merge?

By the way, you mentioned that "the problem need to be more clearly understood",
did you mean the descriptions and sequences in commit message are not easy to understand?
Do you have some suggestions about this?

Thanks!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help