On Wed, 16 May 2012 10:57:13 +0300, "Michael S. Tsirkin" <mst@xxxxxxxxxx> wrote: > __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 <uobergfe@xxxxxxxxxx> > Tested-by: Ulrich Obergfell <uobergfe@xxxxxxxxxx> > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > --- > > To test, one can hack try_fill_recv to always report oom. > I'm not sure it's not too late for 3.4, but we can try. > Rusty, could you review ASAP pls? It's missing a big comment: it's a very complicated way of calling do_softirq(). Indeed, this function is only used when we are not in interrupt context. It's not hot at all, in any ideal scenario. Acked-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx> _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization