Skip to contentSkip to conversation

ARM: omap: make am43xx build with SMP enabled

PATCH New Arnd Bergmann 3 participants 5 messages Jun 21, 2013 – Jun 24, 2013

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

PATCH 1/1 ARM: omap: make am43xx build with SMP enabled

With am43xx enabled, omap4 and omap5 disabled and SMP on, I get these build errors:

arch/arm/mach-omap2/built-in.o: In function `scu_gp_set':
:(.text+0x7858): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function scu_gp_clear':
:(.text+0x793c): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function omap4_cpu_die':
:(.ref.text+0x44): undefined reference to `omap4_hotplug_cpu'

The easiest way to work around that is to turn on the missing functions, even though we know they won't be used on am43xx, which is single-CPU.

Cc Ankur Kishore <[email protected]>
Cc Afzal Mohammed <[email protected]>
Cc Tony Lindgren <[email protected]>
arch/arm/mach-omap2/Makefile +2 -1
index f5038f5..46d7c5f 100644
@@ -39,7 +39,7 @@ omap-4-5-common				=  omap4-common.o omap-wakeupgen.o \
 					   sleep44xx.o
 obj-$(CONFIG_ARCH_OMAP4)		+= $(omap-4-5-common) $(smp-y)
 obj-$(CONFIG_SOC_OMAP5)			+= $(omap-4-5-common) $(smp-y)
-obj-$(CONFIG_SOC_AM43XX)		+= $(omap-4-5-common)
+obj-$(CONFIG_SOC_AM43XX)		+= $(omap-4-5-common) $(smp-y)
 
 plus_sec := $(call as-instr,.arch_extension sec,+sec)
 AFLAGS_omap-headsmp.o			:=-Wa,-march=armv7-a$(plus_sec)
@@ -89,6 +89,7 @@ obj-$(CONFIG_ARCH_OMAP2)		+= sleep24xx.o
 obj-$(CONFIG_ARCH_OMAP3)		+= pm34xx.o sleep34xx.o
 obj-$(CONFIG_ARCH_OMAP4)		+= pm44xx.o omap-mpuss-lowpower.o
 obj-$(CONFIG_SOC_OMAP5)			+= omap-mpuss-lowpower.o
+obj-$(CONFIG_SOC_AM43XX)		+= omap-mpuss-lowpower.o
 obj-$(CONFIG_PM_DEBUG)			+= pm-debug.o
 
 obj-$(CONFIG_POWER_AVS_OMAP)		+= sr_device.o
maintainer
#1 lore raw

PATCH 1/1 ARM: omap: make am43xx build with SMP enabled

Quoted 10 lines · Arnd Bergmann

With am43xx enabled, omap4 and omap5 disabled and SMP on, I get these build errors:

arch/arm/mach-omap2/built-in.o: In function `scu_gp_set':
:(.text+0x7858): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function scu_gp_clear':
:(.text+0x793c): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function omap4_cpu_die':
:(.ref.text+0x44): undefined reference to `omap4_hotplug_cpu'

Quoted 8 lines

The easiest way to work around that is to turn on the missing functions, even though we know they won't be used on am43xx, which is single-CPU.

Cc Ankur Kishore <[email protected]>
Cc Afzal Mohammed <[email protected]>
Cc Tony Lindgren <[email protected]>

Looks OK to me:

Quoted 21 lines
arch/arm/mach-omap2/Makefile +2 -1
index f5038f5..46d7c5f 100644
@@ -39,7 +39,7 @@ omap-4-5-common				=  omap4-common.o omap-wakeupgen.o \
 					   sleep44xx.o
 obj-$(CONFIG_ARCH_OMAP4)		+= $(omap-4-5-common) $(smp-y)
 obj-$(CONFIG_SOC_OMAP5)			+= $(omap-4-5-common) $(smp-y)
-obj-$(CONFIG_SOC_AM43XX)		+= $(omap-4-5-common)
+obj-$(CONFIG_SOC_AM43XX)		+= $(omap-4-5-common) $(smp-y)
 
 plus_sec := $(call as-instr,.arch_extension sec,+sec)
 AFLAGS_omap-headsmp.o			:=-Wa,-march=armv7-a$(plus_sec)
