qcom_scm: Incompatible pointer type build failure

From: Julien Grall
Date: Tue Apr 30 2019 - 10:06:22 EST


Hi Ian,

Thank you for the report.

On 30/04/2019 13:44, Ian Jackson wrote:
osstest service owner writes ("[linux-4.19 test] 135420: regressions - FAIL"):
flight 135420 linux-4.19 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/135420/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
build-armhf-pvops 6 kernel-build fail REGR. vs. 129313

http://logs.test-lab.xenproject.org/osstest/logs/135420/build-armhf-pvops/6.ts-kernel-build.log

drivers/firmware/qcom_scm.c: In function ÃâËqcom_scm_assign_memÃââ:
drivers/firmware/qcom_scm.c:469:47: error: passing argument 3 of ÃâËdma_alloc_coherentÃââ from incompatible pointer type [-Werror=incompatible-pointer-types]
ptr = dma_alloc_coherent(__scm->dev, ptr_sz, &ptr_phys, GFP_KERNEL);
^
In file included from drivers/firmware/qcom_scm.c:21:0:
./include/linux/dma-mapping.h:560:21: note: expected ÃâËdma_addr_t * {aka long long unsigned int *}Ãââ but argument is of type ÃâËphys_addr_t * {aka unsigned int *}Ãââ
static inline void *dma_alloc_coherent(struct device *dev, size_t size,
^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
scripts/Makefile.build:303: recipe for target 'drivers/firmware/qcom_scm.o' failed
make[2]: *** [drivers/firmware/qcom_scm.o] Error 1
scripts/Makefile.build:544: recipe for target 'drivers/firmware' failed
make[1]: *** [drivers/firmware] Error 2
make[1]: *** Waiting for unfinished jobs....

I think this build failure is probably a regression; rather it is due
to the stretch update which brings in a new compiler.

The bug has always been present (and still present in master), it is possible the compiler became smarter with the upgrade to stretch.

The problem is similar to [1] and happen when the size of phys_addr_t is different to dma_addr_t.

I have CCed the maintainers of this file.

Cheers,

[1] https://lists.xenproject.org/archives/html/xen-devel/2019-04/msg00940.html

--
Julien Grall