On 06/23, Peter Zijlstra wrote: > > void synchronize_sched_expedited(void) > {
... > - while (try_stop_cpus(cma ? cm : cpu_online_mask, > - synchronize_sched_expedited_cpu_stop, > - NULL) == -EAGAIN) { > - put_online_cpus(); > - atomic_long_inc(&rsp->expedited_tryfail); > - > - /* Check to see if someone else did our work for us. */ > - s = atomic_long_read(&rsp->expedited_done); > - if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { > - /* ensure test happens before caller kfree */ > - smp_mb__before_atomic(); /* ^^^ */ > - atomic_long_inc(&rsp->expedited_workdone1); > - free_cpumask_var(cm); > - return; > - } ... > + for_each_online_cpu(cpu) { > + struct rcu_dynticks *rdtp = &per_cpu(rcu_dynticks, cpu); ... > + stop_one_cpu(cpu, synchronize_sched_expedited_cpu_stop, NULL); I too thought about something like this change ;) Not sure I read this patch correctly, but it seems that then you can remove all rsp->expedited_* members/code ? Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/