drivers/dma/at_hdmac.c:1129:11: sparse: sparse: cast removes address space '__iomem' of expression
kernel test robot <[email protected]> Thu, 23 Jul 2026 11:45:56 +0800
| Newsgroups | dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 248951ddc14de84de3910f9b13f51491a8cd91df commit: 5d8c5bea0da97809813b5f702700019cfffb6085 dmaengine: at_hdmac: add COMPILE_TEST support date: 8 months ago config: sparc64-randconfig-r111-20260723 (https://download.01.org/0day-ci/archive/20260723/[email protected]/config) compiler: sparc64-linux-gcc (GCC) 8.5.0 sparse: v0.6.5-rc1 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260723/[email protected]/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Fixes: 5d8c5bea0da9 ("dmaengine: at_hdmac: add COMPILE_TEST support") | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ sparse warnings: (new ones prefixed by >>) drivers/dma/at_hdmac.c:1119:15: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *vaddr @@ got void * @@ drivers/dma/at_hdmac.c:1119:15: sparse: expected void [noderef] __iomem *vaddr drivers/dma/at_hdmac.c:1119:15: sparse: got void * >> drivers/dma/at_hdmac.c:1129:11: sparse: sparse: cast removes address space '__iomem' of expression drivers/dma/at_hdmac.c:1144:28: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int *memset_vaddr @@ got void [noderef] __iomem *vaddr @@ drivers/dma/at_hdmac.c:1144:28: sparse: expected int *memset_vaddr drivers/dma/at_hdmac.c:1144:28: sparse: got void [noderef] __iomem *vaddr >> drivers/dma/at_hdmac.c:1157:43: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void *vaddr @@ got void [noderef] __iomem *vaddr @@ drivers/dma/at_hdmac.c:1157:43: sparse: expected void *vaddr drivers/dma/at_hdmac.c:1157:43: sparse: got void [noderef] __iomem *vaddr drivers/dma/at_hdmac.c:1186:15: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *vaddr @@ got void * @@ drivers/dma/at_hdmac.c:1186:15: sparse: expected void [noderef] __iomem *vaddr drivers/dma/at_hdmac.c:1186:15: sparse: got void * drivers/dma/at_hdmac.c:1192:11: sparse: sparse: cast removes address space '__iomem' of expression drivers/dma/at_hdmac.c:1222:28: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int *memset_vaddr @@ got void [noderef] __iomem *vaddr @@ drivers/dma/at_hdmac.c:1222:28: sparse: expected int *memset_vaddr drivers/dma/at_hdmac.c:1222:28: sparse: got void [noderef] __iomem *vaddr drivers/dma/at_hdmac.c:1235:43: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void *vaddr @@ got void [noderef] __iomem *vaddr @@ drivers/dma/at_hdmac.c:1235:43: sparse: expected void *vaddr drivers/dma/at_hdmac.c:1235:43: sparse: got void [noderef] __iomem *vaddr vim +/__iomem +1129 drivers/dma/at_hdmac.c ce2a673d66b2ca Maxime Ripard 2015-10-22 1084 4d112426c3446d Maxime Ripard 2015-08-24 1085 /** 4d112426c3446d Maxime Ripard 2015-08-24 1086 * atc_prep_dma_memset - prepare a memcpy operation 4d112426c3446d Maxime Ripard 2015-08-24 1087 * @chan: the channel to prepare operation on 4d112426c3446d Maxime Ripard 2015-08-24 1088 * @dest: operation virtual destination address 4d112426c3446d Maxime Ripard 2015-08-24 1089 * @value: value to set memory buffer to 4d112426c3446d Maxime Ripard 2015-08-24 1090 * @len: operation length 4d112426c3446d Maxime Ripard 2015-08-24 1091 * @flags: tx descriptor status flags 4d112426c3446d Maxime Ripard 2015-08-24 1092 */ 4d112426c3446d Maxime Ripard 2015-08-24 1093 static struct dma_async_tx_descriptor * 4d112426c3446d Maxime Ripard 2015-08-24 1094 atc_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value, 4d112426c3446d Maxime Ripard 2015-08-24 1095 size_t len, unsigned long flags) 4d112426c3446d Maxime Ripard 2015-08-24 1096 { ac803b56860f65 Tudor Ambarus 2022-10-25 1097 struct at_dma_chan *atchan = to_at_dma_chan(chan); 4d112426c3446d Maxime Ripard 2015-08-24 1098 struct at_dma *atdma = to_at_dma(chan->device); ce2a673d66b2ca Maxime Ripard 2015-10-22 1099 struct at_desc *desc; ce2a673d66b2ca Maxime Ripard 2015-10-22 1100 void __iomem *vaddr; ce2a673d66b2ca Maxime Ripard 2015-10-22 1101 dma_addr_t paddr; ceabe10cf5d642 Ben Walker 2022-03-01 1102 char fill_pattern; ac803b56860f65 Tudor Ambarus 2022-10-25 1103 int ret; 4d112426c3446d Maxime Ripard 2015-08-24 1104 2c5d7407e01272 Arnd Bergmann 2015-11-12 1105 dev_vdbg(chan2dev(chan), "%s: d%pad v0x%x l0x%zx f0x%lx\n", __func__, 2c5d7407e01272 Arnd Bergmann 2015-11-12 1106 &dest, value, len, flags); 4d112426c3446d Maxime Ripard 2015-08-24 1107 4d112426c3446d Maxime Ripard 2015-08-24 1108 if (unlikely(!len)) { 4d112426c3446d Maxime Ripard 2015-08-24 1109 dev_dbg(chan2dev(chan), "%s: length is zero!\n", __func__); 4d112426c3446d Maxime Ripard 2015-08-24 1110 return NULL; 4d112426c3446d Maxime Ripard 2015-08-24 1111 } 4d112426c3446d Maxime Ripard 2015-08-24 1112 4d112426c3446d Maxime Ripard 2015-08-24 1113 if (!is_dma_fill_aligned(chan->device, dest, 0, len)) { 4d112426c3446d Maxime Ripard 2015-08-24 1114 dev_dbg(chan2dev(chan), "%s: buffer is not aligned\n", 4d112426c3446d Maxime Ripard 2015-08-24 1115 __func__); 4d112426c3446d Maxime Ripard 2015-08-24 1116 return NULL; 4d112426c3446d Maxime Ripard 2015-08-24 1117 } 4d112426c3446d Maxime Ripard 2015-08-24 1118 247b4d83d6525d Tudor Ambarus 2020-01-23 1119 vaddr = dma_pool_alloc(atdma->memset_pool, GFP_NOWAIT, &paddr); ce2a673d66b2ca Maxime Ripard 2015-10-22 1120 if (!vaddr) { ce2a673d66b2ca Maxime Ripard 2015-10-22 1121 dev_err(chan2dev(chan), "%s: couldn't allocate buffer\n", 4d112426c3446d Maxime Ripard 2015-08-24 1122 __func__); 4d112426c3446d Maxime Ripard 2015-08-24 1123 return NULL; 4d112426c3446d Maxime Ripard 2015-08-24 1124 } ceabe10cf5d642 Ben Walker 2022-03-01 1125 ceabe10cf5d642 Ben Walker 2022-03-01 1126 /* Only the first byte of value is to be used according to dmaengine */ ceabe10cf5d642 Ben Walker 2022-03-01 1127 fill_pattern = (char)value; ceabe10cf5d642 Ben Walker 2022-03-01 1128 ceabe10cf5d642 Ben Walker 2022-03-01 @1129 *(u32*)vaddr = (fill_pattern << 24) | ceabe10cf5d642 Ben Walker 2022-03-01 1130 (fill_pattern << 16) | ceabe10cf5d642 Ben Walker 2022-03-01 1131 (fill_pattern << 8) | ceabe10cf5d642 Ben Walker 2022-03-01 1132 fill_pattern; 4d112426c3446d Maxime Ripard 2015-08-24 1133 ac803b56860f65 Tudor Ambarus 2022-10-25 1134 desc = kzalloc(struct_size(desc, sg, 1), GFP_ATOMIC); ac803b56860f65 Tudor Ambarus 2022-10-25 1135 if (!desc) ce2a673d66b2ca Maxime Ripard 2015-10-22 1136 goto err_free_buffer; ac803b56860f65 Tudor Ambarus 2022-10-25 1137 desc->sglen = 1; ac803b56860f65 Tudor Ambarus 2022-10-25 1138 ac803b56860f65 Tudor Ambarus 2022-10-25 1139 ret = atdma_create_memset_lli(chan, desc->sg, paddr, dest, len); ac803b56860f65 Tudor Ambarus 2022-10-25 1140 if (ret) ac803b56860f65 Tudor Ambarus 2022-10-25 1141 goto err_free_desc; 4d112426c3446d Maxime Ripard 2015-08-24 1142 ce2a673d66b2ca Maxime Ripard 2015-10-22 1143 desc->memset_paddr = paddr; ce2a673d66b2ca Maxime Ripard 2015-10-22 1144 desc->memset_vaddr = vaddr; ce2a673d66b2ca Maxime Ripard 2015-10-22 1145 desc->memset_buffer = true; 4d112426c3446d Maxime Ripard 2015-08-24 1146 4d112426c3446d Maxime Ripard 2015-08-24 1147 desc->total_len = len; 4d112426c3446d Maxime Ripard 2015-08-24 1148 4d112426c3446d Maxime Ripard 2015-08-24 1149 /* set end-of-link on the descriptor */ ac803b56860f65 Tudor Ambarus 2022-10-25 1150 set_lli_eol(desc, 0); 4d112426c3446d Maxime Ripard 2015-08-24 1151 ac803b56860f65 Tudor Ambarus 2022-10-25 1152 return vchan_tx_prep(&atchan->vc, &desc->vd, flags); 4d112426c3446d Maxime Ripard 2015-08-24 1153 ac803b56860f65 Tudor Ambarus 2022-10-25 1154 err_free_desc: ac803b56860f65 Tudor Ambarus 2022-10-25 1155 kfree(desc); ce2a673d66b2ca Maxime Ripard 2015-10-22 1156 err_free_buffer: ce2a673d66b2ca Maxime Ripard 2015-10-22 @1157 dma_pool_free(atdma->memset_pool, vaddr, paddr); 4d112426c3446d Maxime Ripard 2015-08-24 1158 return NULL; 4d112426c3446d Maxime Ripard 2015-08-24 1159 } 4d112426c3446d Maxime Ripard 2015-08-24 1160 :::::: The code at line 1129 was first introduced by commit :::::: ceabe10cf5d642b6ea80e77193f9cd4446df26b5 dmaengine: at_hdmac: In atc_prep_dma_memset, treat value as a single byte :::::: TO: Ben Walker <[email protected]> :::::: CC: Vinod Koul <[email protected]> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki