Skip to contentSkip to conversation

ARM: avoid cpuidle link warning

PATCH Applied Arnd Bergmann 4 participants 6 messages Dec 30, 2020 – Jun 4, 2021 Arm (32-bit)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: avoid cpuidle link warning

From: Arnd Bergmann <[email protected]>

Since commit 83109d5d5fba ("x86/build: Warn on orphan section placement"), we get a warning for objects in orphan sections. The cpuidle implementation for OMAP causes this when CONFIG_CPU_IDLE is disabled:

arm-linux-gnueabi-ld: warning: orphan section __cpuidle_method_of_table' from arch/arm/mach-omap2/pm33xx-core.o' being placed in section `__cpuidle_method_of_table'
arm-linux-gnueabi-ld: warning: orphan section __cpuidle_method_of_table' from arch/arm/mach-omap2/pm33xx-core.o' being placed in section `__cpuidle_method_of_table'
arm-linux-gnueabi-ld: warning: orphan section __cpuidle_method_of_table' from arch/arm/mach-omap2/pm33xx-core.o' being placed in section `__cpuidle_method_of_table'

Change the definition of CPUIDLE_METHOD_OF_DECLARE() to silently drop the table and all code referenced from it when CONFIG_CPU_IDLE is disabled.

Fixes 06ee7a950b6a ("ARM: OMAP2+: pm33xx-core: Add cpuidle_ops for am335x/am437x")
---
 arch/arm/include/asm/cpuidle.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
arch/arm/include/asm/cpuidle.h +3 -2
index 0d67ed682e07..bc4ffa7ca04c 100644
@@ -7,9 +7,11 @@
 #ifdef CONFIG_CPU_IDLE
 extern int arm_cpuidle_simple_enter(struct cpuidle_device *dev,
 		struct cpuidle_driver *drv, int index);
+#define __cpuidle_method_section __used __section("__cpuidle_method_of_table")
 #else
 static inline int arm_cpuidle_simple_enter(struct cpuidle_device *dev,
 		struct cpuidle_driver *drv, int index) { return -ENODEV; }
+#define __cpuidle_method_section __maybe_unused /* drop silently */
 #endif
 
 /* Common ARM WFI state */
@@ -42,8 +44,7 @@ struct of_cpuidle_method {
 
 #define CPUIDLE_METHOD_OF_DECLARE(name, _method, _ops)			\
 	static const struct of_cpuidle_method __cpuidle_method_of_table_##name \
-	__used __section("__cpuidle_method_of_table")			\
-	= { .method = _method, .ops = _ops }
+	__cpuidle_method_section = { .method = _method, .ops = _ops }
 
 extern int arm_cpuidle_suspend(int index);
 
Signature · 1 line
2.29.2
Reviewed-by on v1 1/1
#1 lore raw
Quoted 4 lines · Arnd Bergmann

Change the definition of CPUIDLE_METHOD_OF_DECLARE() to silently drop the table and all code referenced from it when CONFIG_CPU_IDLE is disabled.

Looks good,

Cheers,
Miguel

#2 lore raw
In reply to Arnd Bergmann
Quoted 4 lines · Arnd Bergmann

Change the definition of CPUIDLE_METHOD_OF_DECLARE() to silently drop the table and all code referenced from it when CONFIG_CPU_IDLE is disabled.

Re-Cc'ing Nick (Arnd's email had a wrong address).

Cheers,
Miguel

#4 lore raw
Quoted 8 lines · Nick Desaulniers
Quoted 2 lines

Since commit 83109d5d5fba ("x86/build: Warn on orphan section placement"),

Might be better to use:
commit 5a17850e251a ("arm/build: Warn on orphan section placement")

Which tree were you planning on sending this through? 0day bot just pinged us again about this.
https://github.com/ClangBuiltLinux/linux/issues/1372

Signature · 2 lines
Thanks,
~Nick Desaulniers
Applied
#5 lore raw
In reply to Arnd Bergmann
Quoted 9 lines · Arnd Bergmann

Since commit 83109d5d5fba ("x86/build: Warn on orphan section placement"), we get a warning for objects in orphan sections. The cpuidle implementation for OMAP causes this when CONFIG_CPU_IDLE is disabled:

arm-linux-gnueabi-ld: warning: orphan section __cpuidle_method_of_table' from arch/arm/mach-omap2/pm33xx-core.o' being placed in section `__cpuidle_method_of_table'
arm-linux-gnueabi-ld: warning: orphan section __cpuidle_method_of_table' from arch/arm/mach-omap2/pm33xx-core.o' being placed in section `__cpuidle_method_of_table'
arm-linux-gnueabi-ld: warning: orphan section __cpuidle_method_of_table' from arch/arm/mach-omap2/pm33xx-core.o' being placed in section `__cpuidle_method_of_table'

[...]

Applied to for-next/orphans, thanks!

[1/1] ARM: cpuidle: Avoid orphan section warning

      https://git.kernel.org/kees/c/d94b93a91015
Signature · 1 line
Kees Cook