Re: [PATCH] virtio_net: invoke softirqs after __napi_schedule
From: David Miller <davem@davemloft.net>
Date: 2012-05-17 03:41:04
Also in:
lkml, virtualization
From: David Miller <davem@davemloft.net>
Date: 2012-05-17 03:41:04
Also in:
lkml, virtualization
From: Rusty Russell <redacted> Date: Thu, 17 May 2012 13:02:53 +0930
On Wed, 16 May 2012 10:57:13 +0300, "Michael S. Tsirkin" [off-list ref] wrote:quoted
__napi_schedule might raise softirq but nothing causes do_softirq to trigger, so it does not in fact run. As a result, the error message "NOHZ: local_softirq_pending 08" sometimes occurs during boot of a KVM guest when the network service is started and we are oom: ... Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining IP information for eth0...NOHZ: local_softirq_pending 08 done. [ OK ] ... Further, receive queue processing might get delayed indefinitely until some interrupt triggers: virtio_net expected napi to be run immediately. One way to cause do_softirq to be executed is by invoking local_bh_enable(). As __napi_schedule is normally called from bh or irq context, this seems to make sense: disable bh before __napi_schedule and enable afterwards. Reported-by: Ulrich Obergfell <redacted> Tested-by: Ulrich Obergfell <redacted> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
...
Acked-by: Rusty Russell <redacted>
Michael, you're best to submit this directly to Linus as I just made what I hope is my last push to him for 3.4 today.