Re: [RFC][PATCH 12/13] stop_machine: Remove lglock

From: Oleg Nesterov
Date: Tue Jun 23 2015 - 12:37:51 EST


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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/