RE: hv_netvsc: WARNING in softirq.c

From: Haiyang Zhang
Date: Wed Mar 06 2013 - 17:46:03 EST




> -----Original Message-----
> From: Richard Genoud [mailto:richard.genoud@xxxxxxxxx]
> Sent: Friday, March 01, 2013 3:39 AM
> To: Haiyang Zhang
> Cc: KY Srinivasan; devel@xxxxxxxxxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: hv_netvsc: WARNING in softirq.c
>
> 2013/2/28 Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>:
> > We will look into this. And further info around the time will also be
> helpful.
> >
> > Thanks,
> > - Haiyang
>
> The only thing the admin sys could think about is a rsync process
> between the windows host and ANOTHER linux guest that ends at 22h30
> more or less.
> (the other linux guest is a debian 6, without any HV driver)

I have found a simple way to reproduce this kind of warning:
1) reboot the VM (because this warning can be displayed only once.)
2) login to the host and open the VM [Settings]
3) Temporarily change the Network adapter's option [Virtual Switch] to "Not connected".
4) run dmesg, you should see the warning.

The reason for the warning is -- netif_tx_disable() is called when the NIC
is disconnected. And it's called within irq context. netif_tx_disable()
calls local_bh_enable() which displays warning if in irq.

The fix is to remove the unnecessary netif_tx_disable() in the netvsc_linkstatus_callback().
I attached a patch. Would you like to test it on your side as well?

Thanks,
- Haiyang

Attachment: net_stat_warn_test.patch
Description: net_stat_warn_test.patch