On Thu, 2015-03-19 at 14:50 -0700, Eric Dumazet wrote:
Are you seeing this race on x86 ?
If IPI are not reliable on your arch, I am guessing you should fix them.
Otherwise, even without hotplug you'll have hangs.
Please try instead this patch :
diff --git a/net/core/dev.c b/net/core/dev.c
index 5d43e010ef870a6ab92895297fe18d6e6a03593a..baa4bff9a6fbe0d77d7921865c038060cb5efffd 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4320,9 +4320,8 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd)
while (remsd) {
struct softnet_data *next = remsd->rps_ipi_next;
- if (cpu_online(remsd->cpu))
- smp_call_function_single_async(remsd->cpu,
- &remsd->csd);
+ smp_call_function_single_async(remsd->cpu,
+ &remsd->csd);
remsd = next;
}
} else