Skip to contentSkip to conversation

ARM: imx6: fix SMP compilation again

PATCH New Arnd Bergmann 3 participants 9 messages Jul 22, 2014 – Jul 23, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

My earlier patch 1fc593feaf8e ("ARM: imx: build i.MX6 functions only when needed") fixed a problem with building an i.MX5 kernel, but missed the corner case of building a kernel for i.MX5 with SMP enabled. It is an extremely rare case that has only now happened after many thousands of randconfig kernel builds.

The error message I get is arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

This puts the code inside of an "ifdef CONFIG_SMP" to hopefully do the right thing in all configurations.

arch/arm/mach-imx/Makefile +2 -0
index ac88599ca080..23c02932bf84 100644
@@ -93,9 +93,11 @@ obj-$(CONFIG_HAVE_IMX_ANATOP) += anatop.o
 obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
 obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
 obj-$(CONFIG_HAVE_IMX_SRC) += src.o
+ifdef CONFIG_SOC_IMX6
 AFLAGS_headsmp.o :=-Wa,-march=armv7-a
 obj-$(CONFIG_SMP) += headsmp.o platsmp.o
 obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
+endif
 obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
 obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o mach-imx6sl.o
 obj-$(CONFIG_SOC_IMX6SX) += clk-imx6sx.o mach-imx6sx.o
#1 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

Quoted 9 lines · Arnd Bergmann

My earlier patch 1fc593feaf8e ("ARM: imx: build i.MX6 functions only when needed") fixed a problem with building an i.MX5 kernel, but missed the corner case of building a kernel for i.MX5 with SMP enabled. It is an extremely rare case that has only now happened after many thousands of randconfig kernel builds.

The error message I get is arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

I cannot reproduce it, and unsure how it happens.

The v7_invalidate_l1() is defined in arch/arm/mm/cache-v7.S, and should be available for i.MX5 build.

Shawn

Quoted 23 lines

This puts the code inside of an "ifdef CONFIG_SMP" to hopefully do the right thing in all configurations.

arch/arm/mach-imx/Makefile +2 -0
index ac88599ca080..23c02932bf84 100644
@@ -93,9 +93,11 @@ obj-$(CONFIG_HAVE_IMX_ANATOP) += anatop.o
 obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
 obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
 obj-$(CONFIG_HAVE_IMX_SRC) += src.o
+ifdef CONFIG_SOC_IMX6
 AFLAGS_headsmp.o :=-Wa,-march=armv7-a
 obj-$(CONFIG_SMP) += headsmp.o platsmp.o
 obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
+endif
 obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
 obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o mach-imx6sl.o
 obj-$(CONFIG_SOC_IMX6SX) += clk-imx6sx.o mach-imx6sx.o
#2 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

Quoted 7 lines · On Tuesday 22 July 2014 16:50:56 Shawn Guo wrote:
Quoted 6 lines · Arnd Bergmann

My earlier patch 1fc593feaf8e ("ARM: imx: build i.MX6 functions only when needed") fixed a problem with building an i.MX5 kernel, but missed the corner case of building a kernel for i.MX5 with SMP enabled. It is an extremely rare case that has only now happened after many thousands of randconfig kernel builds.

Quoted 9 lines
Quoted 3 lines

The error message I get is arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

I cannot reproduce it, and unsure how it happens.

The v7_invalidate_l1() is defined in arch/arm/mm/cache-v7.S, and should be available for i.MX5 build.

Ah, you are right, I got the text wrong here, and I think I now understand why it didn't happen earlier. Updated patch below (same patch, new text).

8<-------------
Subject: [PATCH] ARM: imx6: fix SMP compilation again

My earlier patch 1fc593feaf8e ("ARM: imx: build i.MX6 functions only when needed") fixed a problem with building an i.MX5 kernel, but now the problem has returned for the case where we allow ARMv6K SMP builds in multiplatform. With CONFIG_CPU_V7 disabled, but i.MX3 and SMP enabled, we get this build error:

arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

This puts the code inside of an "ifdef CONFIG_SMP" to hopefully do the right thing in all configurations.

arch/arm/mach-imx/Makefile +2 -0
index ac88599ca080..23c02932bf84 100644
@@ -93,9 +93,11 @@ obj-$(CONFIG_HAVE_IMX_ANATOP) += anatop.o
 obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
 obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
 obj-$(CONFIG_HAVE_IMX_SRC) += src.o
+ifdef CONFIG_SOC_IMX6
 AFLAGS_headsmp.o :=-Wa,-march=armv7-a
 obj-$(CONFIG_SMP) += headsmp.o platsmp.o
 obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
+endif
 obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
 obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o mach-imx6sl.o
 obj-$(CONFIG_SOC_IMX6SX) += clk-imx6sx.o mach-imx6sx.o
#3 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

Quoted 4 lines · Arnd Bergmann

Ah, you are right, I got the text wrong here, and I think I now understand why it didn't happen earlier. Updated patch below (same patch, new text).

Quoted 8 lines

8<-------------
Subject: [PATCH] ARM: imx6: fix SMP compilation again

My earlier patch 1fc593feaf8e ("ARM: imx: build i.MX6 functions only when needed") fixed a problem with building an i.MX5 kernel, but now the problem has returned for the case where we allow ARMv6K SMP builds in multiplatform. With CONFIG_CPU_V7 disabled, but i.MX3 and SMP enabled, we get this build error:

Maybe I missed something, but I have problem to get the following three conditions meet in a single kernel configuration.

a) CONFIG_CPU_V7 disabled
b) i.MX3 enabled
c) SMP enabled

When I get a) and b) in the config, I have no way to get c). And it seems that the only way to get a) and c) at the same time is to enable MACH_REALVIEW_PB11MP, which is not part of multi-platform support. So i.MX3 cannot be enabled in there.

I tried both mainline and -next tree. I really need some help to reproduce the error first.

Quoted 5 lines

arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

This puts the code inside of an "ifdef CONFIG_SMP" to hopefully

The code says "ifdef CONFIG_SOC_IMX6"?

Shawn

Quoted 21 lines

do the right thing in all configurations.

arch/arm/mach-imx/Makefile +2 -0
index ac88599ca080..23c02932bf84 100644
@@ -93,9 +93,11 @@ obj-$(CONFIG_HAVE_IMX_ANATOP) += anatop.o
 obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
 obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
 obj-$(CONFIG_HAVE_IMX_SRC) += src.o
+ifdef CONFIG_SOC_IMX6
 AFLAGS_headsmp.o :=-Wa,-march=armv7-a
 obj-$(CONFIG_SMP) += headsmp.o platsmp.o
 obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
+endif
 obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
 obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o mach-imx6sl.o
 obj-$(CONFIG_SOC_IMX6SX) += clk-imx6sx.o mach-imx6sx.o
#4 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

Quoted 21 lines · Shawn Guo
Quoted 4 lines · Arnd Bergmann

Ah, you are right, I got the text wrong here, and I think I now understand why it didn't happen earlier. Updated patch below (same patch, new text).

Quoted 8 lines

8<-------------
Subject: [PATCH] ARM: imx6: fix SMP compilation again

My earlier patch 1fc593feaf8e ("ARM: imx: build i.MX6 functions only when needed") fixed a problem with building an i.MX5 kernel, but now the problem has returned for the case where we allow ARMv6K SMP builds in multiplatform. With CONFIG_CPU_V7 disabled, but i.MX3 and SMP enabled, we get this build error:

Maybe I missed something, but I have problem to get the following three conditions meet in a single kernel configuration.

a) CONFIG_CPU_V7 disabled
b) i.MX3 enabled
c) SMP enabled

Quoted 7 lines

When I get a) and b) in the config, I have no way to get c). And it seems that the only way to get a) and c) at the same time is to enable MACH_REALVIEW_PB11MP, which is not part of multi-platform support. So i.MX3 cannot be enabled in there.

I tried both mainline and -next tree. I really need some help to reproduce the error first.

Without even looking at the patch, I think the key here is this part of Arnd's commit log:

	for the case where we allow ARMv6K SMP builds in multiplatform
	...

Best regards
Uwe

Signature · 2 lines
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
#5 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

In reply to Shawn Guo
Quoted 17 lines · On Tuesday 22 July 2014 21:48:16 Shawn Guo wrote:
Quoted 4 lines · Arnd Bergmann

Ah, you are right, I got the text wrong here, and I think I now understand why it didn't happen earlier. Updated patch below (same patch, new text).

Quoted 8 lines

8<-------------
Subject: [PATCH] ARM: imx6: fix SMP compilation again

