[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160912130537.GB7984@redhat.com>
Date: Mon, 12 Sep 2016 15:05:38 +0200
From: Oleg Nesterov <oleg@...hat.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Cheng Chao <cs.os.kernel@...il.com>, mingo@...nel.org,
tj@...nel.org, akpm@...ux-foundation.org, chris@...is-wilson.co.uk,
linux-kernel@...r.kernel.org
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.
Powered by blists - more mailing lists