tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: de970dffa7d19eae1d703c3534825308ef8d5dec commit: f9a7c211216521bcdc4fe43fa26a06e47ef54e10 [9429/9861] mmc: sdhci-omap: Add using external dma reproduce: # apt-get install sparse # sparse version: v0.6.1-131-g22978b6b-dirty git checkout f9a7c211216521bcdc4fe43fa26a06e47ef54e10 make ARCH=x86_64 allmodconfig make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' If you fix the issue, kindly add following tag Reported-by: kbuild test robot sparse warnings: (new ones prefixed by >>) >> drivers/mmc/host/sdhci.c:1235:55: sparse: sparse: mixing different enum types: >> drivers/mmc/host/sdhci.c:1235:55: sparse: unsigned int enum dma_data_direction >> drivers/mmc/host/sdhci.c:1235:55: sparse: unsigned int enum dma_transfer_direction drivers/mmc/host/sdhci.c:3253:58: sparse: sparse: Using plain integer as NULL pointer vim +1235 drivers/mmc/host/sdhci.c 36e1da441fec62 Chunyan Zhang 2020-01-16 1196 36e1da441fec62 Chunyan Zhang 2020-01-16 1197 static int sdhci_external_dma_setup(struct sdhci_host *host, 36e1da441fec62 Chunyan Zhang 2020-01-16 1198 struct mmc_command *cmd) 36e1da441fec62 Chunyan Zhang 2020-01-16 1199 { 36e1da441fec62 Chunyan Zhang 2020-01-16 1200 int ret, i; 36e1da441fec62 Chunyan Zhang 2020-01-16 1201 struct dma_async_tx_descriptor *desc; 36e1da441fec62 Chunyan Zhang 2020-01-16 1202 struct mmc_data *data = cmd->data; 36e1da441fec62 Chunyan Zhang 2020-01-16 1203 struct dma_chan *chan; 36e1da441fec62 Chunyan Zhang 2020-01-16 1204 struct dma_slave_config cfg; 36e1da441fec62 Chunyan Zhang 2020-01-16 1205 dma_cookie_t cookie; 36e1da441fec62 Chunyan Zhang 2020-01-16 1206 int sg_cnt; 36e1da441fec62 Chunyan Zhang 2020-01-16 1207 36e1da441fec62 Chunyan Zhang 2020-01-16 1208 if (!host->mapbase) 36e1da441fec62 Chunyan Zhang 2020-01-16 1209 return -EINVAL; 36e1da441fec62 Chunyan Zhang 2020-01-16 1210 36e1da441fec62 Chunyan Zhang 2020-01-16 1211 cfg.src_addr = host->mapbase + SDHCI_BUFFER; 36e1da441fec62 Chunyan Zhang 2020-01-16 1212 cfg.dst_addr = host->mapbase + SDHCI_BUFFER; 36e1da441fec62 Chunyan Zhang 2020-01-16 1213 cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 36e1da441fec62 Chunyan Zhang 2020-01-16 1214 cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 36e1da441fec62 Chunyan Zhang 2020-01-16 1215 cfg.src_maxburst = data->blksz / 4; 36e1da441fec62 Chunyan Zhang 2020-01-16 1216 cfg.dst_maxburst = data->blksz / 4; 36e1da441fec62 Chunyan Zhang 2020-01-16 1217 36e1da441fec62 Chunyan Zhang 2020-01-16 1218 /* Sanity check: all the SG entries must be aligned by block size. */ 36e1da441fec62 Chunyan Zhang 2020-01-16 1219 for (i = 0; i < data->sg_len; i++) { 36e1da441fec62 Chunyan Zhang 2020-01-16 1220 if ((data->sg + i)->length % data->blksz) 36e1da441fec62 Chunyan Zhang 2020-01-16 1221 return -EINVAL; 36e1da441fec62 Chunyan Zhang 2020-01-16 1222 } 36e1da441fec62 Chunyan Zhang 2020-01-16 1223 36e1da441fec62 Chunyan Zhang 2020-01-16 1224 chan = sdhci_external_dma_channel(host, data); 36e1da441fec62 Chunyan Zhang 2020-01-16 1225 36e1da441fec62 Chunyan Zhang 2020-01-16 1226 ret = dmaengine_slave_config(chan, &cfg); 36e1da441fec62 Chunyan Zhang 2020-01-16 1227 if (ret) 36e1da441fec62 Chunyan Zhang 2020-01-16 1228 return ret; 36e1da441fec62 Chunyan Zhang 2020-01-16 1229 36e1da441fec62 Chunyan Zhang 2020-01-16 1230 sg_cnt = sdhci_pre_dma_transfer(host, data, COOKIE_MAPPED); 36e1da441fec62 Chunyan Zhang 2020-01-16 1231 if (sg_cnt <= 0) 36e1da441fec62 Chunyan Zhang 2020-01-16 1232 return -EINVAL; 36e1da441fec62 Chunyan Zhang 2020-01-16 1233 36e1da441fec62 Chunyan Zhang 2020-01-16 1234 desc = dmaengine_prep_slave_sg(chan, data->sg, data->sg_len, 36e1da441fec62 Chunyan Zhang 2020-01-16 @1235 mmc_get_dma_dir(data), 36e1da441fec62 Chunyan Zhang 2020-01-16 1236 DMA_PREP_INTERRUPT | DMA_CTRL_ACK); 36e1da441fec62 Chunyan Zhang 2020-01-16 1237 if (!desc) 36e1da441fec62 Chunyan Zhang 2020-01-16 1238 return -EINVAL; 36e1da441fec62 Chunyan Zhang 2020-01-16 1239 36e1da441fec62 Chunyan Zhang 2020-01-16 1240 desc->callback = NULL; 36e1da441fec62 Chunyan Zhang 2020-01-16 1241 desc->callback_param = NULL; 36e1da441fec62 Chunyan Zhang 2020-01-16 1242 36e1da441fec62 Chunyan Zhang 2020-01-16 1243 cookie = dmaengine_submit(desc); 36e1da441fec62 Chunyan Zhang 2020-01-16 1244 if (dma_submit_error(cookie)) 36e1da441fec62 Chunyan Zhang 2020-01-16 1245 ret = cookie; 36e1da441fec62 Chunyan Zhang 2020-01-16 1246 36e1da441fec62 Chunyan Zhang 2020-01-16 1247 return ret; 36e1da441fec62 Chunyan Zhang 2020-01-16 1248 } 36e1da441fec62 Chunyan Zhang 2020-01-16 1249 :::::: The code at line 1235 was first introduced by commit :::::: 36e1da441fec6286765594ea9b91622312827b29 mmc: sdhci: add support for using external DMA devices :::::: TO: Chunyan Zhang :::::: CC: Ulf Hansson --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation