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/

Reply via email to