On 09/12, Peter Zijlstra wrote:
>
> --- a/kernel/stop_machine.c
> +++ b/kernel/stop_machine.c
> @@ -121,6 +121,11 @@ int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fn, 
> void *arg)
>       cpu_stop_init_done(&done, 1);
>       if (!cpu_stop_queue_work(cpu, &work))
>               return -ENOENT;
> +     /*
> +      * In case @cpu == smp_proccessor_id() we can avoid a sleep+wakeup
> +      * by doing a preemption.
> +      */
> +     cond_resched();

Yes, this is what I tried to suggest too.

But this leads to the question which I wanted to ask many times.

Why cond_resched() is not NOP if CONFIG_PREEMPT=y ?

Perhaps we have some users like, just for example,

        preempt_enable_no_resched();
        cond_resched();

which actually want the should_resched() check even if CONFIG_PREEMPT,
but most callers do not?

Oleg.

Reply via email to