Skip to contentSkip to conversation

cpuidle: big.LITTLE: add MCPM dependency

PATCH New Arnd Bergmann 3 participants 4 messages Jul 14, 2014

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

PATCH 1/1 cpuidle: big.LITTLE: add MCPM dependency

662322fcb6d ("cpuidle: big.LITTLE: Add ARCH_EXYNOS entry in config") made it possible for the big-little cpuidle driver to run on exynos, which may or may not include MCPM support at compile time, so we run into a link error when it is disabled:

drivers/built-in.o: In function `bl_enter_powerdown':
:(.text+0x1889a0): undefined reference to mcpm_cpu_powered_up' drivers/built-in.o: In function bl_powerdown_finisher':
:(.text+0x1889e8): undefined reference to mcpm_set_entry_vector' :(.text+0x1889ec): undefined reference to mcpm_cpu_suspend'

This adds an explicit dependency to CONFIG_MCPM to avoid that case.

Cc Chander Kashyap <[email protected]>
Cc Tomasz Figa <[email protected]>
Cc Daniel Lezcano <[email protected]>

---
I believe the broken commit is only present in the samsung/for-next tree (through v3.17-next/cpuidle-exynos), so it should be fixed there.

On a side note, I wonder if we should have platform dependencies at all, or just the MCPM dependency by itself.

drivers/cpuidle/Kconfig.arm +1 -0
index 2f6b33ea6e08..459b7c91407a 100644
@@ -10,6 +10,7 @@ config ARM_ARMADA_370_XP_CPUIDLE
 config ARM_BIG_LITTLE_CPUIDLE
 	bool "Support for ARM big.LITTLE processors"
 	depends on ARCH_VEXPRESS_TC2_PM || ARCH_EXYNOS
+	depends on MCPM
 	select ARM_CPU_SUSPEND
 	select CPU_IDLE_MULTIPLE_DRIVERS
 	help
#1 lore raw

PATCH 1/1 cpuidle: big.LITTLE: add MCPM dependency

Quoted 18 lines · Arnd Bergmann

662322fcb6d ("cpuidle: big.LITTLE: Add ARCH_EXYNOS entry in config") made it possible for the big-little cpuidle driver to run on exynos, which may or may not include MCPM support at compile time, so we run into a link error when it is disabled:

drivers/built-in.o: In function `bl_enter_powerdown':
:(.text+0x1889a0): undefined reference to mcpm_cpu_powered_up' drivers/built-in.o: In function bl_powerdown_finisher':
:(.text+0x1889e8): undefined reference to mcpm_set_entry_vector' :(.text+0x1889ec): undefined reference to mcpm_cpu_suspend'

This adds an explicit dependency to CONFIG_MCPM to avoid that case.

Cc Chander Kashyap <[email protected]>
Cc Tomasz Figa <[email protected]>
Cc Daniel Lezcano <[email protected]>
Quoted 6 lines

---
I believe the broken commit is only present in the samsung/for-next tree (through v3.17-next/cpuidle-exynos), so it should be fixed there.

On a side note, I wonder if we should have platform dependencies at all, or just the MCPM dependency by itself.

This was discussed in some other thread already but I'm too lazy to dig a reference to it.

Only a dependency on MCPM alone is needed here. And then:

Quoted 21 lines
drivers/cpuidle/Kconfig.arm +1 -0
index 2f6b33ea6e08..459b7c91407a 100644
@@ -10,6 +10,7 @@ config ARM_ARMADA_370_XP_CPUIDLE
 config ARM_BIG_LITTLE_CPUIDLE
 	bool "Support for ARM big.LITTLE processors"
 	depends on ARCH_VEXPRESS_TC2_PM || ARCH_EXYNOS
+	depends on MCPM
 	select ARM_CPU_SUSPEND
 	select CPU_IDLE_MULTIPLE_DRIVERS
 	help

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

#2 lore raw

PATCH 1/1 cpuidle: big.LITTLE: add MCPM dependency

In reply to Arnd Bergmann
Quoted 29 lines · Arnd Bergmann

662322fcb6d ("cpuidle: big.LITTLE: Add ARCH_EXYNOS entry in config") made it possible for the big-little cpuidle driver to run on exynos, which may or may not include MCPM support at compile time, so we run into a link error when it is disabled:

drivers/built-in.o: In function `bl_enter_powerdown':
:(.text+0x1889a0): undefined reference to mcpm_cpu_powered_up' drivers/built-in.o: In function bl_powerdown_finisher':
:(.text+0x1889e8): undefined reference to mcpm_set_entry_vector' :(.text+0x1889ec): undefined reference to mcpm_cpu_suspend'

This adds an explicit dependency to CONFIG_MCPM to avoid that case.

Cc Chander Kashyap <[email protected]>
Cc Tomasz Figa <[email protected]>
Cc Daniel Lezcano <[email protected]>

---
I believe the broken commit is only present in the samsung/for-next tree (through v3.17-next/cpuidle-exynos), so it should be fixed there.

On a side note, I wonder if we should have platform dependencies at all, or just the MCPM dependency by itself.

drivers/cpuidle/Kconfig.arm +0 -0
index 2f6b33ea6e08..459b7c91407a 100644

drivers/cpuidle/Kconfig.arm config ARM_ARMADA_370_XP_CPUIDLE · line 13

Quoted 4 lines
drivers/cpuidle/Kconfig.arm +1 -0
@@ -10,6 +10,7 @@ config ARM_ARMADA_370_XP_CPUIDLE
  config ARM_BIG_LITTLE_CPUIDLE
  	bool "Support for ARM big.LITTLE processors"
  	depends on ARCH_VEXPRESS_TC2_PM || ARCH_EXYNOS
+	depends on MCPM

Why do we want to depend on MCPM ? If I want to enable the cpuidle driver, the Kconfig should select the dependencies instead of letting the user to figure out what dependency is missing in order to enable the cpuidle option, no ?

+ select MCPM

Quoted 4 lines
drivers/cpuidle/Kconfig.arm +0 -0
  	select ARM_CPU_SUSPEND
  	select CPU_IDLE_MULTIPLE_DRIVERS
  	help
Signature · 5 lines
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
#3 lore raw

PATCH 1/1 cpuidle: big.LITTLE: add MCPM dependency

Quoted 13 lines · On Monday 14 July 2014 20:44:50 Daniel Lezcano wrote:

drivers/cpuidle/Kconfig.arm config ARM_ARMADA_370_XP_CPUIDLE · line 13

Quoted 7 lines
drivers/cpuidle/Kconfig.arm +1 -0
@@ -10,6 +10,7 @@ config ARM_ARMADA_370_XP_CPUIDLE
  config ARM_BIG_LITTLE_CPUIDLE
      bool "Support for ARM big.LITTLE processors"
      depends on ARCH_VEXPRESS_TC2_PM || ARCH_EXYNOS
+     depends on MCPM

Why do we want to depend on MCPM ? If I want to enable the cpuidle driver, the Kconfig should select the dependencies instead of letting the user to figure out what dependency is missing in order to enable the cpuidle option, no ?

Quoted 2 lines

+ select MCPM

MCPM is a user-selectable option, which doesn't mix well with 'select'.

If you want to use 'select' here, better also change

bool "Multi-Cluster Power Management"

to just

bool

in the ARM global Kconfig. The normal way to deal with these dependencies though is to have platforms 'select' the features they allow and have device drivers 'depends on' the same symbol.

Arnd