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.. 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? Regards, Bjorn > help > Select this to enable cpuidle for Qualcomm processors. > The Subsystem Power Manager (SPM) controls low power modes for the