Hi Shun, FYI, there are new sparse warnings show up in tree: git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next head: 5c1b10ab7f93d24f29b5630286e323d1c5802d5c commit: bd756ddea18e02ccea8b29496b2fe3bd91af8eb7 [16/49] [SCSI] mvumi: Add support for Marvell SAS/SATA RAID-on-Chip(ROC) 88RC9580 drivers/scsi/mvumi.c:96:52: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:96:52: expected void [noderef] * drivers/scsi/mvumi.c:96:52: got void * drivers/scsi/mvumi.c:105:39: sparse: incorrect type in assignment (different address spaces) drivers/scsi/mvumi.c:105:39: expected void * drivers/scsi/mvumi.c:105:39: got void [noderef] * drivers/scsi/mvumi.c:225:42: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:225:42: expected unsigned int [unsigned] [usertype] baseaddr_l drivers/scsi/mvumi.c:225:42: got restricted __le32 [usertype] drivers/scsi/mvumi.c:226:42: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:226:42: expected unsigned int [unsigned] [usertype] baseaddr_h drivers/scsi/mvumi.c:226:42: got restricted __le32 [usertype] + drivers/scsi/mvumi.c:228:25: sparse: invalid assignment: |= drivers/scsi/mvumi.c:228:25: left side has type unsigned int drivers/scsi/mvumi.c:228:25: right side has type restricted __le32 drivers/scsi/mvumi.c:228:25: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:228:25: expected unsigned int [unsigned] [usertype] size drivers/scsi/mvumi.c:228:25: got restricted __le32 [usertype] drivers/scsi/mvumi.c:241:34: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:241:34: expected unsigned int [unsigned] [usertype] baseaddr_l drivers/scsi/mvumi.c:241:34: got restricted __le32 [usertype] drivers/scsi/mvumi.c:242:34: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:242:34: expected unsigned int [unsigned] [usertype] baseaddr_h drivers/scsi/mvumi.c:242:34: got restricted __le32 [usertype] drivers/scsi/mvumi.c:244:17: sparse: invalid assignment: |= drivers/scsi/mvumi.c:244:17: left side has type unsigned int drivers/scsi/mvumi.c:244:17: right side has type restricted __le32 drivers/scsi/mvumi.c:244:17: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:244:17: expected unsigned int [unsigned] [usertype] size drivers/scsi/mvumi.c:244:17: got restricted __le32 [usertype] drivers/scsi/mvumi.c:271:26: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:271:26: expected unsigned int [unsigned] [usertype] baseaddr_l drivers/scsi/mvumi.c:271:26: got restricted __le32 [usertype] drivers/scsi/mvumi.c:272:26: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:272:26: expected unsigned int [unsigned] [usertype] baseaddr_h drivers/scsi/mvumi.c:272:26: got restricted __le32 [usertype] drivers/scsi/mvumi.c:274:9: sparse: invalid assignment: |= drivers/scsi/mvumi.c:274:9: left side has type unsigned int drivers/scsi/mvumi.c:274:9: right side has type restricted __le32 drivers/scsi/mvumi.c:274:9: sparse: incorrect type in assignment (different base types) drivers/scsi/mvumi.c:274:9: expected unsigned int [unsigned] [usertype] size drivers/scsi/mvumi.c:274:9: got restricted __le32 [usertype] drivers/scsi/mvumi.c:436:40: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:436:40: expected void [noderef] * drivers/scsi/mvumi.c:436:40: got void *inb_read_pointer drivers/scsi/mvumi.c:458:30: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:458:30: expected void [noderef] * drivers/scsi/mvumi.c:458:30: got void *ib_shadow drivers/scsi/mvumi.c:487:31: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:487:31: expected void [noderef] * drivers/scsi/mvumi.c:487:31: got void *ib_shadow drivers/scsi/mvumi.c:488:48: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:488:48: expected void [noderef] * drivers/scsi/mvumi.c:488:48: got void *inb_write_pointer drivers/scsi/mvumi.c:525:41: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:525:41: expected void [noderef] * drivers/scsi/mvumi.c:525:41: got void *outb_copy_pointer drivers/scsi/mvumi.c:526:48: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:526:48: expected void [noderef] * drivers/scsi/mvumi.c:526:48: got void *ob_shadow drivers/scsi/mvumi.c:545:33: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:545:33: expected void [noderef] * drivers/scsi/mvumi.c:545:33: got void *outb_read_pointer drivers/scsi/mvumi.c:546:33: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:546:33: expected void [noderef] * drivers/scsi/mvumi.c:546:33: got void *outb_copy_pointer drivers/scsi/mvumi.c:607:42: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:607:42: expected void [noderef] * drivers/scsi/mvumi.c:607:42: got void *outb_read_pointer drivers/scsi/mvumi.c:614:26: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:614:26: expected void [noderef] * drivers/scsi/mvumi.c:614:26: got void *enpointa_mask_reg drivers/scsi/mvumi.c:615:26: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:615:26: expected void [noderef] * drivers/scsi/mvumi.c:615:26: got void *arm_to_pciea_msg1 drivers/scsi/mvumi.c:618:40: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:618:40: expected void [noderef] * drivers/scsi/mvumi.c:618:40: got void *pciea_to_arm_drbl_reg drivers/scsi/mvumi.c:1310:28: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:1310:28: expected void [noderef] * drivers/scsi/mvumi.c:1310:28: got void *arm_to_pciea_drbl_reg drivers/scsi/mvumi.c:1311:28: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:1311:28: expected void [noderef] * drivers/scsi/mvumi.c:1311:28: got void *arm_to_pciea_drbl_reg drivers/scsi/mvumi.c:1313:48: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:1313:48: expected void [noderef] * drivers/scsi/mvumi.c:1313:48: got void *arm_to_pciea_mask_reg drivers/scsi/mvumi.c:1314:28: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:1314:28: expected void [noderef] * drivers/scsi/mvumi.c:1314:28: got void *enpointa_mask_reg drivers/scsi/mvumi.c:1315:28: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:1315:28: expected void [noderef] * drivers/scsi/mvumi.c:1315:28: got void *enpointa_mask_reg drivers/scsi/mvumi.c:641:26: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:641:26: expected void [noderef] * drivers/scsi/mvumi.c:641:26: got void *enpointa_mask_reg drivers/scsi/mvumi.c:642:28: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:642:28: expected void [noderef] * drivers/scsi/mvumi.c:642:28: got void *arm_to_pciea_msg1 drivers/scsi/mvumi.c:644:46: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:644:46: expected void [noderef] * drivers/scsi/mvumi.c:644:46: got void *pciea_to_arm_drbl_reg drivers/scsi/mvumi.c:653:36: sparse: incorrect type in argument 1 (different address spaces) drivers/scsi/mvumi.c:653:36: expected void [noderef] * drivers/scsi/mvumi.c:653:36: got void *arm_to_pciea_msg1 drivers/scsi/mvumi.c:698:32: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:698:32: expected void [noderef] * drivers/scsi/mvumi.c:698:32: got void *reset_enable drivers/scsi/mvumi.c:699:34: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:699:34: expected void [noderef] * drivers/scsi/mvumi.c:699:34: got void *reset_request drivers/scsi/mvumi.c:701:35: sparse: incorrect type in argument 2 (different address spaces) drivers/scsi/mvumi.c:701:35: expected void [noderef] * vim +228 drivers/scsi/mvumi.c f0c568a4 Jianyun Li 2011-05-11 212 f0c568a4 Jianyun Li 2011-05-11 213 if (sgnum) { f0c568a4 Jianyun Li 2011-05-11 214 sg = scsi_sglist(scmd); f0c568a4 Jianyun Li 2011-05-11 215 *sg_count = pci_map_sg(mhba->pdev, sg, sgnum, f0c568a4 Jianyun Li 2011-05-11 216 (int) scmd->sc_data_direction); f0c568a4 Jianyun Li 2011-05-11 217 if (*sg_count > mhba->max_sge) { f0c568a4 Jianyun Li 2011-05-11 218 dev_err(&mhba->pdev->dev, "sg count[0x%x] is bigger " f0c568a4 Jianyun Li 2011-05-11 219 "than max sg[0x%x].\n", f0c568a4 Jianyun Li 2011-05-11 220 *sg_count, mhba->max_sge); f0c568a4 Jianyun Li 2011-05-11 221 return -1; f0c568a4 Jianyun Li 2011-05-11 222 } f0c568a4 Jianyun Li 2011-05-11 223 for (i = 0; i < *sg_count; i++) { f0c568a4 Jianyun Li 2011-05-11 224 busaddr = sg_dma_address(&sg[i]); f0c568a4 Jianyun Li 2011-05-11 225 m_sg->baseaddr_l = cpu_to_le32(lower_32_bits(busaddr)); f0c568a4 Jianyun Li 2011-05-11 226 m_sg->baseaddr_h = cpu_to_le32(upper_32_bits(busaddr)); f0c568a4 Jianyun Li 2011-05-11 227 m_sg->flags = 0; bd756dde Shun Fu 2012-09-23 @228 sgd_setsz(mhba, m_sg, cpu_to_le32(sg_dma_len(&sg[i]))); f0c568a4 Jianyun Li 2011-05-11 229 if ((i + 1) == *sg_count) bd756dde Shun Fu 2012-09-23 230 m_sg->flags |= 1U << mhba->eot_flag; f0c568a4 Jianyun Li 2011-05-11 231 bd756dde Shun Fu 2012-09-23 232 sgd_inc(mhba, m_sg); f0c568a4 Jianyun Li 2011-05-11 233 } f0c568a4 Jianyun Li 2011-05-11 234 } else { f0c568a4 Jianyun Li 2011-05-11 235 scmd->SCp.dma_handle = scsi_bufflen(scmd) ? f0c568a4 Jianyun Li 2011-05-11 236 pci_map_single(mhba->pdev, scsi_sglist(scmd), --- 0-DAY kernel build testing backend Open Source Technology Center Fengguang Wu, Yuanhan Liu Intel Corporation