Messages in this thread | | | Date | Mon, 17 Aug 2020 03:34:54 +0800 | From | kernel test robot <> | Subject | drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:543:49: sparse: sparse: incorrect type in argument 2 (different address spaces) |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 2cc3c4b3c2e9c99e90aaf19cd801ff2c160f283c commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces date: 8 weeks ago config: mips-randconfig-s032-20200817 (attached as .config) compiler: mips64-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.2-180-g49f7e13a-dirty git checkout 670d0a4b10704667765f7d18f7592993d02783aa # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:135:9: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:140:9: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:450:41: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:450:38: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *[assigned] inst_cnt_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:450:38: sparse: expected void [noderef] __iomem *[assigned] inst_cnt_reg drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:450:38: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:543:23: sparse: sparse: cast removes address space '__iomem' of expression >> drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:543:49: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got unsigned char [usertype] * @@ >> drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:543:49: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:543:49: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:551:31: sparse: sparse: cast removes address space '__iomem' of expression >> drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:551:57: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got unsigned char [usertype] * @@ >> drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:551:57: sparse: expected void const volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:551:57: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:553:25: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:553:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:553:51: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:553:51: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:558:25: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:558:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:558:51: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:558:51: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:561:25: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:561:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:561:51: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:561:51: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:603:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:602:26: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *doorbell_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:602:26: sparse: expected void [noderef] __iomem *doorbell_reg drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:602:26: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:605:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:604:26: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *inst_cnt_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:604:26: sparse: expected void [noderef] __iomem *inst_cnt_reg drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:604:26: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:647:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:646:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *pkts_sent_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:646:29: sparse: expected void [noderef] __iomem *pkts_sent_reg drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:646:29: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:649:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:648:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *pkts_credit_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:648:31: sparse: expected void [noderef] __iomem *pkts_credit_reg drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:648:31: sparse: got unsigned char [usertype] * >> drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:688:42: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void *mbox_int_reg @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:688:42: sparse: expected void const volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:688:42: sparse: got void *mbox_int_reg >> drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:689:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_int_reg @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:689:42: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:689:42: sparse: got void *mbox_int_reg >> drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:694:54: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void *mbox_write_reg @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:694:54: sparse: expected void const volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:694:54: sparse: got void *mbox_write_reg drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:737:39: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:741:41: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:745:40: sparse: sparse: cast removes address space '__iomem' of expression >> drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:755:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:755:44: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:755:44: sparse: got void *mbox_read_reg drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:990:42: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void *mbox_int_reg @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:990:42: sparse: expected void const volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:990:42: sparse: got void *mbox_int_reg drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:997:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_int_reg @@ drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:997:44: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c:997:44: sparse: got void *mbox_int_reg -- drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:121:41: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:121:38: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *[assigned] inst_cnt_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:121:38: sparse: expected void [noderef] __iomem *[assigned] inst_cnt_reg drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:121:38: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:226:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:225:26: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *doorbell_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:225:26: sparse: expected void [noderef] __iomem *doorbell_reg drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:225:26: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:228:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:227:26: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *inst_cnt_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:227:26: sparse: expected void [noderef] __iomem *inst_cnt_reg drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:227:26: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:258:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:257:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *pkts_sent_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:257:29: sparse: expected void [noderef] __iomem *pkts_sent_reg drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:257:29: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:260:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:259:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *pkts_credit_reg @@ got unsigned char [usertype] * @@ drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:259:31: sparse: expected void [noderef] __iomem *pkts_credit_reg drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:259:31: sparse: got unsigned char [usertype] * drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:298:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:301:14: sparse: sparse: cast removes address space '__iomem' of expression drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:304:14: sparse: sparse: cast removes address space '__iomem' of expression >> drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:313:36: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ >> drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:313:36: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:313:36: sparse: got void *mbox_read_reg >> drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:479:50: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void *mbox_int_reg @@ >> drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:479:50: sparse: expected void const volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:479:50: sparse: got void *mbox_int_reg >> drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:480:50: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_int_reg @@ drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:480:50: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c:480:50: sparse: got void *mbox_int_reg -- >> drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:43:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ >> drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:43:29: sparse: expected void const volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:43:29: sparse: got void *mbox_read_reg >> drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:81:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ >> drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:81:52: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:81:52: sparse: got void *mbox_read_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:115:36: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:115:36: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:115:36: sparse: got void *mbox_read_reg >> drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:163:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void *mbox_write_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:163:26: sparse: expected void const volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:163:26: sparse: got void *mbox_write_reg >> drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:172:47: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_write_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:172:47: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:172:47: sparse: got void *mbox_write_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:175:42: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void *mbox_write_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:175:42: sparse: expected void const volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:175:42: sparse: got void *mbox_write_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:184:63: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_write_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:184:63: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:184:63: sparse: got void *mbox_write_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:193:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:193:44: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:193:44: sparse: got void *mbox_read_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:305:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:305:52: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:305:52: sparse: got void *mbox_read_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:315:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:315:44: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:315:44: sparse: got void *mbox_read_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:324:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:324:44: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:324:44: sparse: got void *mbox_read_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:340:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:340:52: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:340:52: sparse: got void *mbox_read_reg drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:370:36: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void *mbox_read_reg @@ drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:370:36: sparse: expected void volatile [noderef] __iomem *mem drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c:370:36: sparse: got void *mbox_read_reg
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=670d0a4b10704667765f7d18f7592993d02783aa git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 670d0a4b10704667765f7d18f7592993d02783aa vim +543 drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c
3451b97cce2d78 Raghu Vatsavayi 2016-08-31 474 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 475 static void cn23xx_pf_setup_global_output_regs(struct octeon_device *oct) 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 476 { 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 477 u32 reg_val; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 478 u32 q_no, ern, srn; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 479 u64 time_threshold; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 480 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 481 struct octeon_cn23xx_pf *cn23xx = (struct octeon_cn23xx_pf *)oct->chip; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 482 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 483 srn = oct->sriov_info.pf_srn; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 484 ern = srn + oct->sriov_info.num_pf_rings; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 485 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 486 if (CFG_GET_IS_SLI_BP_ON(cn23xx->conf)) { 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 487 octeon_write_csr64(oct, CN23XX_SLI_OQ_WMARK, 32); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 488 } else { 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 489 /** Set Output queue watermark to 0 to disable backpressure */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 490 octeon_write_csr64(oct, CN23XX_SLI_OQ_WMARK, 0); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 491 } 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 492 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 493 for (q_no = srn; q_no < ern; q_no++) { 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 494 reg_val = octeon_read_csr(oct, CN23XX_SLI_OQ_PKT_CONTROL(q_no)); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 495 ac13d6d8eaded1 Rick Farrington 2018-07-13 496 /* clear IPTR */ ac13d6d8eaded1 Rick Farrington 2018-07-13 497 reg_val &= ~CN23XX_PKT_OUTPUT_CTL_IPTR; ac13d6d8eaded1 Rick Farrington 2018-07-13 498 c4ee5d8103ed78 Prasad Kanneganti 2017-06-18 499 /* set DPTR */ c4ee5d8103ed78 Prasad Kanneganti 2017-06-18 500 reg_val |= CN23XX_PKT_OUTPUT_CTL_DPTR; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 501 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 502 /* reset BMODE */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 503 reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_BMODE); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 504 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 505 /* No Relaxed Ordering, No Snoop, 64-bit Byte swap 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 506 * for Output Queue ScatterList 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 507 * reset ROR_P, NSR_P 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 508 */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 509 reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_ROR_P); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 510 reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_NSR_P); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 511 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 512 #ifdef __LITTLE_ENDIAN_BITFIELD 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 513 reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_ES_P); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 514 #else 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 515 reg_val |= (CN23XX_PKT_OUTPUT_CTL_ES_P); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 516 #endif 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 517 /* No Relaxed Ordering, No Snoop, 64-bit Byte swap 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 518 * for Output Queue Data 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 519 * reset ROR, NSR 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 520 */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 521 reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_ROR); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 522 reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_NSR); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 523 /* set the ES bit */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 524 reg_val |= (CN23XX_PKT_OUTPUT_CTL_ES); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 525 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 526 /* write all the selected settings */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 527 octeon_write_csr(oct, CN23XX_SLI_OQ_PKT_CONTROL(q_no), reg_val); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 528 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 529 /* Enabling these interrupt in oct->fn_list.enable_interrupt() 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 530 * routine which called after IOQ init. 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 531 * Set up interrupt packet and time thresholds 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 532 * for all the OQs 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 533 */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 534 time_threshold = cn23xx_pf_get_oq_ticks( 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 535 oct, (u32)CFG_GET_OQ_INTR_TIME(cn23xx->conf)); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 536 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 537 octeon_write_csr64(oct, CN23XX_SLI_OQ_PKT_INT_LEVELS(q_no), 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 538 (CFG_GET_OQ_INTR_PKT(cn23xx->conf) | 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 539 (time_threshold << 32))); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 540 } 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 541 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 542 /** Setting the water mark level for pko back pressure **/ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 @543 writeq(0x40, (u8 *)oct->mmio[0].hw_addr + CN23XX_SLI_OQ_WMARK); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 544 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 545 /** Disabling setting OQs in reset when ring has no dorebells 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 546 * enabling this will cause of head of line blocking 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 547 */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 548 /* Do it only for pass1.1. and pass1.2 */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 549 if ((oct->rev_id == OCTEON_CN23XX_REV_1_0) || 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 550 (oct->rev_id == OCTEON_CN23XX_REV_1_1)) 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 @551 writeq(readq((u8 *)oct->mmio[0].hw_addr + 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 552 CN23XX_SLI_GBL_CONTROL) | 0x2, 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 553 (u8 *)oct->mmio[0].hw_addr + CN23XX_SLI_GBL_CONTROL); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 554 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 555 /** Enable channel-level backpressure */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 556 if (oct->pf_num) 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 557 writeq(0xffffffffffffffffULL, 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 558 (u8 *)oct->mmio[0].hw_addr + CN23XX_SLI_OUT_BP_EN2_W1S); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 559 else 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 560 writeq(0xffffffffffffffffULL, 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 561 (u8 *)oct->mmio[0].hw_addr + CN23XX_SLI_OUT_BP_EN_W1S); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 562 } 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 563 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 564 static int cn23xx_setup_pf_device_regs(struct octeon_device *oct) 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 565 { 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 566 cn23xx_enable_error_reporting(oct); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 567 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 568 /* program the MAC(0..3)_RINFO before setting up input/output regs */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 569 cn23xx_setup_global_mac_regs(oct); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 570 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 571 if (cn23xx_pf_setup_global_input_regs(oct)) 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 572 return -1; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 573 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 574 cn23xx_pf_setup_global_output_regs(oct); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 575 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 576 /* Default error timeout value should be 0x200000 to avoid host hang 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 577 * when reads invalid register 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 578 */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 579 octeon_write_csr64(oct, CN23XX_SLI_WINDOW_CTL, 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 580 CN23XX_SLI_WINDOW_CTL_DEFAULT); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 581 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 582 /* set SLI_PKT_IN_JABBER to handle large VXLAN packets */ 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 583 octeon_write_csr64(oct, CN23XX_SLI_PKT_IN_JABBER, CN23XX_INPUT_JABBER); 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 584 return 0; 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 585 } 3451b97cce2d78 Raghu Vatsavayi 2016-08-31 586 72c0091293c008 Raghu Vatsavayi 2016-08-31 587 static void cn23xx_setup_iq_regs(struct octeon_device *oct, u32 iq_no) 72c0091293c008 Raghu Vatsavayi 2016-08-31 588 { 72c0091293c008 Raghu Vatsavayi 2016-08-31 589 struct octeon_instr_queue *iq = oct->instr_queue[iq_no]; 72c0091293c008 Raghu Vatsavayi 2016-08-31 590 u64 pkt_in_done; 72c0091293c008 Raghu Vatsavayi 2016-08-31 591 72c0091293c008 Raghu Vatsavayi 2016-08-31 592 iq_no += oct->sriov_info.pf_srn; 72c0091293c008 Raghu Vatsavayi 2016-08-31 593 72c0091293c008 Raghu Vatsavayi 2016-08-31 594 /* Write the start of the input queue's ring and its size */ 72c0091293c008 Raghu Vatsavayi 2016-08-31 595 octeon_write_csr64(oct, CN23XX_SLI_IQ_BASE_ADDR64(iq_no), 72c0091293c008 Raghu Vatsavayi 2016-08-31 596 iq->base_addr_dma); 72c0091293c008 Raghu Vatsavayi 2016-08-31 597 octeon_write_csr(oct, CN23XX_SLI_IQ_SIZE(iq_no), iq->max_count); 72c0091293c008 Raghu Vatsavayi 2016-08-31 598 72c0091293c008 Raghu Vatsavayi 2016-08-31 599 /* Remember the doorbell & instruction count register addr 72c0091293c008 Raghu Vatsavayi 2016-08-31 600 * for this queue 72c0091293c008 Raghu Vatsavayi 2016-08-31 601 */ 72c0091293c008 Raghu Vatsavayi 2016-08-31 602 iq->doorbell_reg = 72c0091293c008 Raghu Vatsavayi 2016-08-31 603 (u8 *)oct->mmio[0].hw_addr + CN23XX_SLI_IQ_DOORBELL(iq_no); 72c0091293c008 Raghu Vatsavayi 2016-08-31 604 iq->inst_cnt_reg = 72c0091293c008 Raghu Vatsavayi 2016-08-31 605 (u8 *)oct->mmio[0].hw_addr + CN23XX_SLI_IQ_INSTR_COUNT64(iq_no); 72c0091293c008 Raghu Vatsavayi 2016-08-31 606 dev_dbg(&oct->pci_dev->dev, "InstQ[%d]:dbell reg @ 0x%p instcnt_reg @ 0x%p\n", 72c0091293c008 Raghu Vatsavayi 2016-08-31 607 iq_no, iq->doorbell_reg, iq->inst_cnt_reg); 72c0091293c008 Raghu Vatsavayi 2016-08-31 608 72c0091293c008 Raghu Vatsavayi 2016-08-31 609 /* Store the current instruction counter (used in flush_iq 72c0091293c008 Raghu Vatsavayi 2016-08-31 610 * calculation) 72c0091293c008 Raghu Vatsavayi 2016-08-31 611 */ 72c0091293c008 Raghu Vatsavayi 2016-08-31 612 pkt_in_done = readq(iq->inst_cnt_reg); 72c0091293c008 Raghu Vatsavayi 2016-08-31 613 5b07aee11227fa Raghu Vatsavayi 2016-08-31 614 if (oct->msix_on) { 5b07aee11227fa Raghu Vatsavayi 2016-08-31 615 /* Set CINT_ENB to enable IQ interrupt */ 5b07aee11227fa Raghu Vatsavayi 2016-08-31 616 writeq((pkt_in_done | CN23XX_INTR_CINT_ENB), 5b07aee11227fa Raghu Vatsavayi 2016-08-31 617 iq->inst_cnt_reg); 5b07aee11227fa Raghu Vatsavayi 2016-08-31 618 } else { 72c0091293c008 Raghu Vatsavayi 2016-08-31 619 /* Clear the count by writing back what we read, but don't 72c0091293c008 Raghu Vatsavayi 2016-08-31 620 * enable interrupts 72c0091293c008 Raghu Vatsavayi 2016-08-31 621 */ 72c0091293c008 Raghu Vatsavayi 2016-08-31 622 writeq(pkt_in_done, iq->inst_cnt_reg); 5b07aee11227fa Raghu Vatsavayi 2016-08-31 623 } 72c0091293c008 Raghu Vatsavayi 2016-08-31 624 72c0091293c008 Raghu Vatsavayi 2016-08-31 625 iq->reset_instr_cnt = 0; 72c0091293c008 Raghu Vatsavayi 2016-08-31 626 } 72c0091293c008 Raghu Vatsavayi 2016-08-31 627 72c0091293c008 Raghu Vatsavayi 2016-08-31 628 static void cn23xx_setup_oq_regs(struct octeon_device *oct, u32 oq_no) 72c0091293c008 Raghu Vatsavayi 2016-08-31 629 { 72c0091293c008 Raghu Vatsavayi 2016-08-31 630 u32 reg_val; 72c0091293c008 Raghu Vatsavayi 2016-08-31 631 struct octeon_droq *droq = oct->droq[oq_no]; 5b07aee11227fa Raghu Vatsavayi 2016-08-31 632 struct octeon_cn23xx_pf *cn23xx = (struct octeon_cn23xx_pf *)oct->chip; 5b07aee11227fa Raghu Vatsavayi 2016-08-31 633 u64 time_threshold; 5b07aee11227fa Raghu Vatsavayi 2016-08-31 634 u64 cnt_threshold; 72c0091293c008 Raghu Vatsavayi 2016-08-31 635 72c0091293c008 Raghu Vatsavayi 2016-08-31 636 oq_no += oct->sriov_info.pf_srn; 72c0091293c008 Raghu Vatsavayi 2016-08-31 637 72c0091293c008 Raghu Vatsavayi 2016-08-31 638 octeon_write_csr64(oct, CN23XX_SLI_OQ_BASE_ADDR64(oq_no), 72c0091293c008 Raghu Vatsavayi 2016-08-31 639 droq->desc_ring_dma); 72c0091293c008 Raghu Vatsavayi 2016-08-31 640 octeon_write_csr(oct, CN23XX_SLI_OQ_SIZE(oq_no), droq->max_count); 72c0091293c008 Raghu Vatsavayi 2016-08-31 641 72c0091293c008 Raghu Vatsavayi 2016-08-31 642 octeon_write_csr(oct, CN23XX_SLI_OQ_BUFF_INFO_SIZE(oq_no), c4ee5d8103ed78 Prasad Kanneganti 2017-06-18 643 droq->buffer_size); 72c0091293c008 Raghu Vatsavayi 2016-08-31 644 72c0091293c008 Raghu Vatsavayi 2016-08-31 645 /* Get the mapped address of the pkt_sent and pkts_credit regs */ 72c0091293c008 Raghu Vatsavayi 2016-08-31 646 droq->pkts_sent_reg = 72c0091293c008 Raghu Vatsavayi 2016-08-31 647 (u8 *)oct->mmio[0].hw_addr + CN23XX_SLI_OQ_PKTS_SENT(oq_no); 72c0091293c008 Raghu Vatsavayi 2016-08-31 648 droq->pkts_credit_reg = 72c0091293c008 Raghu Vatsavayi 2016-08-31 649 (u8 *)oct->mmio[0].hw_addr + CN23XX_SLI_OQ_PKTS_CREDIT(oq_no); 72c0091293c008 Raghu Vatsavayi 2016-08-31 650 5b07aee11227fa Raghu Vatsavayi 2016-08-31 651 if (!oct->msix_on) { 72c0091293c008 Raghu Vatsavayi 2016-08-31 652 /* Enable this output queue to generate Packet Timer Interrupt 72c0091293c008 Raghu Vatsavayi 2016-08-31 653 */ 5b07aee11227fa Raghu Vatsavayi 2016-08-31 654 reg_val = 5b07aee11227fa Raghu Vatsavayi 2016-08-31 655 octeon_read_csr(oct, CN23XX_SLI_OQ_PKT_CONTROL(oq_no)); 72c0091293c008 Raghu Vatsavayi 2016-08-31 656 reg_val |= CN23XX_PKT_OUTPUT_CTL_TENB; 72c0091293c008 Raghu Vatsavayi 2016-08-31 657 octeon_write_csr(oct, CN23XX_SLI_OQ_PKT_CONTROL(oq_no), 72c0091293c008 Raghu Vatsavayi 2016-08-31 658 reg_val); 72c0091293c008 Raghu Vatsavayi 2016-08-31 659 72c0091293c008 Raghu Vatsavayi 2016-08-31 660 /* Enable this output queue to generate Packet Count Interrupt 72c0091293c008 Raghu Vatsavayi 2016-08-31 661 */ 5b07aee11227fa Raghu Vatsavayi 2016-08-31 662 reg_val = 5b07aee11227fa Raghu Vatsavayi 2016-08-31 663 octeon_read_csr(oct, CN23XX_SLI_OQ_PKT_CONTROL(oq_no)); 72c0091293c008 Raghu Vatsavayi 2016-08-31 664 reg_val |= CN23XX_PKT_OUTPUT_CTL_CENB; 72c0091293c008 Raghu Vatsavayi 2016-08-31 665 octeon_write_csr(oct, CN23XX_SLI_OQ_PKT_CONTROL(oq_no), 72c0091293c008 Raghu Vatsavayi 2016-08-31 666 reg_val); 5b07aee11227fa Raghu Vatsavayi 2016-08-31 667 } else { 5b07aee11227fa Raghu Vatsavayi 2016-08-31 668 time_threshold = cn23xx_pf_get_oq_ticks( 5b07aee11227fa Raghu Vatsavayi 2016-08-31 669 oct, (u32)CFG_GET_OQ_INTR_TIME(cn23xx->conf)); 5b07aee11227fa Raghu Vatsavayi 2016-08-31 670 cnt_threshold = (u32)CFG_GET_OQ_INTR_PKT(cn23xx->conf); 5b07aee11227fa Raghu Vatsavayi 2016-08-31 671 5b07aee11227fa Raghu Vatsavayi 2016-08-31 672 octeon_write_csr64( 5b07aee11227fa Raghu Vatsavayi 2016-08-31 673 oct, CN23XX_SLI_OQ_PKT_INT_LEVELS(oq_no), 5b07aee11227fa Raghu Vatsavayi 2016-08-31 674 ((time_threshold << 32 | cnt_threshold))); 5b07aee11227fa Raghu Vatsavayi 2016-08-31 675 } 72c0091293c008 Raghu Vatsavayi 2016-08-31 676 } 72c0091293c008 Raghu Vatsavayi 2016-08-31 677 5d65556beb3668 Raghu Vatsavayi 2016-11-14 678 static void cn23xx_pf_mbox_thread(struct work_struct *work) 5d65556beb3668 Raghu Vatsavayi 2016-11-14 679 { 5d65556beb3668 Raghu Vatsavayi 2016-11-14 680 struct cavium_wk *wk = (struct cavium_wk *)work; 5d65556beb3668 Raghu Vatsavayi 2016-11-14 681 struct octeon_mbox *mbox = (struct octeon_mbox *)wk->ctxptr; 5d65556beb3668 Raghu Vatsavayi 2016-11-14 682 struct octeon_device *oct = mbox->oct_dev; 5d65556beb3668 Raghu Vatsavayi 2016-11-14 683 u64 mbox_int_val, val64; 5d65556beb3668 Raghu Vatsavayi 2016-11-14 684 u32 q_no, i; 5d65556beb3668 Raghu Vatsavayi 2016-11-14 685 5d65556beb3668 Raghu Vatsavayi 2016-11-14 686 if (oct->rev_id < OCTEON_CN23XX_REV_1_1) { 5d65556beb3668 Raghu Vatsavayi 2016-11-14 687 /*read and clear by writing 1*/ 5d65556beb3668 Raghu Vatsavayi 2016-11-14 @688 mbox_int_val = readq(mbox->mbox_int_reg); 5d65556beb3668 Raghu Vatsavayi 2016-11-14 @689 writeq(mbox_int_val, mbox->mbox_int_reg); 5d65556beb3668 Raghu Vatsavayi 2016-11-14 690 5d65556beb3668 Raghu Vatsavayi 2016-11-14 691 for (i = 0; i < oct->sriov_info.num_vfs_alloced; i++) { 5d65556beb3668 Raghu Vatsavayi 2016-11-14 692 q_no = i * oct->sriov_info.rings_per_vf; 5d65556beb3668 Raghu Vatsavayi 2016-11-14 693 5d65556beb3668 Raghu Vatsavayi 2016-11-14 @694 val64 = readq(oct->mbox[q_no]->mbox_write_reg); 5d65556beb3668 Raghu Vatsavayi 2016-11-14 695 5d65556beb3668 Raghu Vatsavayi 2016-11-14 696 if (val64 && (val64 != OCTEON_PFVFACK)) { 5d65556beb3668 Raghu Vatsavayi 2016-11-14 697 if (octeon_mbox_read(oct->mbox[q_no])) 5d65556beb3668 Raghu Vatsavayi 2016-11-14 698 octeon_mbox_process_message( 5d65556beb3668 Raghu Vatsavayi 2016-11-14 699 oct->mbox[q_no]); 5d65556beb3668 Raghu Vatsavayi 2016-11-14 700 } 5d65556beb3668 Raghu Vatsavayi 2016-11-14 701 } 5d65556beb3668 Raghu Vatsavayi 2016-11-14 702 5d65556beb3668 Raghu Vatsavayi 2016-11-14 703 schedule_delayed_work(&wk->work, msecs_to_jiffies(10)); 5d65556beb3668 Raghu Vatsavayi 2016-11-14 704 } else { 5d65556beb3668 Raghu Vatsavayi 2016-11-14 705 octeon_mbox_process_message(mbox); 5d65556beb3668 Raghu Vatsavayi 2016-11-14 706 } 5d65556beb3668 Raghu Vatsavayi 2016-11-14 707 } 5d65556beb3668 Raghu Vatsavayi 2016-11-14 708
:::::: The code at line 543 was first introduced by commit :::::: 3451b97cce2d7827bd76378ae6e9aeb7e8fc463d liquidio: CN23XX register setup
:::::: TO: Raghu Vatsavayi <rvatsavayi@caviumnetworks.com> :::::: CC: David S. Miller <davem@davemloft.net>
--- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [unhandled content-type:application/gzip] | |