My earlier patch 1fc593feaf8e ("ARM: imx: build i.MX6 functions only when needed") fixed a problem with building an i.MX5 kernel, but now the problem has returned for the case where we allow ARMv6K SMP builds in multiplatform. With CONFIG_CPU_V7 disabled, but i.MX3 and SMP enabled, we get this build error:

Maybe I missed something, but I have problem to get the following three conditions meet in a single kernel configuration.

Quoted 8 lines

a) CONFIG_CPU_V7 disabled
b) i.MX3 enabled
c) SMP enabled

When I get a) and b) in the config, I have no way to get c). And it seems that the only way to get a) and c) at the same time is to enable MACH_REALVIEW_PB11MP, which is not part of multi-platform support. So i.MX3 cannot be enabled in there.

I have a patch series to make ARCH_REALVIEW multiplatform-enabled, and I guess the condition can only be hit with these patches, or any other that selects HAS_SMP.

Quoted 2 lines

I tried both mainline and -next tree. I really need some help to reproduce the error first.

My branch is at git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git in the randconfig-next branch. Sorry for the inconvenience.

Quoted 6 lines
Quoted 4 lines

arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

This puts the code inside of an "ifdef CONFIG_SMP" to hopefully

The code says "ifdef CONFIG_SOC_IMX6"?

It seems I'm having a bad day. I'll fix it up.

Arnd

#6 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

Quoted 6 lines · Arnd Bergmann
Quoted 2 lines · On Tuesday 22 July 2014 21:48:16 Shawn Guo wrote:

I tried both mainline and -next tree. I really need some help to reproduce the error first.

My branch is at git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git in the randconfig-next branch. Sorry for the inconvenience.

Okay, I can see the error on your branch with the fixing patch reverted.

Quoted 9 lines
Quoted 7 lines
Quoted 5 lines

arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

This puts the code inside of an "ifdef CONFIG_SMP" to hopefully

The code says "ifdef CONFIG_SOC_IMX6"?

It seems I'm having a bad day. I'll fix it up.

With that fixed up,

Or let me know if you expect me to handle the patch.

Shawn

#7 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

Quoted 18 lines · On Tuesday 22 July 2014 22:52:57 Shawn Guo wrote:
Quoted 6 lines · Arnd Bergmann
Quoted 2 lines · On Tuesday 22 July 2014 21:48:16 Shawn Guo wrote:

I tried both mainline and -next tree. I really need some help to reproduce the error first.

My branch is at git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git in the randconfig-next branch. Sorry for the inconvenience.

Okay, I can see the error on your branch with the fixing patch reverted.

Quoted 8 lines
Quoted 7 lines
Quoted 5 lines

arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

This puts the code inside of an "ifdef CONFIG_SMP" to hopefully

The code says "ifdef CONFIG_SOC_IMX6"?

Quoted 8 lines
Quoted 1 line

It seems I'm having a bad day. I'll fix it up.

With that fixed up,

Or let me know if you expect me to handle the patch.

If you don't mind, just put it into your tree. I'm currently in the middle of going through my older patches and don't want to lose this one.

Arnd

#8 lore raw

PATCH 1/1 ARM: imx6: fix SMP compilation again

Quoted 23 lines · Arnd Bergmann
Quoted 22 lines · On Tuesday 22 July 2014 22:52:57 Shawn Guo wrote:
Quoted 6 lines · Arnd Bergmann
Quoted 2 lines · On Tuesday 22 July 2014 21:48:16 Shawn Guo wrote:

I tried both mainline and -next tree. I really need some help to reproduce the error first.

My branch is at git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git in the randconfig-next branch. Sorry for the inconvenience.

Okay, I can see the error on your branch with the fixing patch reverted.

Quoted 9 lines
Quoted 7 lines
Quoted 5 lines

arch/arm/mach-imx/built-in.o: In function `v7_secondary_startup':
:(.text+0x5124): undefined reference to `v7_invalidate_l1'

This puts the code inside of an "ifdef CONFIG_SMP" to hopefully

The code says "ifdef CONFIG_SOC_IMX6"?

It seems I'm having a bad day. I'll fix it up.

With that fixed up,

Quoted 7 lines
Quoted 4 lines

Or let me know if you expect me to handle the patch.

If you don't mind, just put it into your tree. I'm currently in the middle of going through my older patches and don't want to lose this one.

Okay, applied after fixing up the commit log.

Shawn