Messages in this thread | | | Date | Mon, 12 Sep 2016 15:05:38 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH v3] stop_machine: Make migration_cpu_stop() does useful works for CONFIG_PREEMPT_NONE |
| |
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.
| |