Hi Christoph,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linuxtv-media/master]
[also build test WARNING on mkp-scsi/for-next scsi/for-next linus/master v5.9-rc1
next-20200819]
[cannot apply to mmotm/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url:
https://github.com/0day-ci/linux/commits/Christoph-Hellwig/mm-turn-alloc_...
base:
git://linuxtv.org/media_tree.git master
config: i386-randconfig-s001-20200819 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-183-gaa6ede3b-dirty
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> drivers/scsi/53c700.c:304:42: sparse: sparse: incorrect type in
argument 4 (different base types) @@ expected unsigned int enum dma_data_direction dir
@@ got restricted gfp_t @@
> drivers/scsi/53c700.c:304:42: sparse: expected unsigned int enum
dma_data_direction dir
> drivers/scsi/53c700.c:304:42: sparse: got restricted gfp_t
drivers/scsi/53c700.c:354:29: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:358:43: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:360:9: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:360:9: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:362:9: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:362:9: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:364:9: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:364:9: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:830:25: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:830:25: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:843:17: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:843:17: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:857:17: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:857:17: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:941:17: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:941:17: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1025:51: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1026:53: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1027:51: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1151:25: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1153:25: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:1153:25: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1155:25: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1200:43: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:1447:9: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:1447:9: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1449:9: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:1449:9: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1451:9: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1453:9: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:1453:9: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1456:9: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1624:50: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:1626:66: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1627:66: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1628:49: sparse: sparse: cast to restricted __le32
drivers/scsi/53c700.c:1635:67: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1639:59: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1887:43: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1890:45: sparse: sparse: restricted __le32 degrades to integer
drivers/scsi/53c700.c:1892:35: sparse: sparse: restricted __le32 degrades to integer
#
https://github.com/0day-ci/linux/commit/b66e4b732653e92f234eb9aaceed34db5...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Christoph-Hellwig/mm-turn-alloc_pages-into-an-inline-function/20200819-155602
git checkout b66e4b732653e92f234eb9aaceed34db54048e61
vim +304 drivers/scsi/53c700.c
285
286 struct Scsi_Host *
287 NCR_700_detect(struct scsi_host_template *tpnt,
288 struct NCR_700_Host_Parameters *hostdata, struct device *dev)
289 {
290 dma_addr_t pScript, pSlots;
291 __u8 *memory;
292 __u32 *script;
293 struct Scsi_Host *host;
294 static int banner = 0;
295 int j;
296
297 if(tpnt->sdev_attrs == NULL)
298 tpnt->sdev_attrs = NCR_700_dev_attrs;
299
300 memory = dma_alloc_coherent(dev, TOTAL_MEM_SIZE, &pScript, GFP_KERNEL);
301 if (!memory) {
302 hostdata->noncoherent = 1;
303 memory = dma_alloc_pages(dev, TOTAL_MEM_SIZE, &pScript,
304 GFP_KERNEL, DMA_BIDIRECTIONAL);
305 }
306 if (!memory) {
307 printk(KERN_ERR "53c700: Failed to allocate memory for driver,
detaching\n");
308 return NULL;
309 }
310
311 script = (__u32 *)memory;
312 hostdata->msgin = memory + MSGIN_OFFSET;
313 hostdata->msgout = memory + MSGOUT_OFFSET;
314 hostdata->status = memory + STATUS_OFFSET;
315 hostdata->slots = (struct NCR_700_command_slot *)(memory + SLOTS_OFFSET);
316 hostdata->dev = dev;
317
318 pSlots = pScript + SLOTS_OFFSET;
319
320 /* Fill in the missing routines from the host template */
321 tpnt->queuecommand = NCR_700_queuecommand;
322 tpnt->eh_abort_handler = NCR_700_abort;
323 tpnt->eh_host_reset_handler = NCR_700_host_reset;
324 tpnt->can_queue = NCR_700_COMMAND_SLOTS_PER_HOST;
325 tpnt->sg_tablesize = NCR_700_SG_SEGMENTS;
326 tpnt->cmd_per_lun = NCR_700_CMD_PER_LUN;
327 tpnt->slave_configure = NCR_700_slave_configure;
328 tpnt->slave_destroy = NCR_700_slave_destroy;
329 tpnt->slave_alloc = NCR_700_slave_alloc;
330 tpnt->change_queue_depth = NCR_700_change_queue_depth;
331
332 if(tpnt->name == NULL)
333 tpnt->name = "53c700";
334 if(tpnt->proc_name == NULL)
335 tpnt->proc_name = "53c700";
336
337 host = scsi_host_alloc(tpnt, 4);
338 if (!host)
339 return NULL;
340 memset(hostdata->slots, 0, sizeof(struct NCR_700_command_slot)
341 * NCR_700_COMMAND_SLOTS_PER_HOST);
342 for (j = 0; j < NCR_700_COMMAND_SLOTS_PER_HOST; j++) {
343 dma_addr_t offset = (dma_addr_t)((unsigned long)&hostdata->slots[j].SG[0]
344 - (unsigned long)&hostdata->slots[0].SG[0]);
345 hostdata->slots[j].pSG = (struct NCR_700_SG_List *)((unsigned long)(pSlots +
offset));
346 if(j == 0)
347 hostdata->free_list = &hostdata->slots[j];
348 else
349 hostdata->slots[j-1].ITL_forw = &hostdata->slots[j];
350 hostdata->slots[j].state = NCR_700_SLOT_FREE;
351 }
352
353 for (j = 0; j < ARRAY_SIZE(SCRIPT); j++)
354 script[j] = bS_to_host(SCRIPT[j]);
355
356 /* adjust all labels to be bus physical */
357 for (j = 0; j < PATCHES; j++)
358 script[LABELPATCHES[j]] = bS_to_host(pScript + SCRIPT[LABELPATCHES[j]]);
359 /* now patch up fixed addresses. */
360 script_patch_32(hostdata, script, MessageLocation,
361 pScript + MSGOUT_OFFSET);
362 script_patch_32(hostdata, script, StatusAddress,
363 pScript + STATUS_OFFSET);
364 script_patch_32(hostdata, script, ReceiveMsgAddress,
365 pScript + MSGIN_OFFSET);
366
367 hostdata->script = script;
368 hostdata->pScript = pScript;
369 dma_sync_single_for_device(hostdata->dev, pScript, sizeof(SCRIPT),
DMA_TO_DEVICE);
370 hostdata->state = NCR_700_HOST_FREE;
371 hostdata->cmd = NULL;
372 host->max_id = 8;
373 host->max_lun = NCR_700_MAX_LUNS;
374 BUG_ON(NCR_700_transport_template == NULL);
375 host->transportt = NCR_700_transport_template;
376 host->unique_id = (unsigned long)hostdata->base;
377 hostdata->eh_complete = NULL;
378 host->hostdata[0] = (unsigned long)hostdata;
379 /* kick the chip */
380 NCR_700_writeb(0xff, host, CTEST9_REG);
381 if (hostdata->chip710)
382 hostdata->rev = (NCR_700_readb(host, CTEST8_REG)>>4) & 0x0f;
383 else
384 hostdata->rev = (NCR_700_readb(host, CTEST7_REG)>>4) & 0x0f;
385 hostdata->fast = (NCR_700_readb(host, CTEST9_REG) == 0);
386 if (banner == 0) {
387 printk(KERN_NOTICE "53c700: Version " NCR_700_VERSION " By
James.Bottomley(a)HansenPartnership.com\n");
388 banner = 1;
389 }
390 printk(KERN_NOTICE "scsi%d: %s rev %d %s\n", host->host_no,
391 hostdata->chip710 ? "53c710" :
392 (hostdata->fast ? "53c700-66" : "53c700"),
393 hostdata->rev, hostdata->differential ?
394 "(Differential)" : "");
395 /* reset the chip */
396 NCR_700_chip_reset(host);
397
398 if (scsi_add_host(host, dev)) {
399 dev_printk(KERN_ERR, dev, "53c700: scsi_add_host failed\n");
400 scsi_host_put(host);
401 return NULL;
402 }
403
404 spi_signalling(host) = hostdata->differential ? SPI_SIGNAL_HVD :
405 SPI_SIGNAL_SE;
406
407 return host;
408 }
409
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org