2021-06-06 19:02:08

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH] cpuidle: ARM_QCOM_SPM_CPUIDLE should depend on HAVE_ARM_SMCCC

QCOM_SCM depends on HAVE_ARM_SMCCC, so ARM_QCOM_SPM_CPUIDLE should
also depend on HAVE_ARM_SMCCC since 'select' does not follow any
dependency chains.

This fixes a kconfig warning and subsequent build errors:

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

arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-smc.o: in function `__scm_smc_do_quirk':
qcom_scm-smc.c:(.text+0x5c): undefined reference to `__arm_smccc_smc'
arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-legacy.o: in function `scm_legacy_call':
qcom_scm-legacy.c:(.text+0x140): undefined reference to `__arm_smccc_smc'
arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-legacy.o: in function `scm_legacy_call_atomic':
qcom_scm-legacy.c:(.text+0x364): undefined reference to `__arm_smccc_smc'

Fixes: a871be6b8eee ("cpuidle: Convert Qualcomm SPM driver to a generic CPUidle driver")
Signed-off-by: Randy Dunlap <[email protected]>
Cc: Stephan Gerhold <[email protected]>
Cc: Rafael J. Wysocki <[email protected]>
Cc: Andy Gross <[email protected]>
Cc: Bjorn Andersson <[email protected]>
Cc: [email protected]
Cc: He Ying <[email protected]>
---
drivers/cpuidle/Kconfig.arm | 1 +
1 file changed, 1 insertion(+)

--- linux-next-20210604.orig/drivers/cpuidle/Kconfig.arm
+++ linux-next-20210604/drivers/cpuidle/Kconfig.arm
@@ -108,6 +108,7 @@ config ARM_TEGRA_CPUIDLE
config ARM_QCOM_SPM_CPUIDLE
bool "CPU Idle Driver for Qualcomm Subsystem Power Manager (SPM)"
depends on (ARCH_QCOM || COMPILE_TEST) && !ARM64 && MMU
+ depends on HAVE_ARM_SMCCC
select ARM_CPU_SUSPEND
select CPU_IDLE_MULTIPLE_DRIVERS
select DT_IDLE_STATES


2021-06-07 11:55:11

by Stephan Gerhold

[permalink] [raw]
Subject: Re: [PATCH] cpuidle: ARM_QCOM_SPM_CPUIDLE should depend on HAVE_ARM_SMCCC

Hi!

On Sun, Jun 06, 2021 at 12:00:48PM -0700, Randy Dunlap wrote:
> QCOM_SCM depends on HAVE_ARM_SMCCC, so ARM_QCOM_SPM_CPUIDLE should
> also depend on HAVE_ARM_SMCCC since 'select' does not follow any
> dependency chains.
>
> This fixes a kconfig warning and subsequent build errors:
>
> WARNING: unmet direct dependencies detected for QCOM_SCM
> Depends on [n]: (ARM [=y] || ARM64) && HAVE_ARM_SMCCC [=n]
> Selected by [y]:
> - ARM_QCOM_SPM_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_QCOM [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]
>
> arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-smc.o: in function `__scm_smc_do_quirk':
> qcom_scm-smc.c:(.text+0x5c): undefined reference to `__arm_smccc_smc'
> arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-legacy.o: in function `scm_legacy_call':
> qcom_scm-legacy.c:(.text+0x140): undefined reference to `__arm_smccc_smc'
> arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-legacy.o: in function `scm_legacy_call_atomic':
> qcom_scm-legacy.c:(.text+0x364): undefined reference to `__arm_smccc_smc'
>
> Fixes: a871be6b8eee ("cpuidle: Convert Qualcomm SPM driver to a generic CPUidle driver")
> Signed-off-by: Randy Dunlap <[email protected]>
> Cc: Stephan Gerhold <[email protected]>
> Cc: Rafael J. Wysocki <[email protected]>
> Cc: Andy Gross <[email protected]>
> Cc: Bjorn Andersson <[email protected]>
> Cc: [email protected]
> Cc: He Ying <[email protected]>

There was a similar patch from Arnd a while ago (which fixes another
warning for ARM_CPU_SUSPEND?):

