lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202008170350.rxLoIzbu%lkp@intel.com>
Date:   Mon, 17 Aug 2020 03:34:54 +0800
From:   kernel test robot <lkp@...el.com>
To:     Luc Van Oostenryck <luc.vanoostenryck@...il.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
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@...el.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@...iumnetworks.com>
:::::: CC: David S. Miller <davem@...emloft.net>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (31391 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