Skip to contentSkip to conversation

cpuidle: tegra: add ARCH_SUSPEND_POSSIBLE dependency

PATCH In review Arnd Bergmann 3 participants 8 messages Oct 13, 2021 – Mar 16, 2022 CPU idle time management framework

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 cpuidle: tegra: add ARCH_SUSPEND_POSSIBLE dependency

From: Arnd Bergmann <[email protected]>

Some StrongARM processors don't support suspend, which leads to a build failure with the tegra cpuidle driver:

WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
Selected by [y]:
- ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

arch/arm/kernel/sleep.o: in function `__cpu_suspend':
(.text+0x68): undefined reference to `cpu_sa110_suspend_size'

Add an explicit dependency to make randconfig builds avoid this combination.

Fixes faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
---
 drivers/cpuidle/Kconfig.arm | 1 +
 1 file changed, 1 insertion(+)
drivers/cpuidle/Kconfig.arm +1 -0
index 2cc3c208a180..af97992eaa82 100644
@@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
 	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
 	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+	depends on ARCH_SUSPEND_POSSIBLE
 	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
 	select ARM_CPU_SUSPEND
 	help
Signature · 1 line
2.29.2
#1 lore raw

13.10.2021 19:01, Arnd Bergmann пишет:

Quoted 28 lines

From: Arnd Bergmann <[email protected]>

Some StrongARM processors don't support suspend, which leads to a build failure with the tegra cpuidle driver:

WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
Selected by [y]:
- ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

arch/arm/kernel/sleep.o: in function `__cpu_suspend':
(.text+0x68): undefined reference to `cpu_sa110_suspend_size'

Add an explicit dependency to make randconfig builds avoid this combination.

Fixes faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
---
 drivers/cpuidle/Kconfig.arm | 1 +
 1 file changed, 1 insertion(+)
drivers/cpuidle/Kconfig.arm +0 -0
index 2cc3c208a180..af97992eaa82 100644

drivers/cpuidle/Kconfig.arm config ARM_MVEBU_V7_CPUIDLE · line 106

Quoted 7 lines
drivers/cpuidle/Kconfig.arm +1 -0
@@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
 	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
 	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+	depends on ARCH_SUSPEND_POSSIBLE
 	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
 	select ARM_CPU_SUSPEND
 	help

Arnd, thank you for the patch!

Apparently ARM_QCOM_SPM_CPUIDLE doesn't have that problem visible because it selects QCOM_SPM, which depends on ARCH_QCOM, and thus ARCH_QCOM should be auto-selected(?). I'm curious whether this needs to be corrected, otherwise (ARCH_QCOM || COMPILE_TEST) doesn't make much sense for that driver. And then it will need the same Kconfig fix as well.

I assume this problem wasn't caught by regular kernel build bots because they don't test randconfig, don't they?

#2 lore raw
Quoted 16 lines · Dmitry Osipenko

drivers/cpuidle/Kconfig.arm config ARM_MVEBU_V7_CPUIDLE · line 106

Quoted 13 lines
drivers/cpuidle/Kconfig.arm +1 -0
index 2cc3c208a180..af97992eaa82 100644
@@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
      bool "CPU Idle Driver for NVIDIA Tegra SoCs"
      depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+     depends on ARCH_SUSPEND_POSSIBLE
      select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
      select ARM_CPU_SUSPEND
      help

Arnd, thank you for the patch!

Quoted 3 lines

Apparently ARM_QCOM_SPM_CPUIDLE doesn't have that problem visible because it selects QCOM_SPM, which depends on ARCH_QCOM, and thus ARCH_QCOM should be auto-selected(?).

No, that's not how it works. In fact ARM_QCOM_SPM_CPUIDLE has the exact same problem. I tried to check if there are other drivers affected by this problem before I sent my patch, but I did something wrong and missed this one.

Quoted 6 lines

I'm curious whether this needs to
be corrected, otherwise (ARCH_QCOM || COMPILE_TEST) doesn't make much sense for that driver. And then it will need the same Kconfig fix as well.

I assume this problem wasn't caught by regular kernel build bots because they don't test randconfig, don't they?

