On 11/23/20 8:51 PM, Bjorn Andersson wrote: > On Mon 23 Nov 19:30 CST 2020, Randy Dunlap wrote: > >> The Kconfig symbol ARM_QCOM_SPM_CPUIDLE wildly selects other >> Kconfig symbols when it should not. >> This causes kconfig warnings and subsequent build errors, >> as listed below, so modify this symbol's Kconfig entry to >> constrain and tame it. >> >> WARNING: unmet direct dependencies detected for QCOM_SCM >> Depends on [n]: ARM [=y] && HAVE_ARM_SMCCC [=n] || ARM64 >> Selected by [y]: >> - ARM_QCOM_SPM_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_QCOM [=n] || COMPILE_TEST [=y]) && !ARM64 >> >> WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND >> Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n] >> Selected by [y]: >> - ARM_QCOM_SPM_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_QCOM [=n] || COMPILE_TEST [=y]) && !ARM64 >> >> and >> >> arm-linux-gnueabi-ld: arch/arm/kernel/sleep.o: in function `__cpu_suspend': >> (.text+0x68): undefined reference to `cpu_sa110_suspend_size' >> arm-linux-gnueabi-ld: arch/arm/kernel/suspend.o: in function `__cpu_suspend_save': >> suspend.c:(.text+0x138): undefined reference to `cpu_sa110_do_suspend' >> arm-linux-gnueabi-ld: suspend.c:(.text+0x170): undefined reference to `cpu_sa110_do_resume' >> arm-linux-gnueabi-ld: drivers/firmware/qcom_scm-smc.o: in function `__scm_smc_do_quirk': >> qcom_scm-smc.c:(.text+0x54): 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+0x168): 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+0x2e0): undefined reference to `__arm_smccc_smc' >> >> Fixes: a871be6b8eee ("cpuidle: Convert Qualcomm SPM driver to a generic CPUidle driver") >> Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> >> Reported-by: kernel test robot <lkp@xxxxxxxxx> >> Cc: linux-pm@xxxxxxxxxxxxxxx >> Cc: Andy Gross <agross@xxxxxxxxxx> >> Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> >> Cc: linux-arm-msm@xxxxxxxxxxxxxxx >> Cc: "Rafael J. Wysocki" <rjw@xxxxxxxxxxxxx> >> Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> >> Cc: Stephan Gerhold <stephan@xxxxxxxxxxx> >> Cc: Lina Iyer <ilina@xxxxxxxxxxxxxx> >> Cc: Ulf Hansson <ulf.hansson@xxxxxxxxxx> >> Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> >> --- >> drivers/cpuidle/Kconfig.arm | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> --- linux-next-20201123.orig/drivers/cpuidle/Kconfig.arm >> +++ linux-next-20201123/drivers/cpuidle/Kconfig.arm >> @@ -108,10 +108,11 @@ 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 >> + depends on PM >> select ARM_CPU_SUSPEND >> select CPU_IDLE_MULTIPLE_DRIVERS >> select DT_IDLE_STATES >> - select QCOM_SCM >> + select QCOM_SCM if HAVE_ARM_SMCCC > > I presume the trigger for this error is that 'd0511b5496c0 ("firmware: > QCOM_SCM: Allow qcom_scm driver to be loadable as a permenent module")' > made QCOM_SCM user selectable and described the dependency on > HAVE_ARM_SMCCC.. I don't quite see that as contributing to the problem, but maybe it's just too late at night for me to see it. > So given that, and the fact that this driver doesn't do anything without > QCOM_SCM, can we instead make it "depends on QCOM_SCM"? I believe it > would inherit the dependency of HAVE_ARM_SMCCC in this case? Sure, I'll respin it like that. > Regards, > Bjorn > >> help >> Select this to enable cpuidle for Qualcomm processors. >> The Subsystem Power Manager (SPM) controls low power modes for the thanks. -- ~Randy