]> git.baikalelectronics.ru Git - kernel.git/commit
qcom_scm: hide Kconfig symbol
authorArnd Bergmann <arnd@arndb.de>
Tue, 28 Sep 2021 07:50:27 +0000 (09:50 +0200)
committerArnd Bergmann <arnd@arndb.de>
Thu, 7 Oct 2021 14:51:57 +0000 (16:51 +0200)
commit424953cf3c6657f1e67e1a2c5d6e3bb518ea4e9a
treef2ba090039327a128eb7de2596a867a1dd01d197
parent951cd3a0866d29cb9c01ebc1d9c17590e598226e
qcom_scm: hide Kconfig symbol

Now that SCM can be a loadable module, we have to add another
dependency to avoid link failures when ipa or adreno-gpu are
built-in:

aarch64-linux-ld: drivers/net/ipa/ipa_main.o: in function `ipa_probe':
ipa_main.c:(.text+0xfc4): undefined reference to `qcom_scm_is_available'

ld.lld: error: undefined symbol: qcom_scm_is_available
>>> referenced by adreno_gpu.c
>>>               gpu/drm/msm/adreno/adreno_gpu.o:(adreno_zap_shader_load) in archive drivers/built-in.a

This can happen when CONFIG_ARCH_QCOM is disabled and we don't select
QCOM_MDT_LOADER, but some other module selects QCOM_SCM. Ideally we'd
use a similar dependency here to what we have for QCOM_RPROC_COMMON,
but that causes dependency loops from other things selecting QCOM_SCM.

This appears to be an endless problem, so try something different this
time:

 - CONFIG_QCOM_SCM becomes a hidden symbol that nothing 'depends on'
   but that is simply selected by all of its users

 - All the stubs in include/linux/qcom_scm.h can go away

 - arm-smccc.h needs to provide a stub for __arm_smccc_smc() to
   allow compile-testing QCOM_SCM on all architectures.

 - To avoid a circular dependency chain involving RESET_CONTROLLER
   and PINCTRL_SUNXI, drop the 'select RESET_CONTROLLER' statement.
   According to my testing this still builds fine, and the QCOM
   platform selects this symbol already.

Acked-by: Kalle Valo <kvalo@codeaurora.org>
Acked-by: Alex Elder <elder@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
12 files changed:
drivers/firmware/Kconfig
drivers/gpu/drm/msm/Kconfig
drivers/iommu/Kconfig
drivers/iommu/arm/arm-smmu/Makefile
drivers/iommu/arm/arm-smmu/arm-smmu-impl.c
drivers/media/platform/Kconfig
drivers/mmc/host/Kconfig
drivers/net/ipa/Kconfig
drivers/net/wireless/ath/ath10k/Kconfig
drivers/pinctrl/qcom/Kconfig
include/linux/arm-smccc.h
include/linux/qcom_scm.h