https://lore.kernel.org/linux-pm/[email protected]/

I'm not sure who is supposed to pick it up. :)

Thanks!
Stephan

> ---
> drivers/cpuidle/Kconfig.arm | 1 +
> 1 file changed, 1 insertion(+)
>
> --- linux-next-20210604.orig/drivers/cpuidle/Kconfig.arm
> +++ linux-next-20210604/drivers/cpuidle/Kconfig.arm
> @@ -108,6 +108,7 @@ config ARM_TEGRA_CPUIDLE
> config ARM_QCOM_SPM_CPUIDLE
> bool "CPU Idle Driver for Qualcomm Subsystem Power Manager (SPM)"
> depends on (ARCH_QCOM || COMPILE_TEST) && !ARM64 && MMU
> + depends on HAVE_ARM_SMCCC
> select ARM_CPU_SUSPEND
> select CPU_IDLE_MULTIPLE_DRIVERS
> select DT_IDLE_STATES

2021-06-07 17:32:14

by Wysocki, Rafael J

[permalink] [raw]
Subject: Re: [PATCH] cpuidle: ARM_QCOM_SPM_CPUIDLE should depend on HAVE_ARM_SMCCC

On 6/7/2021 1:53 PM, Stephan Gerhold wrote:
> Hi!
>
> On Sun, Jun 06, 2021 at 12:00:48PM -0700, Randy Dunlap wrote:
>> QCOM_SCM depends on HAVE_ARM_SMCCC, so ARM_QCOM_SPM_CPUIDLE should
>> also depend on HAVE_ARM_SMCCC since 'select' does not follow any
>> dependency chains.
>>
>> This fixes a kconfig warning and subsequent build errors:
>>
>> WARNING: unmet direct dependencies detected for QCOM_SCM
>> Depends on [n]: (ARM [=y] || ARM64) && HAVE_ARM_SMCCC [=n]
>> Selected by [y]:
>> - ARM_QCOM_SPM_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_QCOM [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]
>>
>> arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-smc.o: in function `__scm_smc_do_quirk':
>> qcom_scm-smc.c:(.text+0x5c): undefined reference to `__arm_smccc_smc'
>> arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-legacy.o: in function `scm_legacy_call':
>> qcom_scm-legacy.c:(.text+0x140): undefined reference to `__arm_smccc_smc'
>> arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-legacy.o: in function `scm_legacy_call_atomic':
>> qcom_scm-legacy.c:(.text+0x364): undefined reference to `__arm_smccc_smc'
>>
>> Fixes: a871be6b8eee ("cpuidle: Convert Qualcomm SPM driver to a generic CPUidle driver")
>> Signed-off-by: Randy Dunlap <[email protected]>
>> Cc: Stephan Gerhold <[email protected]>
>> Cc: Rafael J. Wysocki <[email protected]>
>> Cc: Andy Gross <[email protected]>
>> Cc: Bjorn Andersson <[email protected]>
>> Cc: [email protected]
>> Cc: He Ying <[email protected]>
> There was a similar patch from Arnd a while ago (which fixes another
> warning for ARM_CPU_SUSPEND?):
>
> https://lore.kernel.org/linux-pm/[email protected]/
>
> I'm not sure who is supposed to pick it up. :)

ARM cpuidle drivers are maintained by Daniel Lezcano.

Also, please CC power management material to [email protected].


>
>> ---
>> drivers/cpuidle/Kconfig.arm | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> --- linux-next-20210604.orig/drivers/cpuidle/Kconfig.arm
>> +++ linux-next-20210604/drivers/cpuidle/Kconfig.arm
>> @@ -108,6 +108,7 @@ config ARM_TEGRA_CPUIDLE
>> config ARM_QCOM_SPM_CPUIDLE
>> bool "CPU Idle Driver for Qualcomm Subsystem Power Manager (SPM)"
>> depends on (ARCH_QCOM || COMPILE_TEST) && !ARM64 && MMU
>> + depends on HAVE_ARM_SMCCC
>> select ARM_CPU_SUSPEND
>> select CPU_IDLE_MULTIPLE_DRIVERS
>> select DT_IDLE_STATES