From: Ezequiel Garcia <[email protected]>
Date: Mon, 28 Mar 2016 17:41:18 -0300
> +/* Polled functionality used by netconsole and others in non interrupt mode
> */
> +static void mvneta_poll_controller(struct net_device *dev)
> +{
> + struct mvneta_port *pp = netdev_priv(dev);
> +
> + on_each_cpu(mvneta_percpu_poll_controller, pp, false);
> +}
This doesn't work.
netpoll may be invoked from any context whatsoever, even hardware
interrupt handlers or contexts where cpu interrupts are disabled.
smp_call_function() and thus on_each_cpu() may not be called with
disabled interrupts or from a hardware interrupt handler or from
a bottom half handler, all of which are valid situations where
netpoll may occur since printk's can occur anywhere.