Re: [patch v4 1/2] stop_machine: enable __stop_machine() to be called from the cpu online path

tj
2011-06-14T10:10:45Z

Hello, Ingo, Suresh.

On Mon, Jun 13, 2011 at 01:49:18PM -0700, Suresh Siddha wrote:
> On Mon, 2011-06-13 at 12:56 -0700, Ingo Molnar wrote:
> > * Suresh Siddha <suresh.b.siddha@intel.com> wrote:
> >
> > > include/linux/stop_machine.h | 11 +++--
> > > kernel/stop_machine.c | 91 ++++++++++++++++++++++++++++++++++++++++---
> > > 2 files changed, 93 insertions(+), 9 deletions(-)
> >
> > Btw., this is *way* too risky for a -stable backport.
> >
>
> Ingo, we can have a smaller patch (appended) for the -stable. How do you
> want to go ahead? Take this small patch for both mainline and -stable
> and the two code cleanup/consolidation patches for -tip (to go into
> 3.1?). Thanks.

So, here's what I think we should do.

* Polish up this simpler patch and send it for 3.0 through -tip. It's
slightly scary but not too much and fixes a real bug. After a
while, we can ask -stable to pull the simple version.

* Work on proper update which drops custom implementation from mtrr
code for 3.1 window. BTW, even after the recent revisions, I think
the stop machine change is a bit too hacky. I'll reply to that
separately.

> diff --git a/include/linux/stop_machine.h b/include/linux/stop_machine.h
> index 092dc9b..8a28d4c 100644
> --- a/include/linux/stop_machine.h
> +++ b/include/linux/stop_machine.h
> @@ -33,6 +33,10 @@ void stop_one_cpu_nowait(unsigned int cpu, cpu_stop_fn_t fn, void *arg,
> int stop_cpus(const struct cpumask *cpumask, cpu_stop_fn_t fn, void *arg);
> int try_stop_cpus(const struct cpumask *cpumask, cpu_stop_fn_t fn, void *arg);
>
> +void lock_stop_cpus(void);
> +int try_lock_stop_cpus(void);
> +void unlock_stop_cpus(void);

Ugh... Can you please just export stop_cpus_mutex and have CONFIG_SMP
in mtrr code. After all, it's a temporary workaround for mtrr. No
reason to add three functions for that.

Thank you.

--
tejun