They do test randconfig builds, but only a few of them. This one is rather hard to hit, it probably took me 100 builds before I hit the first one and I haven't run into the QCOM one yet, though I did see a different issue for ARM_QCOM_SPM_CPUIDLE:

WARNING: unmet direct dependencies detected for QCOM_SPM
Depends on [n]: ARCH_QCOM [=n]
Selected by [y]:
- ARM_QCOM_SPM_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64)
&& (ARCH_QCOM [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

Arnd

#3 lore raw

14.10.2021 00:55, Arnd Bergmann пишет:

Quoted 38 lines · Dmitry Osipenko
Quoted 16 lines

drivers/cpuidle/Kconfig.arm config ARM_MVEBU_V7_CPUIDLE · line 106

Quoted 13 lines
drivers/cpuidle/Kconfig.arm +1 -0
index 2cc3c208a180..af97992eaa82 100644
@@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
      bool "CPU Idle Driver for NVIDIA Tegra SoCs"
      depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+     depends on ARCH_SUSPEND_POSSIBLE
      select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
      select ARM_CPU_SUSPEND
      help

Arnd, thank you for the patch!

Quoted 3 lines

Apparently ARM_QCOM_SPM_CPUIDLE doesn't have that problem visible because it selects QCOM_SPM, which depends on ARCH_QCOM, and thus ARCH_QCOM should be auto-selected(?).

No, that's not how it works. In fact ARM_QCOM_SPM_CPUIDLE has the exact same problem. I tried to check if there are other drivers affected by this problem before I sent my patch, but I did something wrong and missed this one.

Quoted 6 lines

I'm curious whether this needs to
be corrected, otherwise (ARCH_QCOM || COMPILE_TEST) doesn't make much sense for that driver. And then it will need the same Kconfig fix as well.

I assume this problem wasn't caught by regular kernel build bots because they don't test randconfig, don't they?

They do test randconfig builds, but only a few of them. This one is rather hard to hit, it probably took me 100 builds before I hit the first one and I haven't run into the QCOM one yet, though I did see a different issue for ARM_QCOM_SPM_CPUIDLE:

Quoted 5 lines

WARNING: unmet direct dependencies detected for QCOM_SPM
Depends on [n]: ARCH_QCOM [=n]
Selected by [y]:
- ARM_QCOM_SPM_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64)
&& (ARCH_QCOM [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

This is exactly what I expected, thank you for fixing all this!

Reviewed-by on v1 1/1
#4 lore raw
In reply to Arnd Bergmann

13.10.2021 19:01, Arnd Bergmann пишет:

Quoted 28 lines

From: Arnd Bergmann <[email protected]>

Some StrongARM processors don't support suspend, which leads to a build failure with the tegra cpuidle driver:

WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
Selected by [y]:
- ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

arch/arm/kernel/sleep.o: in function `__cpu_suspend':
(.text+0x68): undefined reference to `cpu_sa110_suspend_size'

Add an explicit dependency to make randconfig builds avoid this combination.

Fixes faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
---
 drivers/cpuidle/Kconfig.arm | 1 +
 1 file changed, 1 insertion(+)
drivers/cpuidle/Kconfig.arm +0 -0
index 2cc3c208a180..af97992eaa82 100644

drivers/cpuidle/Kconfig.arm config ARM_MVEBU_V7_CPUIDLE · line 106

Quoted 7 lines
drivers/cpuidle/Kconfig.arm +1 -0
@@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
 	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
 	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+	depends on ARCH_SUSPEND_POSSIBLE
 	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
 	select ARM_CPU_SUSPEND
 	help
#5 lore raw
Quoted 24 lines · Dmitry Osipenko

13.10.2021 19:01, Arnd Bergmann пишет:

Quoted 22 lines

From: Arnd Bergmann <[email protected]>

Some StrongARM processors don't support suspend, which leads to a build failure with the tegra cpuidle driver:

WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
Selected by [y]:
- ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

arch/arm/kernel/sleep.o: in function `__cpu_suspend':
(.text+0x68): undefined reference to `cpu_sa110_suspend_size'

Add an explicit dependency to make randconfig builds avoid this combination.

Fixes faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
---
 drivers/cpuidle/Kconfig.arm | 1 +
 1 file changed, 1 insertion(+)
Quoted 15 lines

drivers/cpuidle/Kconfig.arm config ARM_MVEBU_V7_CPUIDLE · line 106

Quoted 13 lines
drivers/cpuidle/Kconfig.arm +1 -0
index 2cc3c208a180..af97992eaa82 100644
@@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
      bool "CPU Idle Driver for NVIDIA Tegra SoCs"
      depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+     depends on ARCH_SUSPEND_POSSIBLE
      select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
      select ARM_CPU_SUSPEND
      help

Thanks!

I realized now that we should drop the '&& MMU' after my fix, for both the tegra and qualcomm drivers, reverting the change from 498ba2a8a275 ("cpuidle: Fix ARM_QCOM_SPM_CPUIDLE configuration") that got failed to fix this problem. I'll resend it as a series of three patches with your R-b on this patch.

On a related note, I now see that the "||COMPILE_TEST" bit for the arm-specific cpuidle drivers is not all that useful because we can curently not hit that on non-ARM machines at all. I'll try changing that as well, but this is probably nontrivial.

Arnd

#6 lore raw

14.10.2021 17:41, Arnd Bergmann пишет:

Quoted 49 lines · Dmitry Osipenko
Quoted 24 lines

13.10.2021 19:01, Arnd Bergmann пишет:

Quoted 22 lines

From: Arnd Bergmann <[email protected]>

Some StrongARM processors don't support suspend, which leads to a build failure with the tegra cpuidle driver:

WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
Selected by [y]:
- ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

arch/arm/kernel/sleep.o: in function `__cpu_suspend':
(.text+0x68): undefined reference to `cpu_sa110_suspend_size'

Add an explicit dependency to make randconfig builds avoid this combination.

Fixes faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
---
 drivers/cpuidle/Kconfig.arm | 1 +
 1 file changed, 1 insertion(+)
Quoted 15 lines

drivers/cpuidle/Kconfig.arm config ARM_MVEBU_V7_CPUIDLE · line 106

Quoted 13 lines
drivers/cpuidle/Kconfig.arm +1 -0
index 2cc3c208a180..af97992eaa82 100644
@@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
      bool "CPU Idle Driver for NVIDIA Tegra SoCs"
      depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+     depends on ARCH_SUSPEND_POSSIBLE
      select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
      select ARM_CPU_SUSPEND
      help

Thanks!

I realized now that we should drop the '&& MMU' after my fix, for both the tegra and qualcomm drivers, reverting the change from 498ba2a8a275 ("cpuidle: Fix ARM_QCOM_SPM_CPUIDLE configuration") that got failed to fix this problem. I'll resend it as a series of three patches with your R-b on this patch.

Quoted 4 lines

On a related note, I now see that the "||COMPILE_TEST" bit for the arm-specific cpuidle drivers is not all that useful because we can curently not hit that on non-ARM machines at all. I'll try changing that as well, but this is probably nontrivial.

Ack

Reviewed-by
#7 lore raw
In reply to Dmitry Osipenko
Quoted 23 lines · Dmitry Osipenko

13.10.2021 19:01, Arnd Bergmann пишет:

Quoted 22 lines

From: Arnd Bergmann <[email protected]>

Some StrongARM processors don't support suspend, which leads to a build failure with the tegra cpuidle driver:

WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
Selected by [y]:
- ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

arch/arm/kernel/sleep.o: in function `__cpu_suspend':
(.text+0x68): undefined reference to `cpu_sa110_suspend_size'

Add an explicit dependency to make randconfig builds avoid this combination.

Fixes faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
---
 drivers/cpuidle/Kconfig.arm | 1 +
 1 file changed, 1 insertion(+)
Quoted 15 lines

drivers/cpuidle/Kconfig.arm config ARM_MVEBU_V7_CPUIDLE · line 106

Quoted 13 lines
drivers/cpuidle/Kconfig.arm +1 -0
index 2cc3c208a180..af97992eaa82 100644
@@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
 	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
 	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+	depends on ARCH_SUSPEND_POSSIBLE
 	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
 	select ARM_CPU_SUSPEND
 	help

What is the status of this patch, please?

kernel test robot is still reporting this build error, so I just created the same patch...

thanks.

Signature · 1 line
~Randy