[PATCH v9 4/4] PCI: endpoint: Add vNTB MSI support

kernel test robot lkp at intel.com
Wed Sep 7 13:43:48 PDT 2022


Hi Frank,

I love your patch! Perhaps something to improve:

[auto build test WARNING on jonmason-ntb/ntb-next]
[also build test WARNING on robh/for-next linus/master v6.0-rc4 next-20220907]
[cannot apply to tip/irq/core]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Frank-Li/PCI-EP-driver-support-MSI-doorbell-from-host/20220907-115114
base:   https://github.com/jonmason/ntb ntb-next
config: loongarch-randconfig-s052-20220906 (https://download.01.org/0day-ci/archive/20220908/202209080437.cNpaoZXx-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 12.1.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.4-39-gce1a6720-dirty
        # https://github.com/intel-lab-lkp/linux/commit/0fe017b7ce1e4748acce80d9ddb81b3cd456adbb
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Frank-Li/PCI-EP-driver-support-MSI-doorbell-from-host/20220907-115114
        git checkout 0fe017b7ce1e4748acce80d9ddb81b3cd456adbb
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=loongarch SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp at intel.com>

sparse warnings: (new ones prefixed by >>)
>> drivers/pci/endpoint/functions/pci-epf-vntb.c:567:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void [noderef] __iomem *[assigned] mw_addr @@     got void * @@
   drivers/pci/endpoint/functions/pci-epf-vntb.c:567:25: sparse:     expected void [noderef] __iomem *[assigned] mw_addr
   drivers/pci/endpoint/functions/pci-epf-vntb.c:567:25: sparse:     got void *
   drivers/pci/endpoint/functions/pci-epf-vntb.c:600:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void *addr @@     got void [noderef] __iomem *epf_db @@
   drivers/pci/endpoint/functions/pci-epf-vntb.c:600:41: sparse:     expected void *addr
   drivers/pci/endpoint/functions/pci-epf-vntb.c:600:41: sparse:     got void [noderef] __iomem *epf_db
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1206:33: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void [noderef] __iomem *base @@     got struct epf_ntb_ctrl *reg @@
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1206:33: sparse:     expected void [noderef] __iomem *base
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1206:33: sparse:     got struct epf_ntb_ctrl *reg
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1217:33: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void [noderef] __iomem *base @@     got struct epf_ntb_ctrl *reg @@
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1217:33: sparse:     expected void [noderef] __iomem *base
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1217:33: sparse:     got struct epf_ntb_ctrl *reg
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1228:33: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void [noderef] __iomem *base @@     got struct epf_ntb_ctrl *reg @@
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1228:33: sparse:     expected void [noderef] __iomem *base
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1228:33: sparse:     got struct epf_ntb_ctrl *reg
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1240:33: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void [noderef] __iomem *base @@     got struct epf_ntb_ctrl *reg @@
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1240:33: sparse:     expected void [noderef] __iomem *base
   drivers/pci/endpoint/functions/pci-epf-vntb.c:1240:33: sparse:     got struct epf_ntb_ctrl *reg

vim +567 drivers/pci/endpoint/functions/pci-epf-vntb.c

0fe017b7ce1e47 Frank Li 2022-09-06  536  
e35f56bb03304a Frank Li 2022-02-22  537  /**
e35f56bb03304a Frank Li 2022-02-22  538   * epf_ntb_db_bar_init() - Configure Doorbell window BARs
e35f56bb03304a Frank Li 2022-02-22  539   * @ntb: NTB device that facilitates communication between HOST and vHOST
e35f56bb03304a Frank Li 2022-02-22  540   */
e35f56bb03304a Frank Li 2022-02-22  541  static int epf_ntb_db_bar_init(struct epf_ntb *ntb)
e35f56bb03304a Frank Li 2022-02-22  542  {
e35f56bb03304a Frank Li 2022-02-22  543  	const struct pci_epc_features *epc_features;
e35f56bb03304a Frank Li 2022-02-22  544  	u32 align;
e35f56bb03304a Frank Li 2022-02-22  545  	struct device *dev = &ntb->epf->dev;
e35f56bb03304a Frank Li 2022-02-22  546  	int ret;
e35f56bb03304a Frank Li 2022-02-22  547  	struct pci_epf_bar *epf_bar;
e35f56bb03304a Frank Li 2022-02-22  548  	void __iomem *mw_addr;
e35f56bb03304a Frank Li 2022-02-22  549  	enum pci_barno barno;
0fe017b7ce1e47 Frank Li 2022-09-06  550  	size_t size;
e35f56bb03304a Frank Li 2022-02-22  551  
e35f56bb03304a Frank Li 2022-02-22  552  	epc_features = pci_epc_get_features(ntb->epf->epc,
e35f56bb03304a Frank Li 2022-02-22  553  					    ntb->epf->func_no,
e35f56bb03304a Frank Li 2022-02-22  554  					    ntb->epf->vfunc_no);
e35f56bb03304a Frank Li 2022-02-22  555  	align = epc_features->align;
0fe017b7ce1e47 Frank Li 2022-09-06  556  	size = epf_ntb_db_size(ntb);
e35f56bb03304a Frank Li 2022-02-22  557  
e35f56bb03304a Frank Li 2022-02-22  558  	barno = ntb->epf_ntb_bar[BAR_DB];
0fe017b7ce1e47 Frank Li 2022-09-06  559  	epf_bar = &ntb->epf->bar[barno];
e35f56bb03304a Frank Li 2022-02-22  560  
0fe017b7ce1e47 Frank Li 2022-09-06  561  	if (ntb->epf_db_phys) {
0fe017b7ce1e47 Frank Li 2022-09-06  562  		mw_addr = NULL;
0fe017b7ce1e47 Frank Li 2022-09-06  563  		epf_bar->phys_addr = ntb->epf_db_phys;
0fe017b7ce1e47 Frank Li 2022-09-06  564  		epf_bar->barno = barno;
0fe017b7ce1e47 Frank Li 2022-09-06  565  		epf_bar->size = size;
0fe017b7ce1e47 Frank Li 2022-09-06  566  	} else {
e35f56bb03304a Frank Li 2022-02-22 @567  		mw_addr = pci_epf_alloc_space(ntb->epf, size, barno, align, 0);
e35f56bb03304a Frank Li 2022-02-22  568  		if (!mw_addr) {
0fe017b7ce1e47 Frank Li 2022-09-06  569  			dev_err(dev, "Failed to allocate door bell address\n");
e35f56bb03304a Frank Li 2022-02-22  570  			return -ENOMEM;
e35f56bb03304a Frank Li 2022-02-22  571  		}
0fe017b7ce1e47 Frank Li 2022-09-06  572  	}
e35f56bb03304a Frank Li 2022-02-22  573  
e35f56bb03304a Frank Li 2022-02-22  574  	ntb->epf_db = mw_addr;
e35f56bb03304a Frank Li 2022-02-22  575  
e35f56bb03304a Frank Li 2022-02-22  576  	ret = pci_epc_set_bar(ntb->epf->epc, ntb->epf->func_no, ntb->epf->vfunc_no, epf_bar);
e35f56bb03304a Frank Li 2022-02-22  577  	if (ret) {
e35f56bb03304a Frank Li 2022-02-22  578  		dev_err(dev, "Doorbell BAR set failed\n");
e35f56bb03304a Frank Li 2022-02-22  579  			goto err_alloc_peer_mem;
e35f56bb03304a Frank Li 2022-02-22  580  	}
e35f56bb03304a Frank Li 2022-02-22  581  	return ret;
e35f56bb03304a Frank Li 2022-02-22  582  
e35f56bb03304a Frank Li 2022-02-22  583  err_alloc_peer_mem:
e35f56bb03304a Frank Li 2022-02-22  584  	pci_epc_mem_free_addr(ntb->epf->epc, epf_bar->phys_addr, mw_addr, epf_bar->size);
e35f56bb03304a Frank Li 2022-02-22  585  	return -1;
e35f56bb03304a Frank Li 2022-02-22  586  }
e35f56bb03304a Frank Li 2022-02-22  587  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp



More information about the linux-arm-kernel mailing list