@@ -89,6 +89,7 @@ obj-$(CONFIG_ARCH_OMAP2)		+= sleep24xx.o
 obj-$(CONFIG_ARCH_OMAP3)		+= pm34xx.o sleep34xx.o
 obj-$(CONFIG_ARCH_OMAP4)		+= pm44xx.o omap-mpuss-lowpower.o
 obj-$(CONFIG_SOC_OMAP5)			+= omap-mpuss-lowpower.o
+obj-$(CONFIG_SOC_AM43XX)		+= omap-mpuss-lowpower.o
 obj-$(CONFIG_PM_DEBUG)			+= pm-debug.o
 
 obj-$(CONFIG_POWER_AVS_OMAP)		+= sr_device.o
#2 lore raw

PATCH 1/1 ARM: omap: make am43xx build with SMP enabled

Hi,

Quoted 15 lines · Tony Lindgren
Quoted 14 lines · Arnd Bergmann

With am43xx enabled, omap4 and omap5 disabled and SMP on, I get these build errors:

arch/arm/mach-omap2/built-in.o: In function `scu_gp_set':
:(.text+0x7858): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function scu_gp_clear':
:(.text+0x793c): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function omap4_cpu_die':
:(.ref.text+0x44): undefined reference to `omap4_hotplug_cpu'

The easiest way to work around that is to turn on the missing functions, even though we know they won't be used on am43xx, which is single-CPU.

Quoted 8 lines
Quoted 4 lines
Cc Ankur Kishore <[email protected]>
Cc Afzal Mohammed <[email protected]>
Cc Tony Lindgren <[email protected]>

Looks OK to me:

Wait, seeing another build error after applying this patch, I will respond back soon.

Regards
Afzal

#3 lore raw

PATCH 1/1 ARM: omap: make am43xx build with SMP enabled

In reply to Arnd Bergmann

Hi Arnd, Tony,

Quoted 2 lines · Arnd Bergmann

With am43xx enabled, omap4 and omap5 disabled and SMP on, I get these build errors:

Getting AM43x only build with OMAP4/5 disabled was really difficult with original series itself, I thought finally had got a right Makefile change handling SMP combinations too, but still :(, my brain was not big enough to think of multiplatform case :)

Thanks Arnd for the patch.

Quoted 10 lines

arch/arm/mach-omap2/built-in.o: In function `scu_gp_set':
:(.text+0x7858): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function scu_gp_clear':
:(.text+0x793c): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function omap4_cpu_die':
:(.ref.text+0x44): undefined reference to `omap4_hotplug_cpu'

The easiest way to work around that is to turn on the missing functions, even though we know they won't be used on am43xx, which is single-CPU.

This change was giving errors mainly due to unavailable omap4 prcm functions required by "omap-mpuss-lowpower.c"

How about the below patch - we don't need to include additional files with it, or something wrong with it ?

Regards
Afzal

---8<------

From: Afzal Mohammed <[email protected]>
Date: Mon, 24 Jun 2013 12:41:05 +0530
Subject: [PATCH] ARM: OMAP2+: AM43x: resolve SMP related build error

If AM43x and SMP is selected, OMAP4 & OMAP5 deselected, build error as follows,

arch/arm/mach-omap2/built-in.o: In function `scu_gp_set':
arch/arm/mach-omap2/sleep44xx.S:131: undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/sleep44xx.S:132: undefined reference to scu_power_mode' arch/arm/mach-omap2/built-in.o: In function `scu_gp_clear':
arch/arm/mach-omap2/sleep44xx.S:227: undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/sleep44xx.S:229: undefined reference to scu_power_mode'

Resolve it by building sleep44xx.S only for OMAP4 & OMAP5.

---
 arch/arm/mach-omap2/Makefile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
arch/arm/mach-omap2/Makefile +3 -2
index 0520dc4..a6c4187 100644
@@ -35,8 +35,9 @@ obj-$(CONFIG_SOC_HAS_OMAP2_SDRC)      += sdrc.o
 
 smp-$(CONFIG_SMP)                      += omap-smp.o omap-headsmp.o
 smp-$(CONFIG_HOTPLUG_CPU)              += omap-hotplug.o
