Re: [PATCH v4 0/3] soc: qcom: ubwc: Fix link error
Nathan Chancellor <[email protected]>
| Newsgroups | dev.linux.lists.imx,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260813232350.GA312295@ax162> |
Hi Daniel, On Wed, Aug 12, 2026 at 06:19:31PM +0300, Daniel Baluta wrote: > Fix link error caused by the fact that drivers/soc/qcom/ubwc_config.c > enabled via QCOM_UBWC_CONFIG uses unconditionally symbols from > drivers/soc/qcom/smem.c enabled via CONFIG_QCOM_SMEM. > > Changes since v3: > - fix issues pointed by sashiko https://sashiko.dev/#/patchset/20260812130421.670527-1-daniel.baluta%40nxp.com > - add new patches 2/3 in order to fix unmet dependcy for VIDEO_QCOM_IRIS > - Use IS_REACHABLE instead of IS_ENABLED to avoid the situation we use > some symbols in builtin kernel but their definitions sits in a > module. > > Remark for Dmitry, at this point I think v1 would have been a better > option. > Link to v1: > - https://lore.kernel.org/imx/[email protected]/T/#t > > > > Daniel Baluta (3): > soc: qcom: ubwc: Fix link error when QCOM_SMEM=n > media: iris: Fix unmet dependency when QCOM_SMEM=n I think this patch should come first since you introduce the QCOM_SMEM dependency that requires this change in the first patch, which could mess with bisects. I would personally add the 'if' condition to the 'select QCOM_UBWC_CONFIG' statements in one patch then add the QCOM_SMEM dependency to QCOM_UBWC_CONFIG in a separate patch. > soc: qcom: ubwc: Use IS_REACHABLE() instead of IS_ENABLED() Even with this series applied, I see $ cat allno.config CONFIG_ARCH_MULTI_V7=y CONFIG_ARCH_QCOM=y CONFIG_DRM=y CONFIG_DRM_MSM=y CONFIG_DRM_MSM_DPU=y CONFIG_IOMMU_SUPPORT=y CONFIG_MAILBOX=y CONFIG_MMU=y CONFIG_PM=y CONFIG_QCOM_AOSS_QMP=y CONFIG_QCOM_LLCC=y CONFIG_QCOM_OCMEM=y $ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- KCONFIG_ALLCONFIG=1 allnoconfig drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp_v13.o In file included from drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp_v13.c:7: include/linux/soc/qcom/ubwc.h: In function 'qcom_ubwc_config_get_data': include/linux/soc/qcom/ubwc.h:45:16: error: implicit declaration of function 'ERR_PTR' [-Wimplicit-function-declaration] 45 | return ERR_PTR(-EOPNOTSUPP); | ^~~~~~~ include/linux/soc/qcom/ubwc.h:45:25: error: 'EOPNOTSUPP' undeclared (first use in this function) 45 | return ERR_PTR(-EOPNOTSUPP); | ^~~~~~~~~~ include/linux/soc/qcom/ubwc.h:45:25: note: each undeclared identifier is reported only once for each function it appears in In file included from include/linux/cleanup.h:6, from include/linux/irqflags.h:17, from arch/arm/include/asm/bitops.h:28, from include/linux/bitops.h:67, from include/linux/kernel.h:23, from drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h:10, from drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.h:8, from drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp_v13.c:9: include/linux/err.h: At top level: include/linux/err.h:39:44: error: conflicting types for 'ERR_PTR'; have 'void *(long int)' 39 | static __always_inline void * __must_check ERR_PTR(long error) | ^~~~~~~ include/linux/soc/qcom/ubwc.h:45:16: note: previous implicit declaration of 'ERR_PTR' with type 'int()' 45 | return ERR_PTR(-EOPNOTSUPP); | ^~~~~~~ Adding '#include <linux/err.h>' to include/linux/soc/qcom/ubwc.h appears to resolve that for me. -- Cheers, Nathan