CC: [email protected] CC: [email protected] TO: Christoph Hellwig <[email protected]> CC: Tony Luck <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 593bd5e5d3e245262c40c7dd2f5edbac705ff578 commit: 05933aac7b11911955de307a329dc2a7a14b7bd0 ia64: remove now unused machvec indirections date: 10 months ago :::::: branch date: 77 minutes ago :::::: commit date: 10 months ago config: ia64-randconfig-s031-20200614 (attached as .config) compiler: ia64-linux-gcc (GCC) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.1-250-g42323db3-dirty git checkout 05933aac7b11911955de307a329dc2a7a14b7bd0 # save the attached .config to linux build tree make W=1 C=1 ARCH=ia64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> sparse warnings: (new ones prefixed by >>) drivers/scsi/bnx2fc/bnx2fc_hwi.c:209:40: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:212:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [assigned] [usertype] rq_prod @@ got int @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:212:27: sparse: expected restricted __le16 [addressable] [assigned] [usertype] rq_prod drivers/scsi/bnx2fc/bnx2fc_hwi.c:212:27: sparse: got int drivers/scsi/bnx2fc/bnx2fc_hwi.c:221:37: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [assigned] [usertype] tx_max_fc_pay_len @@ got unsigned short [usertype] maxframe_size @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:221:37: sparse: expected restricted __le16 [addressable] [assigned] [usertype] tx_max_fc_pay_len drivers/scsi/bnx2fc/bnx2fc_hwi.c:221:37: sparse: got unsigned short [usertype] maxframe_size drivers/scsi/bnx2fc/bnx2fc_hwi.c:223:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] cq_addr_lo @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:223:30: sparse: expected restricted __le32 [addressable] [assigned] [usertype] cq_addr_lo drivers/scsi/bnx2fc/bnx2fc_hwi.c:223:30: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:224:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] cq_addr_hi @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:224:30: sparse: expected restricted __le32 [addressable] [assigned] [usertype] cq_addr_hi drivers/scsi/bnx2fc/bnx2fc_hwi.c:224:30: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:226:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] xferq_addr_lo @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:226:33: sparse: expected restricted __le32 [addressable] [assigned] [usertype] xferq_addr_lo drivers/scsi/bnx2fc/bnx2fc_hwi.c:226:33: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:227:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] xferq_addr_hi @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:227:33: sparse: expected restricted __le32 [addressable] [assigned] [usertype] xferq_addr_hi drivers/scsi/bnx2fc/bnx2fc_hwi.c:227:33: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:229:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] conn_db_addr_lo @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:229:35: sparse: expected restricted __le32 [addressable] [assigned] [usertype] conn_db_addr_lo drivers/scsi/bnx2fc/bnx2fc_hwi.c:229:35: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:230:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] conn_db_addr_hi @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:230:35: sparse: expected restricted __le32 [addressable] [assigned] [usertype] conn_db_addr_hi drivers/scsi/bnx2fc/bnx2fc_hwi.c:230:35: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:239:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [assigned] [usertype] vlan_tag @@ got int @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:239:28: sparse: expected restricted __le16 [addressable] [assigned] [usertype] vlan_tag drivers/scsi/bnx2fc/bnx2fc_hwi.c:239:28: sparse: got int drivers/scsi/bnx2fc/bnx2fc_hwi.c:241:28: sparse: sparse: invalid assignment: |= drivers/scsi/bnx2fc/bnx2fc_hwi.c:241:28: sparse: left side has type restricted __le16 drivers/scsi/bnx2fc/bnx2fc_hwi.c:241:28: sparse: right side has type int drivers/scsi/bnx2fc/bnx2fc_hwi.c:264:38: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [assigned] [usertype] tx_total_conc_seqs @@ got unsigned short [usertype] max_seq @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:264:38: sparse: expected restricted __le16 [addressable] [assigned] [usertype] tx_total_conc_seqs drivers/scsi/bnx2fc/bnx2fc_hwi.c:264:38: sparse: got unsigned short [usertype] max_seq drivers/scsi/bnx2fc/bnx2fc_hwi.c:267:38: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [assigned] [usertype] rx_max_fc_pay_len @@ got unsigned int [usertype] mfs @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:267:38: sparse: expected restricted __le16 [addressable] [assigned] [usertype] rx_max_fc_pay_len drivers/scsi/bnx2fc/bnx2fc_hwi.c:267:38: sparse: got unsigned int [usertype] mfs drivers/scsi/bnx2fc/bnx2fc_hwi.c:269:38: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [assigned] [usertype] rx_total_conc_seqs @@ got int @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:269:38: sparse: expected restricted __le16 [addressable] [assigned] [usertype] rx_total_conc_seqs drivers/scsi/bnx2fc/bnx2fc_hwi.c:269:38: sparse: got int drivers/scsi/bnx2fc/bnx2fc_hwi.c:273:43: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] confq_first_pbe_addr_lo @@ got unsigned long long [usertype] confq_dma @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:273:43: sparse: expected restricted __le32 [addressable] [assigned] [usertype] confq_first_pbe_addr_lo drivers/scsi/bnx2fc/bnx2fc_hwi.c:273:43: sparse: got unsigned long long [usertype] confq_dma drivers/scsi/bnx2fc/bnx2fc_hwi.c:274:43: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] confq_first_pbe_addr_hi @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:274:43: sparse: expected restricted __le32 [addressable] [assigned] [usertype] confq_first_pbe_addr_hi drivers/scsi/bnx2fc/bnx2fc_hwi.c:274:43: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:332:31: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] lcq_addr_lo @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:332:31: sparse: expected restricted __le32 [addressable] [assigned] [usertype] lcq_addr_lo drivers/scsi/bnx2fc/bnx2fc_hwi.c:332:31: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:333:31: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] lcq_addr_hi @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:333:31: sparse: expected restricted __le32 [addressable] [assigned] [usertype] lcq_addr_hi drivers/scsi/bnx2fc/bnx2fc_hwi.c:333:31: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:335:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] confq_pbl_base_addr_lo @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:335:42: sparse: expected restricted __le32 [addressable] [assigned] [usertype] confq_pbl_base_addr_lo drivers/scsi/bnx2fc/bnx2fc_hwi.c:335:42: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:336:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] confq_pbl_base_addr_hi @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:336:42: sparse: expected restricted __le32 [addressable] [assigned] [usertype] confq_pbl_base_addr_hi drivers/scsi/bnx2fc/bnx2fc_hwi.c:336:42: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:410:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] context_id @@ got unsigned int [usertype] context_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:410:29: sparse: expected restricted __le32 [addressable] [assigned] [usertype] context_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:410:29: sparse: got unsigned int [usertype] context_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:411:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] conn_id @@ got unsigned int [usertype] fcoe_conn_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:411:26: sparse: expected restricted __le32 [addressable] [assigned] [usertype] conn_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:411:26: sparse: got unsigned int [usertype] fcoe_conn_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:469:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] context_id @@ got unsigned int [usertype] context_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:469:32: sparse: expected restricted __le32 [addressable] [assigned] [usertype] context_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:469:32: sparse: got unsigned int [usertype] context_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:470:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] conn_id @@ got unsigned int [usertype] fcoe_conn_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:470:29: sparse: expected restricted __le32 [addressable] [assigned] [usertype] conn_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:470:29: sparse: got unsigned int [usertype] fcoe_conn_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:504:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] context_id @@ got unsigned int [usertype] context_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:504:32: sparse: expected restricted __le32 [addressable] [assigned] [usertype] context_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:504:32: sparse: got unsigned int [usertype] context_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:505:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] conn_id @@ got unsigned int [usertype] fcoe_conn_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:505:29: sparse: expected restricted __le32 [addressable] [assigned] [usertype] conn_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:505:29: sparse: got unsigned int [usertype] fcoe_conn_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:613:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] fr_crc @@ got restricted __le32 [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:613:28: sparse: expected unsigned int [usertype] fr_crc drivers/scsi/bnx2fc/bnx2fc_hwi.c:613:28: sparse: got restricted __le32 [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:697:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] xid @@ got restricted __le16 [usertype] ox_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:697:21: sparse: expected unsigned short [usertype] xid drivers/scsi/bnx2fc/bnx2fc_hwi.c:697:21: sparse: got restricted __le16 [usertype] ox_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:735:27: sparse: sparse: cast from restricted __le32 drivers/scsi/bnx2fc/bnx2fc_hwi.c:736:26: sparse: sparse: cast from restricted __le32 drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:23: sparse: sparse: cast from restricted __le16 drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:23: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __le16 [usertype] ox_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:23: sparse: expected unsigned short [usertype] val drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:23: sparse: got restricted __le16 [usertype] ox_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:23: sparse: sparse: cast from restricted __le16 drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:23: sparse: sparse: cast from restricted __le16 drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] xid @@ got restricted __be16 [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:21: sparse: expected unsigned short [usertype] xid drivers/scsi/bnx2fc/bnx2fc_hwi.c:816:21: sparse: got restricted __be16 [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:830:27: sparse: sparse: cast from restricted __le32 drivers/scsi/bnx2fc/bnx2fc_hwi.c:831:26: sparse: sparse: cast from restricted __le32 drivers/scsi/bnx2fc/bnx2fc_hwi.c:899:43: sparse: sparse: restricted __le16 degrades to integer drivers/scsi/bnx2fc/bnx2fc_hwi.c:914:45: sparse: sparse: restricted __le16 degrades to integer drivers/scsi/bnx2fc/bnx2fc_hwi.c:990:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] doorbell_cq_cons @@ got int @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:990:33: sparse: expected restricted __le16 [usertype] doorbell_cq_cons drivers/scsi/bnx2fc/bnx2fc_hwi.c:990:33: sparse: got int >> drivers/scsi/bnx2fc/bnx2fc_hwi.c:993:16: sparse: sparse: incorrect type in >> argument 1 (different base types) @@ expected unsigned int [usertype] >> value @@ got restricted __le32 [usertype] @@ >> drivers/scsi/bnx2fc/bnx2fc_hwi.c:993:16: sparse: expected unsigned int >> [usertype] value drivers/scsi/bnx2fc/bnx2fc_hwi.c:993:16: sparse: got restricted __le32 [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:1057:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] wqe @@ got restricted __le16 [usertype] wqe @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1057:22: sparse: expected unsigned short [usertype] wqe drivers/scsi/bnx2fc/bnx2fc_hwi.c:1057:22: sparse: got restricted __le16 [usertype] wqe drivers/scsi/bnx2fc/bnx2fc_hwi.c:1223:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] conn_id @@ got restricted __le32 [usertype] fcoe_conn_id @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1223:17: sparse: expected unsigned int [usertype] conn_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:1223:17: sparse: got restricted __le32 [usertype] fcoe_conn_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:1339:53: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned int [usertype] err_code @@ got restricted __le32 [usertype] completion_status @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1339:53: sparse: expected unsigned int [usertype] err_code drivers/scsi/bnx2fc/bnx2fc_hwi.c:1339:53: sparse: got restricted __le32 [usertype] completion_status drivers/scsi/bnx2fc/bnx2fc_hwi.c:1391:18: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] wqe @@ got int @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1391:18: sparse: expected restricted __le16 [usertype] wqe drivers/scsi/bnx2fc/bnx2fc_hwi.c:1391:18: sparse: got int drivers/scsi/bnx2fc/bnx2fc_hwi.c:1392:18: sparse: sparse: invalid assignment: |= drivers/scsi/bnx2fc/bnx2fc_hwi.c:1392:18: sparse: left side has type restricted __le16 drivers/scsi/bnx2fc/bnx2fc_hwi.c:1392:18: sparse: right side has type int drivers/scsi/bnx2fc/bnx2fc_hwi.c:1410:16: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] value @@ got restricted __le32 [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1410:16: sparse: expected unsigned int [usertype] value drivers/scsi/bnx2fc/bnx2fc_hwi.c:1410:16: sparse: got restricted __le32 [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:1497:46: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] init_flags @@ got unsigned int @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1497:46: sparse: expected restricted __le32 [usertype] init_flags drivers/scsi/bnx2fc/bnx2fc_hwi.c:1497:46: sparse: got unsigned int drivers/scsi/bnx2fc/bnx2fc_hwi.c:1499:46: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] init_flags @@ got unsigned int @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1499:46: sparse: expected restricted __le32 [usertype] init_flags drivers/scsi/bnx2fc/bnx2fc_hwi.c:1499:46: sparse: got unsigned int drivers/scsi/bnx2fc/bnx2fc_hwi.c:1502:63: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] cleaned_task_id @@ got unsigned short [usertype] orig_xid @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1502:63: sparse: expected restricted __le16 [usertype] cleaned_task_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:1502:63: sparse: got unsigned short [usertype] orig_xid drivers/scsi/bnx2fc/bnx2fc_hwi.c:1505:69: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] rolled_tx_data_offset @@ got unsigned int [usertype] offset @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1505:69: sparse: expected restricted __le32 [usertype] rolled_tx_data_offset drivers/scsi/bnx2fc/bnx2fc_hwi.c:1505:69: sparse: got unsigned int [usertype] offset drivers/scsi/bnx2fc/bnx2fc_hwi.c:1511:35: sparse: sparse: restricted __le16 degrades to integer drivers/scsi/bnx2fc/bnx2fc_hwi.c:1513:24: sparse: sparse: invalid assignment: -= drivers/scsi/bnx2fc/bnx2fc_hwi.c:1513:24: sparse: left side has type unsigned int drivers/scsi/bnx2fc/bnx2fc_hwi.c:1513:24: sparse: right side has type restricted __le16 drivers/scsi/bnx2fc/bnx2fc_hwi.c:1518:69: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] lo @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1518:69: sparse: expected restricted __le32 [usertype] lo drivers/scsi/bnx2fc/bnx2fc_hwi.c:1518:69: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:1520:69: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] hi @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1520:69: sparse: expected restricted __le32 [usertype] hi drivers/scsi/bnx2fc/bnx2fc_hwi.c:1520:69: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:1524:65: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] cur_sge_off @@ got unsigned int [usertype] offset @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1524:65: sparse: expected restricted __le16 [usertype] cur_sge_off drivers/scsi/bnx2fc/bnx2fc_hwi.c:1524:65: sparse: got unsigned int [usertype] offset drivers/scsi/bnx2fc/bnx2fc_hwi.c:1537:46: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] lo @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1537:46: sparse: expected restricted __le32 [usertype] lo drivers/scsi/bnx2fc/bnx2fc_hwi.c:1537:46: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:1538:46: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] hi @@ got unsigned int [usertype] @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1538:46: sparse: expected restricted __le32 [usertype] hi drivers/scsi/bnx2fc/bnx2fc_hwi.c:1538:46: sparse: got unsigned int [usertype] drivers/scsi/bnx2fc/bnx2fc_hwi.c:1540:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] cur_sge_off @@ got unsigned int [usertype] offset @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1540:42: sparse: expected restricted __le16 [usertype] cur_sge_off drivers/scsi/bnx2fc/bnx2fc_hwi.c:1540:42: sparse: got unsigned int [usertype] offset drivers/scsi/bnx2fc/bnx2fc_hwi.c:1545:55: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] low_exp_ro @@ got unsigned int [usertype] orig_offset @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1545:55: sparse: expected restricted __le32 [usertype] low_exp_ro drivers/scsi/bnx2fc/bnx2fc_hwi.c:1545:55: sparse: got unsigned int [usertype] orig_offset drivers/scsi/bnx2fc/bnx2fc_hwi.c:1546:56: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] high_exp_ro @@ got unsigned int [usertype] orig_offset @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1546:56: sparse: expected restricted __le32 [usertype] high_exp_ro drivers/scsi/bnx2fc/bnx2fc_hwi.c:1546:56: sparse: got unsigned int [usertype] orig_offset drivers/scsi/bnx2fc/bnx2fc_hwi.c:1573:63: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] cleaned_task_id @@ got unsigned short [usertype] orig_xid @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1573:63: sparse: expected restricted __le16 [usertype] cleaned_task_id drivers/scsi/bnx2fc/bnx2fc_hwi.c:1573:63: sparse: got unsigned short [usertype] orig_xid drivers/scsi/bnx2fc/bnx2fc_hwi.c:1581:46: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] init_flags @@ got unsigned int @@ drivers/scsi/bnx2fc/bnx2fc_hwi.c:1581:46: sparse: expected restricted __le32 [usertype] init_flags drivers/scsi/bnx2fc/bnx2fc_hwi.c:1581:46: sparse: got unsigned int drivers/scsi/bnx2fc/bnx2fc_hwi.c:1583:42: sparse: sparse: invalid assignment: |= drivers/scsi/bnx2fc/bnx2fc_hwi.c:1583:42: sparse: left side has type restricted __le16 drivers/scsi/bnx2fc/bnx2fc_hwi.c:1583:42: sparse: right side has type int drivers/scsi/bnx2fc/bnx2fc_hwi.c:1619:69: sparse: sparse: too many warnings # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=05933aac7b11911955de307a329dc2a7a14b7bd0 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git remote update linus git checkout 05933aac7b11911955de307a329dc2a7a14b7bd0 vim +993 drivers/scsi/bnx2fc/bnx2fc_hwi.c 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 625 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 626 static void bnx2fc_process_unsol_compl(struct bnx2fc_rport *tgt, u16 wqe) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 627 { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 628 u8 num_rq; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 629 struct fcoe_err_report_entry *err_entry; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 630 unsigned char *rq_data; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 631 unsigned char *buf = NULL, *buf1; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 632 int i; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 633 u16 xid; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 634 u32 frame_len, len; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 635 struct bnx2fc_cmd *io_req = NULL; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 636 struct fcoe_task_ctx_entry *task, *task_page; aea71a024914e8 Bhanu Prakash Gollapudi 2011-07-26 637 struct bnx2fc_interface *interface = tgt->port->priv; aea71a024914e8 Bhanu Prakash Gollapudi 2011-07-26 638 struct bnx2fc_hba *hba = interface->hba; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 639 int task_idx, index; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 640 int rc = 0; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 641 u64 err_warn_bit_map; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 642 u8 err_warn = 0xff; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 643 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 644 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 645 BNX2FC_TGT_DBG(tgt, "Entered UNSOL COMPLETION wqe = 0x%x\n", wqe); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 646 switch (wqe & FCOE_UNSOLICITED_CQE_SUBTYPE) { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 647 case FCOE_UNSOLICITED_FRAME_CQE_TYPE: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 648 frame_len = (wqe & FCOE_UNSOLICITED_CQE_PKT_LEN) >> 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 649 FCOE_UNSOLICITED_CQE_PKT_LEN_SHIFT; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 650 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 651 num_rq = (frame_len + BNX2FC_RQ_BUF_SZ - 1) / BNX2FC_RQ_BUF_SZ; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 652 686959736a8543 Nithin Sujir 2011-03-17 653 spin_lock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 654 rq_data = (unsigned char *)bnx2fc_get_next_rqe(tgt, num_rq); 686959736a8543 Nithin Sujir 2011-03-17 655 spin_unlock_bh(&tgt->tgt_lock); 686959736a8543 Nithin Sujir 2011-03-17 656 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 657 if (rq_data) { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 658 buf = rq_data; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 659 } else { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 660 buf1 = buf = kmalloc((num_rq * BNX2FC_RQ_BUF_SZ), 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 661 GFP_ATOMIC); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 662 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 663 if (!buf1) { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 664 BNX2FC_TGT_DBG(tgt, "Memory alloc failure\n"); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 665 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 666 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 667 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 668 for (i = 0; i < num_rq; i++) { 686959736a8543 Nithin Sujir 2011-03-17 669 spin_lock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 670 rq_data = (unsigned char *) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 671 bnx2fc_get_next_rqe(tgt, 1); 686959736a8543 Nithin Sujir 2011-03-17 672 spin_unlock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 673 len = BNX2FC_RQ_BUF_SZ; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 674 memcpy(buf1, rq_data, len); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 675 buf1 += len; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 676 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 677 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 678 bnx2fc_process_l2_frame_compl(tgt, buf, frame_len, 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 679 FC_XID_UNKNOWN); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 680 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 681 if (buf != rq_data) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 682 kfree(buf); 686959736a8543 Nithin Sujir 2011-03-17 683 spin_lock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 684 bnx2fc_return_rqe(tgt, num_rq); 686959736a8543 Nithin Sujir 2011-03-17 685 spin_unlock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 686 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 687 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 688 case FCOE_ERROR_DETECTION_CQE_TYPE: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 689 /* 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 690 * In case of error reporting CQE a single RQ entry 686959736a8543 Nithin Sujir 2011-03-17 691 * is consumed. 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 692 */ 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 693 spin_lock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 694 num_rq = 1; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 695 err_entry = (struct fcoe_err_report_entry *) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 696 bnx2fc_get_next_rqe(tgt, 1); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 697 xid = err_entry->fc_hdr.ox_id; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 698 BNX2FC_TGT_DBG(tgt, "Unsol Error Frame OX_ID = 0x%x\n", xid); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 699 BNX2FC_TGT_DBG(tgt, "err_warn_bitmap = %08x:%08x\n", 619c5cb6885b93 Vlad Zolotarov 2011-06-14 700 err_entry->data.err_warn_bitmap_hi, 619c5cb6885b93 Vlad Zolotarov 2011-06-14 701 err_entry->data.err_warn_bitmap_lo); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 702 BNX2FC_TGT_DBG(tgt, "buf_offsets - tx = 0x%x, rx = 0x%x\n", 619c5cb6885b93 Vlad Zolotarov 2011-06-14 703 err_entry->data.tx_buf_off, err_entry->data.rx_buf_off); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 704 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 705 0eb43b4bb081a1 Bhanu Prakash Gollapudi 2013-04-22 706 if (xid > hba->max_xid) { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 707 BNX2FC_TGT_DBG(tgt, "xid(0x%x) out of FW range\n", 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 708 xid); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 709 goto ret_err_rqe; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 710 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 711 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 712 task_idx = xid / BNX2FC_TASKS_PER_PAGE; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 713 index = xid % BNX2FC_TASKS_PER_PAGE; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 714 task_page = (struct fcoe_task_ctx_entry *) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 715 hba->task_ctx[task_idx]; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 716 task = &(task_page[index]); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 717 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 718 io_req = (struct bnx2fc_cmd *)hba->cmd_mgr->cmds[xid]; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 719 if (!io_req) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 720 goto ret_err_rqe; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 721 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 722 if (io_req->cmd_type != BNX2FC_SCSI_CMD) { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 723 printk(KERN_ERR PFX "err_warn: Not a SCSI cmd\n"); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 724 goto ret_err_rqe; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 725 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 726 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 727 if (test_and_clear_bit(BNX2FC_FLAG_IO_CLEANUP, 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 728 &io_req->req_flags)) { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 729 BNX2FC_IO_DBG(io_req, "unsol_err: cleanup in " 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 730 "progress.. ignore unsol err\n"); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 731 goto ret_err_rqe; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 732 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 733 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 734 err_warn_bit_map = (u64) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 735 ((u64)err_entry->data.err_warn_bitmap_hi << 32) | 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 736 (u64)err_entry->data.err_warn_bitmap_lo; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 737 for (i = 0; i < BNX2FC_NUM_ERR_BITS; i++) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 738 if (err_warn_bit_map & (u64)((u64)1 << i)) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 739 err_warn = i; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 740 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 741 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 742 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 743 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 744 /* 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 745 * If ABTS is already in progress, and FW error is 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 746 * received after that, do not cancel the timeout_work 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 747 * and let the error recovery continue by explicitly 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 748 * logging out the target, when the ABTS eventually 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 749 * times out. 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 750 */ 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 751 if (test_bit(BNX2FC_FLAG_ISSUE_ABTS, &io_req->req_flags)) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 752 printk(KERN_ERR PFX "err_warn: io_req (0x%x) already " 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 753 "in ABTS processing\n", xid); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 754 goto ret_err_rqe; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 755 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 756 BNX2FC_TGT_DBG(tgt, "err = 0x%x\n", err_warn); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 757 if (tgt->dev_type != TYPE_TAPE) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 758 goto skip_rec; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 759 switch (err_warn) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 760 case FCOE_ERROR_CODE_REC_TOV_TIMER_EXPIRATION: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 761 case FCOE_ERROR_CODE_DATA_OOO_RO: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 762 case FCOE_ERROR_CODE_COMMON_INCORRECT_SEQ_CNT: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 763 case FCOE_ERROR_CODE_DATA_SOFI3_SEQ_ACTIVE_SET: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 764 case FCOE_ERROR_CODE_FCP_RSP_OPENED_SEQ: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 765 case FCOE_ERROR_CODE_DATA_SOFN_SEQ_ACTIVE_RESET: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 766 BNX2FC_TGT_DBG(tgt, "REC TOV popped for xid - 0x%x\n", 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 767 xid); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 768 memcpy(&io_req->err_entry, err_entry, 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 769 sizeof(struct fcoe_err_report_entry)); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 770 if (!test_bit(BNX2FC_FLAG_SRR_SENT, 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 771 &io_req->req_flags)) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 772 spin_unlock_bh(&tgt->tgt_lock); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 773 rc = bnx2fc_send_rec(io_req); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 774 spin_lock_bh(&tgt->tgt_lock); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 775 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 776 if (rc) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 777 goto skip_rec; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 778 } else 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 779 printk(KERN_ERR PFX "SRR in progress\n"); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 780 goto ret_err_rqe; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 781 break; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 782 default: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 783 break; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 784 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 785 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 786 skip_rec: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 787 set_bit(BNX2FC_FLAG_ISSUE_ABTS, &io_req->req_flags); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 788 /* 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 789 * Cancel the timeout_work, as we received IO 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 790 * completion with FW error. 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 791 */ 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 792 if (cancel_delayed_work(&io_req->timeout_work)) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 793 kref_put(&io_req->refcount, bnx2fc_cmd_release); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 794 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 795 rc = bnx2fc_initiate_abts(io_req); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 796 if (rc != SUCCESS) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 797 printk(KERN_ERR PFX "err_warn: initiate_abts " 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 798 "failed xid = 0x%x. issue cleanup\n", 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 799 io_req->xid); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 800 bnx2fc_initiate_cleanup(io_req); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 801 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 802 ret_err_rqe: 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 803 bnx2fc_return_rqe(tgt, 1); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 804 spin_unlock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 805 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 806 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 807 case FCOE_WARNING_DETECTION_CQE_TYPE: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 808 /* 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 809 *In case of warning reporting CQE a single RQ entry 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 810 * is consumes. 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 811 */ 686959736a8543 Nithin Sujir 2011-03-17 812 spin_lock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 813 num_rq = 1; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 814 err_entry = (struct fcoe_err_report_entry *) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 815 bnx2fc_get_next_rqe(tgt, 1); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 @816 xid = cpu_to_be16(err_entry->fc_hdr.ox_id); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 817 BNX2FC_TGT_DBG(tgt, "Unsol Warning Frame OX_ID = 0x%x\n", xid); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 818 BNX2FC_TGT_DBG(tgt, "err_warn_bitmap = %08x:%08x", 619c5cb6885b93 Vlad Zolotarov 2011-06-14 819 err_entry->data.err_warn_bitmap_hi, 619c5cb6885b93 Vlad Zolotarov 2011-06-14 820 err_entry->data.err_warn_bitmap_lo); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 821 BNX2FC_TGT_DBG(tgt, "buf_offsets - tx = 0x%x, rx = 0x%x", 619c5cb6885b93 Vlad Zolotarov 2011-06-14 822 err_entry->data.tx_buf_off, err_entry->data.rx_buf_off); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 823 0eb43b4bb081a1 Bhanu Prakash Gollapudi 2013-04-22 824 if (xid > hba->max_xid) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 825 BNX2FC_TGT_DBG(tgt, "xid(0x%x) out of FW range\n", xid); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 826 goto ret_warn_rqe; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 827 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 828 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 829 err_warn_bit_map = (u64) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 830 ((u64)err_entry->data.err_warn_bitmap_hi << 32) | 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 831 (u64)err_entry->data.err_warn_bitmap_lo; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 832 for (i = 0; i < BNX2FC_NUM_ERR_BITS; i++) { d0c0d902339249 Colin Ian King 2019-05-04 833 if (err_warn_bit_map & ((u64)1 << i)) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 834 err_warn = i; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 835 break; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 836 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 837 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 838 BNX2FC_TGT_DBG(tgt, "warn = 0x%x\n", err_warn); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 839 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 840 task_idx = xid / BNX2FC_TASKS_PER_PAGE; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 841 index = xid % BNX2FC_TASKS_PER_PAGE; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 842 task_page = (struct fcoe_task_ctx_entry *) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 843 interface->hba->task_ctx[task_idx]; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 844 task = &(task_page[index]); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 845 io_req = (struct bnx2fc_cmd *)hba->cmd_mgr->cmds[xid]; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 846 if (!io_req) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 847 goto ret_warn_rqe; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 848 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 849 if (io_req->cmd_type != BNX2FC_SCSI_CMD) { 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 850 printk(KERN_ERR PFX "err_warn: Not a SCSI cmd\n"); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 851 goto ret_warn_rqe; 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 852 } 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 853 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 854 memcpy(&io_req->err_entry, err_entry, 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 855 sizeof(struct fcoe_err_report_entry)); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 856 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 857 if (err_warn == FCOE_ERROR_CODE_REC_TOV_TIMER_EXPIRATION) 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 858 /* REC_TOV is not a warning code */ 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 859 BUG_ON(1); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 860 else 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 861 BNX2FC_TGT_DBG(tgt, "Unsolicited warning\n"); 7b594769120b43 Bhanu Prakash Gollapudi 2011-07-27 862 ret_warn_rqe: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 863 bnx2fc_return_rqe(tgt, 1); 686959736a8543 Nithin Sujir 2011-03-17 864 spin_unlock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 865 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 866 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 867 default: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 868 printk(KERN_ERR PFX "Unsol Compl: Invalid CQE Subtype\n"); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 869 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 870 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 871 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 872 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 873 void bnx2fc_process_cq_compl(struct bnx2fc_rport *tgt, u16 wqe) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 874 { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 875 struct fcoe_task_ctx_entry *task; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 876 struct fcoe_task_ctx_entry *task_page; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 877 struct fcoe_port *port = tgt->port; aea71a024914e8 Bhanu Prakash Gollapudi 2011-07-26 878 struct bnx2fc_interface *interface = port->priv; aea71a024914e8 Bhanu Prakash Gollapudi 2011-07-26 879 struct bnx2fc_hba *hba = interface->hba; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 880 struct bnx2fc_cmd *io_req; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 881 int task_idx, index; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 882 u16 xid; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 883 u8 cmd_type; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 884 u8 rx_state = 0; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 885 u8 num_rq; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 886 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 887 spin_lock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 888 xid = wqe & FCOE_PEND_WQ_CQE_TASK_ID; 0eb43b4bb081a1 Bhanu Prakash Gollapudi 2013-04-22 889 if (xid >= hba->max_tasks) { b2a554ff9ad5cd Bhanu Prakash Gollapudi 2011-06-27 890 printk(KERN_ERR PFX "ERROR:xid out of range\n"); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 891 spin_unlock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 892 return; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 893 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 894 task_idx = xid / BNX2FC_TASKS_PER_PAGE; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 895 index = xid % BNX2FC_TASKS_PER_PAGE; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 896 task_page = (struct fcoe_task_ctx_entry *)hba->task_ctx[task_idx]; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 897 task = &(task_page[index]); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 898 619c5cb6885b93 Vlad Zolotarov 2011-06-14 899 num_rq = ((task->rxwr_txrd.var_ctx.rx_flags & 619c5cb6885b93 Vlad Zolotarov 2011-06-14 900 FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE) >> 619c5cb6885b93 Vlad Zolotarov 2011-06-14 901 FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE_SHIFT); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 902 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 903 io_req = (struct bnx2fc_cmd *)hba->cmd_mgr->cmds[xid]; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 904 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 905 if (io_req == NULL) { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 906 printk(KERN_ERR PFX "ERROR? cq_compl - io_req is NULL\n"); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 907 spin_unlock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 908 return; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 909 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 910 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 911 /* Timestamp IO completion time */ 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 912 cmd_type = io_req->cmd_type; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 913 619c5cb6885b93 Vlad Zolotarov 2011-06-14 914 rx_state = ((task->rxwr_txrd.var_ctx.rx_flags & 619c5cb6885b93 Vlad Zolotarov 2011-06-14 915 FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE) >> 619c5cb6885b93 Vlad Zolotarov 2011-06-14 916 FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE_SHIFT); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 917 619c5cb6885b93 Vlad Zolotarov 2011-06-14 918 /* Process other IO completion types */ 619c5cb6885b93 Vlad Zolotarov 2011-06-14 919 switch (cmd_type) { 619c5cb6885b93 Vlad Zolotarov 2011-06-14 920 case BNX2FC_SCSI_CMD: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 921 if (rx_state == FCOE_TASK_RX_STATE_COMPLETED) { 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 922 bnx2fc_process_scsi_cmd_compl(io_req, task, num_rq); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 923 spin_unlock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 924 return; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 925 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 926 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 927 if (rx_state == FCOE_TASK_RX_STATE_ABTS_COMPLETED) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 928 bnx2fc_process_abts_compl(io_req, task, num_rq); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 929 else if (rx_state == 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 930 FCOE_TASK_RX_STATE_EXCHANGE_CLEANUP_COMPLETED) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 931 bnx2fc_process_cleanup_compl(io_req, task, num_rq); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 932 else 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 933 printk(KERN_ERR PFX "Invalid rx state - %d\n", 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 934 rx_state); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 935 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 936 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 937 case BNX2FC_TASK_MGMT_CMD: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 938 BNX2FC_IO_DBG(io_req, "Processing TM complete\n"); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 939 bnx2fc_process_tm_compl(io_req, task, num_rq); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 940 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 941 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 942 case BNX2FC_ABTS: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 943 /* 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 944 * ABTS request received by firmware. ABTS response 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 945 * will be delivered to the task belonging to the IO 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 946 * that was aborted 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 947 */ 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 948 BNX2FC_IO_DBG(io_req, "cq_compl- ABTS sent out by fw\n"); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 949 kref_put(&io_req->refcount, bnx2fc_cmd_release); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 950 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 951 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 952 case BNX2FC_ELS: 619c5cb6885b93 Vlad Zolotarov 2011-06-14 953 if (rx_state == FCOE_TASK_RX_STATE_COMPLETED) 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 954 bnx2fc_process_els_compl(io_req, task, num_rq); 619c5cb6885b93 Vlad Zolotarov 2011-06-14 955 else if (rx_state == FCOE_TASK_RX_STATE_ABTS_COMPLETED) 619c5cb6885b93 Vlad Zolotarov 2011-06-14 956 bnx2fc_process_abts_compl(io_req, task, num_rq); 619c5cb6885b93 Vlad Zolotarov 2011-06-14 957 else if (rx_state == 619c5cb6885b93 Vlad Zolotarov 2011-06-14 958 FCOE_TASK_RX_STATE_EXCHANGE_CLEANUP_COMPLETED) 619c5cb6885b93 Vlad Zolotarov 2011-06-14 959 bnx2fc_process_cleanup_compl(io_req, task, num_rq); 619c5cb6885b93 Vlad Zolotarov 2011-06-14 960 else 619c5cb6885b93 Vlad Zolotarov 2011-06-14 961 printk(KERN_ERR PFX "Invalid rx state = %d\n", 619c5cb6885b93 Vlad Zolotarov 2011-06-14 962 rx_state); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 963 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 964 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 965 case BNX2FC_CLEANUP: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 966 BNX2FC_IO_DBG(io_req, "cq_compl- cleanup resp rcvd\n"); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 967 kref_put(&io_req->refcount, bnx2fc_cmd_release); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 968 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 969 6c5a7ce4f176b6 Bhanu Prakash Gollapudi 2011-07-27 970 case BNX2FC_SEQ_CLEANUP: 6c5a7ce4f176b6 Bhanu Prakash Gollapudi 2011-07-27 971 BNX2FC_IO_DBG(io_req, "cq_compl(0x%x) - seq cleanup resp\n", 6c5a7ce4f176b6 Bhanu Prakash Gollapudi 2011-07-27 972 io_req->xid); 6c5a7ce4f176b6 Bhanu Prakash Gollapudi 2011-07-27 973 bnx2fc_process_seq_cleanup_compl(io_req, task, rx_state); 6c5a7ce4f176b6 Bhanu Prakash Gollapudi 2011-07-27 974 kref_put(&io_req->refcount, bnx2fc_cmd_release); 6c5a7ce4f176b6 Bhanu Prakash Gollapudi 2011-07-27 975 break; 6c5a7ce4f176b6 Bhanu Prakash Gollapudi 2011-07-27 976 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 977 default: 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 978 printk(KERN_ERR PFX "Invalid cmd_type %d\n", cmd_type); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 979 break; 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 980 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 981 spin_unlock_bh(&tgt->tgt_lock); 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 982 } 853e2bd2103aaa Bhanu Gollapudi 2011-02-04 983 619c5cb6885b93 Vlad Zolotarov 2011-06-14 984 void bnx2fc_arm_cq(struct bnx2fc_rport *tgt) 619c5cb6885b93 Vlad Zolotarov 2011-06-14 985 { 619c5cb6885b93 Vlad Zolotarov 2011-06-14 986 struct b577xx_fcoe_rx_doorbell *rx_db = &tgt->rx_db; 619c5cb6885b93 Vlad Zolotarov 2011-06-14 987 u32 msg; 619c5cb6885b93 Vlad Zolotarov 2011-06-14 988 619c5cb6885b93 Vlad Zolotarov 2011-06-14 989 wmb(); 619c5cb6885b93 Vlad Zolotarov 2011-06-14 990 rx_db->doorbell_cq_cons = tgt->cq_cons_idx | (tgt->cq_curr_toggle_bit << 619c5cb6885b93 Vlad Zolotarov 2011-06-14 991 FCOE_CQE_TOGGLE_BIT_SHIFT); 619c5cb6885b93 Vlad Zolotarov 2011-06-14 992 msg = *((u32 *)rx_db); 619c5cb6885b93 Vlad Zolotarov 2011-06-14 @993 writel(cpu_to_le32(msg), tgt->ctx_base); 619c5cb6885b93 Vlad Zolotarov 2011-06-14 994 :::::: The code at line 993 was first introduced by commit :::::: 619c5cb6885b936c44ae1422ef805b69c6291485 New 7.0 FW: bnx2x, cnic, bnx2i, bnx2fc :::::: TO: Vlad Zolotarov <[email protected]> :::::: CC: David S. Miller <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