-omap-4-5-common                                =  omap4-common.o omap-wakeupgen.o \
-                                          sleep44xx.o
+omap-4-5-common                                =  omap4-common.o omap-wakeupgen.o
+obj-$(CONFIG_ARCH_OMAP4)               += sleep44xx.o
+obj-$(CONFIG_SOC_OMAP5)                        += sleep44xx.o
 obj-$(CONFIG_ARCH_OMAP4)               += $(omap-4-5-common) $(smp-y)
 obj-$(CONFIG_SOC_OMAP5)                        += $(omap-4-5-common) $(smp-y)
 obj-$(CONFIG_SOC_AM43XX)               += $(omap-4-5-common)

--

maintainer
#4 lore raw

PATCH 1/1 ARM: omap: make am43xx build with SMP enabled

Quoted 24 lines · Mohammed, Afzal

Hi Arnd, Tony,

Quoted 2 lines · Arnd Bergmann

With am43xx enabled, omap4 and omap5 disabled and SMP on, I get these build errors:

Getting AM43x only build with OMAP4/5 disabled was really difficult with original series itself, I thought finally had got a right Makefile change handling SMP combinations too, but still :(, my brain was not big enough to think of multiplatform case :)

Thanks Arnd for the patch.

Quoted 10 lines

arch/arm/mach-omap2/built-in.o: In function `scu_gp_set':
:(.text+0x7858): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function scu_gp_clear':
:(.text+0x793c): undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/built-in.o: In function omap4_cpu_die':
:(.ref.text+0x44): undefined reference to `omap4_hotplug_cpu'

The easiest way to work around that is to turn on the missing functions, even though we know they won't be used on am43xx, which is single-CPU.

Quoted 5 lines

This change was giving errors mainly due to unavailable omap4 prcm functions required by "omap-mpuss-lowpower.c"

How about the below patch - we don't need to include additional files with it, or something wrong with it ?

This too looks OK to me, sounds like you'll need a separate sleep code anyways. It's probably best that Arnd applies this directly:

Quoted 41 lines

---8<------

From: Afzal Mohammed <[email protected]>
Date: Mon, 24 Jun 2013 12:41:05 +0530
Subject: [PATCH] ARM: OMAP2+: AM43x: resolve SMP related build error

If AM43x and SMP is selected, OMAP4 & OMAP5 deselected, build error as follows,

arch/arm/mach-omap2/built-in.o: In function `scu_gp_set':
arch/arm/mach-omap2/sleep44xx.S:131: undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/sleep44xx.S:132: undefined reference to scu_power_mode' arch/arm/mach-omap2/built-in.o: In function `scu_gp_clear':
arch/arm/mach-omap2/sleep44xx.S:227: undefined reference to omap4_get_scu_base' arch/arm/mach-omap2/sleep44xx.S:229: undefined reference to scu_power_mode'

Resolve it by building sleep44xx.S only for OMAP4 & OMAP5.

---
 arch/arm/mach-omap2/Makefile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
arch/arm/mach-omap2/Makefile +3 -3
index 0520dc4..a6c4187 100644
@@ -35,8 +35,9 @@ obj-$(CONFIG_SOC_HAS_OMAP2_SDRC)      += sdrc.o
 
 smp-$(CONFIG_SMP)                      += omap-smp.o omap-headsmp.o
 smp-$(CONFIG_HOTPLUG_CPU)              += omap-hotplug.o
-omap-4-5-common                                =  omap4-common.o omap-wakeupgen.o \
-                                          sleep44xx.o
+omap-4-5-common                                =  omap4-common.o omap-wakeupgen.o
+obj-$(CONFIG_ARCH_OMAP4)               += sleep44xx.o
+obj-$(CONFIG_SOC_OMAP5)                        += sleep44xx.o
 obj-$(CONFIG_ARCH_OMAP4)               += $(omap-4-5-common) $(smp-y)
 obj-$(CONFIG_SOC_OMAP5)                        += $(omap-4-5-common) $(smp-y)
 obj-$(CONFIG_SOC_AM43XX)               += $(omap-4-5-common)
--