On Sun, Jun 23, 2013 at 07:13:33PM +0530, Srivatsa S. Bhat wrote: > Once stop_machine() is gone from the CPU offline path, we won't be able > to depend on disabling preemption to prevent CPUs from going offline > from under us. > > Use the get/put_online_cpus_atomic() APIs to prevent CPUs from going > offline, while invoking from atomic context. > > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: devel@xxxxxxxxxxxxxxxxxxxx > Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@xxxxxxxxxxxxxxxxxx> > --- > > drivers/staging/octeon/ethernet-rx.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c > index 34afc16..8588b4d 100644 > --- a/drivers/staging/octeon/ethernet-rx.c > +++ b/drivers/staging/octeon/ethernet-rx.c > @@ -36,6 +36,7 @@ > #include <linux/prefetch.h> > #include <linux/ratelimit.h> > #include <linux/smp.h> > +#include <linux/cpu.h> > #include <linux/interrupt.h> > #include <net/dst.h> > #ifdef CONFIG_XFRM > @@ -97,6 +98,7 @@ static void cvm_oct_enable_one_cpu(void) > return; > > /* ... if a CPU is available, Turn on NAPI polling for that CPU. */ > + get_online_cpus_atomic(); > for_each_online_cpu(cpu) { > if (!cpu_test_and_set(cpu, core_state.cpu_state)) { > v = smp_call_function_single(cpu, cvm_oct_enable_napi, > @@ -106,6 +108,7 @@ static void cvm_oct_enable_one_cpu(void) > break; > } > } > + put_online_cpus_atomic(); Does this driver really need to be doing this in the first place? If so, why? The majority of network drivers don't, why is this one "special"? thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html