drivers/remoteproc/qcom_q6v5_pas.c:550:30: sparse: sparse: incorrect type in assignment (different address spaces)

From: kernel test robot
Date: Fri May 26 2023 - 19:57:54 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0d85b27b0cc6b5cf54567c5ad913a247a71583ce
commit: 29814986b82e820ae9d3eb7474cdcf66605bd114 remoteproc: qcom_q6v5_pas: add support for dtb co-firmware loading
date: 4 months ago
config: arm64-randconfig-s031-20230526 (https://download.01.org/0day-ci/archive/20230527/202305270724.6Mc2pZjw-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 12.1.0
reproduce:
mkdir -p ~/bin
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=29814986b82e820ae9d3eb7474cdcf66605bd114
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 29814986b82e820ae9d3eb7474cdcf66605bd114
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 ~/bin/make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 ~/bin/make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/remoteproc/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202305270724.6Mc2pZjw-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
drivers/remoteproc/qcom_q6v5_pas.c:528:26: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *mem_region @@ got void [noderef] __iomem * @@
drivers/remoteproc/qcom_q6v5_pas.c:528:26: sparse: expected void *mem_region
drivers/remoteproc/qcom_q6v5_pas.c:528:26: sparse: got void [noderef] __iomem *
>> drivers/remoteproc/qcom_q6v5_pas.c:550:30: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *dtb_mem_region @@ got void [noderef] __iomem * @@
drivers/remoteproc/qcom_q6v5_pas.c:550:30: sparse: expected void *dtb_mem_region
drivers/remoteproc/qcom_q6v5_pas.c:550:30: sparse: got void [noderef] __iomem *

vim +550 drivers/remoteproc/qcom_q6v5_pas.c

508
509 static int adsp_alloc_memory_region(struct qcom_adsp *adsp)
510 {
511 struct device_node *node;
512 struct resource r;
513 int ret;
514
515 node = of_parse_phandle(adsp->dev->of_node, "memory-region", 0);
516 if (!node) {
517 dev_err(adsp->dev, "no memory-region specified\n");
518 return -EINVAL;
519 }
520
521 ret = of_address_to_resource(node, 0, &r);
522 of_node_put(node);
523 if (ret)
524 return ret;
525
526 adsp->mem_phys = adsp->mem_reloc = r.start;
527 adsp->mem_size = resource_size(&r);
528 adsp->mem_region = devm_ioremap_wc(adsp->dev, adsp->mem_phys, adsp->mem_size);
529 if (!adsp->mem_region) {
530 dev_err(adsp->dev, "unable to map memory region: %pa+%zx\n",
531 &r.start, adsp->mem_size);
532 return -EBUSY;
533 }
534
535 if (!adsp->dtb_pas_id)
536 return 0;
537
538 node = of_parse_phandle(adsp->dev->of_node, "memory-region", 1);
539 if (!node) {
540 dev_err(adsp->dev, "no dtb memory-region specified\n");
541 return -EINVAL;
542 }
543
544 ret = of_address_to_resource(node, 0, &r);
545 if (ret)
546 return ret;
547
548 adsp->dtb_mem_phys = adsp->dtb_mem_reloc = r.start;
549 adsp->dtb_mem_size = resource_size(&r);
> 550 adsp->dtb_mem_region = devm_ioremap_wc(adsp->dev, adsp->dtb_mem_phys, adsp->dtb_mem_size);
551 if (!adsp->dtb_mem_region) {
552 dev_err(adsp->dev, "unable to map dtb memory region: %pa+%zx\n",
553 &r.start, adsp->dtb_mem_size);
554 return -EBUSY;
555 }
556
557 return 0;
558 }
559

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki