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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.