2015-12-18 10:06:08

by Sudip Mukherjee

[permalink] [raw]
Subject: [PATCH] Revert "kernel/stop_machine.c: remove CONFIG_SMP dependencies"

This reverts commit 64dab25b058c12f935794cb239089303bda7dbc1.

CONFIG_SMP dependency is needed for some arch like tile, tilegx and
m32r. They use stop_machine() but they donot have HOTPLUG_CPU and as a
result their builds are failing with "undefined symbol 'stop_machine'".

Cc: Chris Wilson <[email protected]>
Cc: Ingo Molnar <[email protected]>
Signed-off-by: Sudip Mukherjee <[email protected]>
---

tile build at:
https://travis-ci.org/sudipm-mukherjee/parport/jobs/97618549

tilegx build at:
https://travis-ci.org/sudipm-mukherjee/parport/jobs/97618550

m32r build at:
https://travis-ci.org/sudipm-mukherjee/parport/jobs/97618542

kernel/stop_machine.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
index b07adef..edb6de4 100644
--- a/kernel/stop_machine.c
+++ b/kernel/stop_machine.c
@@ -529,7 +529,7 @@ static int __init cpu_stop_init(void)
}
early_initcall(cpu_stop_init);

-#ifdef CONFIG_HOTPLUG_CPU
+#if defined(CONFIG_SMP) || defined(CONFIG_HOTPLUG_CPU)

static int __stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus)
{
@@ -629,4 +629,4 @@ int stop_machine_from_inactive_cpu(cpu_stop_fn_t fn, void *data,
return ret ?: done.ret;
}

-#endif /* CONFIG_HOTPLUG_CPU */
+#endif /* CONFIG_SMP || CONFIG_HOTPLUG_CPU */
--
1.9.1


2015-12-18 14:59:35

by Chris Metcalf

[permalink] [raw]
Subject: Re: [PATCH] Revert "kernel/stop_machine.c: remove CONFIG_SMP dependencies"

On 12/18/2015 05:05 AM, Sudip Mukherjee wrote:
> This reverts commit 64dab25b058c12f935794cb239089303bda7dbc1.
>
> CONFIG_SMP dependency is needed for some arch like tile, tilegx and
> m32r. They use stop_machine() but they donot have HOTPLUG_CPU and as a
> result their builds are failing with "undefined symbol 'stop_machine'".
>
> Cc: Chris Wilson <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Signed-off-by: Sudip Mukherjee <[email protected]>
> ---
>
> tile build at:
> https://travis-ci.org/sudipm-mukherjee/parport/jobs/97618549
>
> tilegx build at:
> https://travis-ci.org/sudipm-mukherjee/parport/jobs/97618550
>
> m32r build at:
> https://travis-ci.org/sudipm-mukherjee/parport/jobs/97618542
>
> kernel/stop_machine.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

Acked-by: Chris Metcalf <[email protected]> [for tile]

--
Chris Metcalf, EZChip Semiconductor
http://www.ezchip.com

2015-12-18 23:07:55

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] Revert "kernel/stop_machine.c: remove CONFIG_SMP dependencies"

On Fri, 18 Dec 2015 15:35:55 +0530 Sudip Mukherjee <[email protected]> wrote:

> This reverts commit 64dab25b058c12f935794cb239089303bda7dbc1.
>
> CONFIG_SMP dependency is needed for some arch like tile, tilegx and
> m32r. They use stop_machine() but they donot have HOTPLUG_CPU and as a
> result their builds are failing with "undefined symbol 'stop_machine'".

Thanks. I had my &&'s and ||'s mixed up. I did this:

--- a/kernel/stop_machine.c~kernel-stop_machinec-remove-config_smp-dependencies-fix
+++ a/kernel/stop_machine.c
@@ -531,8 +531,6 @@ static int __init cpu_stop_init(void)
}
early_initcall(cpu_stop_init);

-#ifdef CONFIG_HOTPLUG_CPU
-
static int __stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus)
{
struct multi_stop_data msdata = {
@@ -630,5 +628,3 @@ int stop_machine_from_inactive_cpu(cpu_s
mutex_unlock(&stop_cpus_mutex);
return ret ?: done.ret;
}
-
-#endif /* CONFIG_HOTPLUG_CPU */
_


Rationale:

stop_machine.o is only built when CONFIG_SMP=y so

#if defined(CONFIG_SMP) || defined(CONFIG_HOTPLUG_CPU)

always evaluates to true, so remove it.

2015-12-22 06:01:01

by Sudip Mukherjee

[permalink] [raw]
Subject: Re: [PATCH] Revert "kernel/stop_machine.c: remove CONFIG_SMP dependencies"

On Fri, Dec 18, 2015 at 03:07:53PM -0800, Andrew Morton wrote:
> On Fri, 18 Dec 2015 15:35:55 +0530 Sudip Mukherjee <[email protected]> wrote:
>
> > This reverts commit 64dab25b058c12f935794cb239089303bda7dbc1.
> >
> > CONFIG_SMP dependency is needed for some arch like tile, tilegx and
> > m32r. They use stop_machine() but they donot have HOTPLUG_CPU and as a
> > result their builds are failing with "undefined symbol 'stop_machine'".
>
> Thanks. I had my &&'s and ||'s mixed up. I did this:
>
> --- a/kernel/stop_machine.c~kernel-stop_machinec-remove-config_smp-dependencies-fix
> +++ a/kernel/stop_machine.c
> @@ -531,8 +531,6 @@ static int __init cpu_stop_init(void)
> }
> early_initcall(cpu_stop_init);
>
> -#ifdef CONFIG_HOTPLUG_CPU
> -
> static int __stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus)
> {
> struct multi_stop_data msdata = {
> @@ -630,5 +628,3 @@ int stop_machine_from_inactive_cpu(cpu_s
> mutex_unlock(&stop_cpus_mutex);
> return ret ?: done.ret;
> }
> -
> -#endif /* CONFIG_HOTPLUG_CPU */
> _
>
>
> Rationale:
>
> stop_machine.o is only built when CONFIG_SMP=y so
>
> #if defined(CONFIG_SMP) || defined(CONFIG_HOTPLUG_CPU)
>
> always evaluates to true, so remove it.

Hi Andrew,
The error is still there. I guess you have been busy. :)

next-20151222 fails with the same error. You can see the m32r defconfig
at https://travis-ci.org/sudipm-mukherjee/parport/jobs/98258267

do you want me to send the patch to you for it?

regards
sudip

2015-12-22 06:59:59

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] Revert "kernel/stop_machine.c: remove CONFIG_SMP dependencies"

On Tue, 22 Dec 2015 11:30:51 +0530 Sudip Mukherjee <[email protected]> wrote:

> > Rationale:
> >
> > stop_machine.o is only built when CONFIG_SMP=y so
> >
> > #if defined(CONFIG_SMP) || defined(CONFIG_HOTPLUG_CPU)
> >
> > always evaluates to true, so remove it.
>
> Hi Andrew,
> The error is still there. I guess you have been busy. :)
>
> next-20151222 fails with the same error. You can see the m32r defconfig
> at https://travis-ci.org/sudipm-mukherjee/parport/jobs/98258267

I forgot to Cc Stephen :(

From: Andrew Morton <[email protected]>
Subject: kernel-stop_machinec-remove-config_smp-dependencies-fix

stop_machine.o is only built if CONFIG_SMP=y, so this ifdef always
evaluates to true.

Cc: Chris Wilson <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Valentin Rothberg <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

kernel/stop_machine.c | 4 ----
1 file changed, 4 deletions(-)

diff -puN kernel/stop_machine.c~kernel-stop_machinec-remove-config_smp-dependencies-fix kernel/stop_machine.c
--- a/kernel/stop_machine.c~kernel-stop_machinec-remove-config_smp-dependencies-fix
+++ a/kernel/stop_machine.c
@@ -531,8 +531,6 @@ static int __init cpu_stop_init(void)
}
early_initcall(cpu_stop_init);

-#ifdef CONFIG_HOTPLUG_CPU
-
static int __stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus)
{
struct multi_stop_data msdata = {
@@ -630,5 +628,3 @@ int stop_machine_from_inactive_cpu(cpu_s
mutex_unlock(&stop_cpus_mutex);
return ret ?: done.ret;
}
-
-#endif /* CONFIG_HOTPLUG_CPU */
_

2015-12-22 20:02:23

by Stephen Rothwell

[permalink] [raw]
Subject: Re: [PATCH] Revert "kernel/stop_machine.c: remove CONFIG_SMP dependencies"

Hi Andrew,

On Mon, 21 Dec 2015 22:59:45 -0800 Andrew Morton <[email protected]> wrote:
>
> On Tue, 22 Dec 2015 11:30:51 +0530 Sudip Mukherjee <[email protected]> wrote:
>
> > > Rationale:
> > >
> > > stop_machine.o is only built when CONFIG_SMP=y so
> > >
> > > #if defined(CONFIG_SMP) || defined(CONFIG_HOTPLUG_CPU)
> > >
> > > always evaluates to true, so remove it.
> >
> > Hi Andrew,
> > The error is still there. I guess you have been busy. :)
> >
> > next-20151222 fails with the same error. You can see the m32r defconfig
> > at https://travis-ci.org/sudipm-mukherjee/parport/jobs/98258267
>
> I forgot to Cc Stephen :(

I wish I had figured this out earlier - last nights build were a blood bath :-(

Anyway, I applied it for today.
--
Cheers,
Stephen Rothwell [email protected]