All of lore.kernel.org
 help / color / mirror / Atom feed
* [jgunthorpe:for-yishai 29/35] drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c:842:29: warning: shift count >= width of type
@ 2020-08-26  4:07 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-08-26  4:07 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 28391 bytes --]

tree:   https://github.com/jgunthorpe/linux for-yishai
head:   fbe06ba07d5a363aa078ac4d0274fa8ca7151c90
commit: 6422fcb801b64b3c2854096ffc6440f158ed9c04 [29/35] RDMA/mlx5: Use ib_umem_find_best_pgsz() for devx
config: x86_64-randconfig-r033-20200826 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 7cfcecece0e0430937cf529ce74d3a071a4dedc6)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        git checkout 6422fcb801b64b3c2854096ffc6440f158ed9c04
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c:56:
   In file included from drivers/infiniband/hw/vmw_pvrdma/pvrdma.h:56:
   include/rdma/ib_umem.h:86:29: error: conflicting types for 'ib_umem_find_best_pgsz'
   static inline unsigned long ib_umem_find_best_pgsz(struct ib_umem *umem,
                               ^
   include/rdma/ib_umem.h:80:29: note: previous definition is here
   static inline unsigned long ib_umem_find_best_pgsz(struct ib_umem *umem,
                               ^
>> drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c:842:29: warning: shift count >= width of type [-Wshift-count-overflow]
           if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) == 0) {
                                      ^~~~~~~~~~~~~~~~
   include/linux/dma-mapping.h:139:54: note: expanded from macro 'DMA_BIT_MASK'
   #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
                                                        ^ ~~~
   drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c:843:43: warning: shift count >= width of type [-Wshift-count-overflow]
                   ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
                                                           ^~~~~~~~~~~~~~~~
   include/linux/dma-mapping.h:139:54: note: expanded from macro 'DMA_BIT_MASK'
   #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
                                                        ^ ~~~
   2 warnings and 1 error generated.

# https://github.com/jgunthorpe/linux/commit/6422fcb801b64b3c2854096ffc6440f158ed9c04
git remote add jgunthorpe https://github.com/jgunthorpe/linux
git fetch --no-tags jgunthorpe for-yishai
git checkout 6422fcb801b64b3c2854096ffc6440f158ed9c04
vim +842 drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c

29c8d9eba550c6d Adit Ranadive     2016-10-02   778  
29c8d9eba550c6d Adit Ranadive     2016-10-02   779  static int pvrdma_pci_probe(struct pci_dev *pdev,
29c8d9eba550c6d Adit Ranadive     2016-10-02   780  			    const struct pci_device_id *id)
29c8d9eba550c6d Adit Ranadive     2016-10-02   781  {
29c8d9eba550c6d Adit Ranadive     2016-10-02   782  	struct pci_dev *pdev_net;
29c8d9eba550c6d Adit Ranadive     2016-10-02   783  	struct pvrdma_dev *dev;
29c8d9eba550c6d Adit Ranadive     2016-10-02   784  	int ret;
29c8d9eba550c6d Adit Ranadive     2016-10-02   785  	unsigned long start;
29c8d9eba550c6d Adit Ranadive     2016-10-02   786  	unsigned long len;
29c8d9eba550c6d Adit Ranadive     2016-10-02   787  	dma_addr_t slot_dma = 0;
29c8d9eba550c6d Adit Ranadive     2016-10-02   788  
29c8d9eba550c6d Adit Ranadive     2016-10-02   789  	dev_dbg(&pdev->dev, "initializing driver %s\n", pci_name(pdev));
29c8d9eba550c6d Adit Ranadive     2016-10-02   790  
29c8d9eba550c6d Adit Ranadive     2016-10-02   791  	/* Allocate zero-out device */
459cc69fa4c17ca Leon Romanovsky   2019-01-30   792  	dev = ib_alloc_device(pvrdma_dev, ib_dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02   793  	if (!dev) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   794  		dev_err(&pdev->dev, "failed to allocate IB device\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   795  		return -ENOMEM;
29c8d9eba550c6d Adit Ranadive     2016-10-02   796  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   797  
29c8d9eba550c6d Adit Ranadive     2016-10-02   798  	mutex_lock(&pvrdma_device_list_lock);
29c8d9eba550c6d Adit Ranadive     2016-10-02   799  	list_add(&dev->device_link, &pvrdma_device_list);
29c8d9eba550c6d Adit Ranadive     2016-10-02   800  	mutex_unlock(&pvrdma_device_list_lock);
29c8d9eba550c6d Adit Ranadive     2016-10-02   801  
29c8d9eba550c6d Adit Ranadive     2016-10-02   802  	ret = pvrdma_init_device(dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02   803  	if (ret)
29c8d9eba550c6d Adit Ranadive     2016-10-02   804  		goto err_free_device;
29c8d9eba550c6d Adit Ranadive     2016-10-02   805  
29c8d9eba550c6d Adit Ranadive     2016-10-02   806  	dev->pdev = pdev;
29c8d9eba550c6d Adit Ranadive     2016-10-02   807  	pci_set_drvdata(pdev, dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02   808  
29c8d9eba550c6d Adit Ranadive     2016-10-02   809  	ret = pci_enable_device(pdev);
29c8d9eba550c6d Adit Ranadive     2016-10-02   810  	if (ret) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   811  		dev_err(&pdev->dev, "cannot enable PCI device\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   812  		goto err_free_device;
29c8d9eba550c6d Adit Ranadive     2016-10-02   813  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   814  
29c8d9eba550c6d Adit Ranadive     2016-10-02   815  	dev_dbg(&pdev->dev, "PCI resource flags BAR0 %#lx\n",
29c8d9eba550c6d Adit Ranadive     2016-10-02   816  		pci_resource_flags(pdev, 0));
29c8d9eba550c6d Adit Ranadive     2016-10-02   817  	dev_dbg(&pdev->dev, "PCI resource len %#llx\n",
29c8d9eba550c6d Adit Ranadive     2016-10-02   818  		(unsigned long long)pci_resource_len(pdev, 0));
29c8d9eba550c6d Adit Ranadive     2016-10-02   819  	dev_dbg(&pdev->dev, "PCI resource start %#llx\n",
29c8d9eba550c6d Adit Ranadive     2016-10-02   820  		(unsigned long long)pci_resource_start(pdev, 0));
29c8d9eba550c6d Adit Ranadive     2016-10-02   821  	dev_dbg(&pdev->dev, "PCI resource flags BAR1 %#lx\n",
29c8d9eba550c6d Adit Ranadive     2016-10-02   822  		pci_resource_flags(pdev, 1));
29c8d9eba550c6d Adit Ranadive     2016-10-02   823  	dev_dbg(&pdev->dev, "PCI resource len %#llx\n",
29c8d9eba550c6d Adit Ranadive     2016-10-02   824  		(unsigned long long)pci_resource_len(pdev, 1));
29c8d9eba550c6d Adit Ranadive     2016-10-02   825  	dev_dbg(&pdev->dev, "PCI resource start %#llx\n",
29c8d9eba550c6d Adit Ranadive     2016-10-02   826  		(unsigned long long)pci_resource_start(pdev, 1));
29c8d9eba550c6d Adit Ranadive     2016-10-02   827  
29c8d9eba550c6d Adit Ranadive     2016-10-02   828  	if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM) ||
29c8d9eba550c6d Adit Ranadive     2016-10-02   829  	    !(pci_resource_flags(pdev, 1) & IORESOURCE_MEM)) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   830  		dev_err(&pdev->dev, "PCI BAR region not MMIO\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   831  		ret = -ENOMEM;
db857e6ae548f0f Qiushi Wu         2020-05-22   832  		goto err_disable_pdev;
29c8d9eba550c6d Adit Ranadive     2016-10-02   833  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   834  
29c8d9eba550c6d Adit Ranadive     2016-10-02   835  	ret = pci_request_regions(pdev, DRV_NAME);
29c8d9eba550c6d Adit Ranadive     2016-10-02   836  	if (ret) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   837  		dev_err(&pdev->dev, "cannot request PCI resources\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   838  		goto err_disable_pdev;
29c8d9eba550c6d Adit Ranadive     2016-10-02   839  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   840  
29c8d9eba550c6d Adit Ranadive     2016-10-02   841  	/* Enable 64-Bit DMA */
29c8d9eba550c6d Adit Ranadive     2016-10-02  @842  	if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) == 0) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   843  		ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
29c8d9eba550c6d Adit Ranadive     2016-10-02   844  		if (ret != 0) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   845  			dev_err(&pdev->dev,
29c8d9eba550c6d Adit Ranadive     2016-10-02   846  				"pci_set_consistent_dma_mask failed\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   847  			goto err_free_resource;
29c8d9eba550c6d Adit Ranadive     2016-10-02   848  		}
29c8d9eba550c6d Adit Ranadive     2016-10-02   849  	} else {
29c8d9eba550c6d Adit Ranadive     2016-10-02   850  		ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
29c8d9eba550c6d Adit Ranadive     2016-10-02   851  		if (ret != 0) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   852  			dev_err(&pdev->dev,
29c8d9eba550c6d Adit Ranadive     2016-10-02   853  				"pci_set_dma_mask failed\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   854  			goto err_free_resource;
29c8d9eba550c6d Adit Ranadive     2016-10-02   855  		}
29c8d9eba550c6d Adit Ranadive     2016-10-02   856  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   857  
29c8d9eba550c6d Adit Ranadive     2016-10-02   858  	pci_set_master(pdev);
29c8d9eba550c6d Adit Ranadive     2016-10-02   859  
29c8d9eba550c6d Adit Ranadive     2016-10-02   860  	/* Map register space */
29c8d9eba550c6d Adit Ranadive     2016-10-02   861  	start = pci_resource_start(dev->pdev, PVRDMA_PCI_RESOURCE_REG);
29c8d9eba550c6d Adit Ranadive     2016-10-02   862  	len = pci_resource_len(dev->pdev, PVRDMA_PCI_RESOURCE_REG);
29c8d9eba550c6d Adit Ranadive     2016-10-02   863  	dev->regs = ioremap(start, len);
29c8d9eba550c6d Adit Ranadive     2016-10-02   864  	if (!dev->regs) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   865  		dev_err(&pdev->dev, "register mapping failed\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   866  		ret = -ENOMEM;
29c8d9eba550c6d Adit Ranadive     2016-10-02   867  		goto err_free_resource;
29c8d9eba550c6d Adit Ranadive     2016-10-02   868  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   869  
29c8d9eba550c6d Adit Ranadive     2016-10-02   870  	/* Setup per-device UAR. */
29c8d9eba550c6d Adit Ranadive     2016-10-02   871  	dev->driver_uar.index = 0;
29c8d9eba550c6d Adit Ranadive     2016-10-02   872  	dev->driver_uar.pfn =
29c8d9eba550c6d Adit Ranadive     2016-10-02   873  		pci_resource_start(dev->pdev, PVRDMA_PCI_RESOURCE_UAR) >>
29c8d9eba550c6d Adit Ranadive     2016-10-02   874  		PAGE_SHIFT;
29c8d9eba550c6d Adit Ranadive     2016-10-02   875  	dev->driver_uar.map =
29c8d9eba550c6d Adit Ranadive     2016-10-02   876  		ioremap(dev->driver_uar.pfn << PAGE_SHIFT, PAGE_SIZE);
29c8d9eba550c6d Adit Ranadive     2016-10-02   877  	if (!dev->driver_uar.map) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   878  		dev_err(&pdev->dev, "failed to remap UAR pages\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   879  		ret = -ENOMEM;
29c8d9eba550c6d Adit Ranadive     2016-10-02   880  		goto err_unmap_regs;
29c8d9eba550c6d Adit Ranadive     2016-10-02   881  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   882  
05297b66ad874f6 Bryan Tan         2017-08-22   883  	dev->dsr_version = pvrdma_read_reg(dev, PVRDMA_REG_VERSION);
29c8d9eba550c6d Adit Ranadive     2016-10-02   884  	dev_info(&pdev->dev, "device version %d, driver version %d\n",
05297b66ad874f6 Bryan Tan         2017-08-22   885  		 dev->dsr_version, PVRDMA_VERSION);
29c8d9eba550c6d Adit Ranadive     2016-10-02   886  
750afb08ca71310 Luis Chamberlain  2019-01-04   887  	dev->dsr = dma_alloc_coherent(&pdev->dev, sizeof(*dev->dsr),
29c8d9eba550c6d Adit Ranadive     2016-10-02   888  				      &dev->dsrbase, GFP_KERNEL);
29c8d9eba550c6d Adit Ranadive     2016-10-02   889  	if (!dev->dsr) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   890  		dev_err(&pdev->dev, "failed to allocate shared region\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   891  		ret = -ENOMEM;
29c8d9eba550c6d Adit Ranadive     2016-10-02   892  		goto err_uar_unmap;
29c8d9eba550c6d Adit Ranadive     2016-10-02   893  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   894  
29c8d9eba550c6d Adit Ranadive     2016-10-02   895  	/* Setup the shared region */
29c8d9eba550c6d Adit Ranadive     2016-10-02   896  	dev->dsr->driver_version = PVRDMA_VERSION;
29c8d9eba550c6d Adit Ranadive     2016-10-02   897  	dev->dsr->gos_info.gos_bits = sizeof(void *) == 4 ?
29c8d9eba550c6d Adit Ranadive     2016-10-02   898  		PVRDMA_GOS_BITS_32 :
29c8d9eba550c6d Adit Ranadive     2016-10-02   899  		PVRDMA_GOS_BITS_64;
29c8d9eba550c6d Adit Ranadive     2016-10-02   900  	dev->dsr->gos_info.gos_type = PVRDMA_GOS_TYPE_LINUX;
29c8d9eba550c6d Adit Ranadive     2016-10-02   901  	dev->dsr->gos_info.gos_ver = 1;
8aa04ad3b39396e Adit Ranadive     2019-01-26   902  
8aa04ad3b39396e Adit Ranadive     2019-01-26   903  	if (dev->dsr_version < PVRDMA_PPN64_VERSION)
29c8d9eba550c6d Adit Ranadive     2016-10-02   904  		dev->dsr->uar_pfn = dev->driver_uar.pfn;
8aa04ad3b39396e Adit Ranadive     2019-01-26   905  	else
8aa04ad3b39396e Adit Ranadive     2019-01-26   906  		dev->dsr->uar_pfn64 = dev->driver_uar.pfn;
29c8d9eba550c6d Adit Ranadive     2016-10-02   907  
29c8d9eba550c6d Adit Ranadive     2016-10-02   908  	/* Command slot. */
29c8d9eba550c6d Adit Ranadive     2016-10-02   909  	dev->cmd_slot = dma_alloc_coherent(&pdev->dev, PAGE_SIZE,
29c8d9eba550c6d Adit Ranadive     2016-10-02   910  					   &slot_dma, GFP_KERNEL);
29c8d9eba550c6d Adit Ranadive     2016-10-02   911  	if (!dev->cmd_slot) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   912  		ret = -ENOMEM;
29c8d9eba550c6d Adit Ranadive     2016-10-02   913  		goto err_free_dsr;
29c8d9eba550c6d Adit Ranadive     2016-10-02   914  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   915  
29c8d9eba550c6d Adit Ranadive     2016-10-02   916  	dev->dsr->cmd_slot_dma = (u64)slot_dma;
29c8d9eba550c6d Adit Ranadive     2016-10-02   917  
29c8d9eba550c6d Adit Ranadive     2016-10-02   918  	/* Response slot. */
29c8d9eba550c6d Adit Ranadive     2016-10-02   919  	dev->resp_slot = dma_alloc_coherent(&pdev->dev, PAGE_SIZE,
29c8d9eba550c6d Adit Ranadive     2016-10-02   920  					    &slot_dma, GFP_KERNEL);
29c8d9eba550c6d Adit Ranadive     2016-10-02   921  	if (!dev->resp_slot) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   922  		ret = -ENOMEM;
29c8d9eba550c6d Adit Ranadive     2016-10-02   923  		goto err_free_slots;
29c8d9eba550c6d Adit Ranadive     2016-10-02   924  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   925  
29c8d9eba550c6d Adit Ranadive     2016-10-02   926  	dev->dsr->resp_slot_dma = (u64)slot_dma;
29c8d9eba550c6d Adit Ranadive     2016-10-02   927  
29c8d9eba550c6d Adit Ranadive     2016-10-02   928  	/* Async event ring */
6332dee83d8eab8 Adit Ranadive     2017-02-22   929  	dev->dsr->async_ring_pages.num_pages = PVRDMA_NUM_RING_PAGES;
29c8d9eba550c6d Adit Ranadive     2016-10-02   930  	ret = pvrdma_page_dir_init(dev, &dev->async_pdir,
29c8d9eba550c6d Adit Ranadive     2016-10-02   931  				   dev->dsr->async_ring_pages.num_pages, true);
29c8d9eba550c6d Adit Ranadive     2016-10-02   932  	if (ret)
29c8d9eba550c6d Adit Ranadive     2016-10-02   933  		goto err_free_slots;
29c8d9eba550c6d Adit Ranadive     2016-10-02   934  	dev->async_ring_state = dev->async_pdir.pages[0];
29c8d9eba550c6d Adit Ranadive     2016-10-02   935  	dev->dsr->async_ring_pages.pdir_dma = dev->async_pdir.dir_dma;
29c8d9eba550c6d Adit Ranadive     2016-10-02   936  
29c8d9eba550c6d Adit Ranadive     2016-10-02   937  	/* CQ notification ring */
6332dee83d8eab8 Adit Ranadive     2017-02-22   938  	dev->dsr->cq_ring_pages.num_pages = PVRDMA_NUM_RING_PAGES;
29c8d9eba550c6d Adit Ranadive     2016-10-02   939  	ret = pvrdma_page_dir_init(dev, &dev->cq_pdir,
29c8d9eba550c6d Adit Ranadive     2016-10-02   940  				   dev->dsr->cq_ring_pages.num_pages, true);
29c8d9eba550c6d Adit Ranadive     2016-10-02   941  	if (ret)
29c8d9eba550c6d Adit Ranadive     2016-10-02   942  		goto err_free_async_ring;
29c8d9eba550c6d Adit Ranadive     2016-10-02   943  	dev->cq_ring_state = dev->cq_pdir.pages[0];
29c8d9eba550c6d Adit Ranadive     2016-10-02   944  	dev->dsr->cq_ring_pages.pdir_dma = dev->cq_pdir.dir_dma;
29c8d9eba550c6d Adit Ranadive     2016-10-02   945  
29c8d9eba550c6d Adit Ranadive     2016-10-02   946  	/*
29c8d9eba550c6d Adit Ranadive     2016-10-02   947  	 * Write the PA of the shared region to the device. The writes must be
29c8d9eba550c6d Adit Ranadive     2016-10-02   948  	 * ordered such that the high bits are written last. When the writes
29c8d9eba550c6d Adit Ranadive     2016-10-02   949  	 * complete, the device will have filled out the capabilities.
29c8d9eba550c6d Adit Ranadive     2016-10-02   950  	 */
29c8d9eba550c6d Adit Ranadive     2016-10-02   951  
29c8d9eba550c6d Adit Ranadive     2016-10-02   952  	pvrdma_write_reg(dev, PVRDMA_REG_DSRLOW, (u32)dev->dsrbase);
29c8d9eba550c6d Adit Ranadive     2016-10-02   953  	pvrdma_write_reg(dev, PVRDMA_REG_DSRHIGH,
29c8d9eba550c6d Adit Ranadive     2016-10-02   954  			 (u32)((u64)(dev->dsrbase) >> 32));
29c8d9eba550c6d Adit Ranadive     2016-10-02   955  
29c8d9eba550c6d Adit Ranadive     2016-10-02   956  	/* Make sure the write is complete before reading status. */
29c8d9eba550c6d Adit Ranadive     2016-10-02   957  	mb();
29c8d9eba550c6d Adit Ranadive     2016-10-02   958  
05297b66ad874f6 Bryan Tan         2017-08-22   959  	/* The driver supports RoCE V1 and V2. */
05297b66ad874f6 Bryan Tan         2017-08-22   960  	if (!PVRDMA_SUPPORTED(dev)) {
05297b66ad874f6 Bryan Tan         2017-08-22   961  		dev_err(&pdev->dev, "driver needs RoCE v1 or v2 support\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   962  		ret = -EFAULT;
29c8d9eba550c6d Adit Ranadive     2016-10-02   963  		goto err_free_cq_ring;
29c8d9eba550c6d Adit Ranadive     2016-10-02   964  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   965  
29c8d9eba550c6d Adit Ranadive     2016-10-02   966  	/* Paired vmxnet3 will have same bus, slot. But func will be 0 */
29c8d9eba550c6d Adit Ranadive     2016-10-02   967  	pdev_net = pci_get_slot(pdev->bus, PCI_DEVFN(PCI_SLOT(pdev->devfn), 0));
29c8d9eba550c6d Adit Ranadive     2016-10-02   968  	if (!pdev_net) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   969  		dev_err(&pdev->dev, "failed to find paired net device\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   970  		ret = -ENODEV;
29c8d9eba550c6d Adit Ranadive     2016-10-02   971  		goto err_free_cq_ring;
29c8d9eba550c6d Adit Ranadive     2016-10-02   972  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   973  
29c8d9eba550c6d Adit Ranadive     2016-10-02   974  	if (pdev_net->vendor != PCI_VENDOR_ID_VMWARE ||
29c8d9eba550c6d Adit Ranadive     2016-10-02   975  	    pdev_net->device != PCI_DEVICE_ID_VMWARE_VMXNET3) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   976  		dev_err(&pdev->dev, "failed to find paired vmxnet3 device\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   977  		pci_dev_put(pdev_net);
29c8d9eba550c6d Adit Ranadive     2016-10-02   978  		ret = -ENODEV;
29c8d9eba550c6d Adit Ranadive     2016-10-02   979  		goto err_free_cq_ring;
29c8d9eba550c6d Adit Ranadive     2016-10-02   980  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02   981  
29c8d9eba550c6d Adit Ranadive     2016-10-02   982  	dev->netdev = pci_get_drvdata(pdev_net);
29c8d9eba550c6d Adit Ranadive     2016-10-02   983  	pci_dev_put(pdev_net);
29c8d9eba550c6d Adit Ranadive     2016-10-02   984  	if (!dev->netdev) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   985  		dev_err(&pdev->dev, "failed to get vmxnet3 device\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   986  		ret = -ENODEV;
29c8d9eba550c6d Adit Ranadive     2016-10-02   987  		goto err_free_cq_ring;
29c8d9eba550c6d Adit Ranadive     2016-10-02   988  	}
11e40f5c577624d Neil Horman       2018-06-29   989  	dev_hold(dev->netdev);
29c8d9eba550c6d Adit Ranadive     2016-10-02   990  
29c8d9eba550c6d Adit Ranadive     2016-10-02   991  	dev_info(&pdev->dev, "paired device to %s\n", dev->netdev->name);
29c8d9eba550c6d Adit Ranadive     2016-10-02   992  
29c8d9eba550c6d Adit Ranadive     2016-10-02   993  	/* Interrupt setup */
29c8d9eba550c6d Adit Ranadive     2016-10-02   994  	ret = pvrdma_alloc_intrs(dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02   995  	if (ret) {
29c8d9eba550c6d Adit Ranadive     2016-10-02   996  		dev_err(&pdev->dev, "failed to allocate interrupts\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02   997  		ret = -ENOMEM;
ff89b070b7c98eb Adit Ranadive     2017-01-19   998  		goto err_free_cq_ring;
29c8d9eba550c6d Adit Ranadive     2016-10-02   999  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02  1000  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1001  	/* Allocate UAR table. */
29c8d9eba550c6d Adit Ranadive     2016-10-02  1002  	ret = pvrdma_uar_table_init(dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1003  	if (ret) {
29c8d9eba550c6d Adit Ranadive     2016-10-02  1004  		dev_err(&pdev->dev, "failed to allocate UAR table\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02  1005  		ret = -ENOMEM;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1006  		goto err_free_intrs;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1007  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02  1008  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1009  	/* Allocate GID table */
29c8d9eba550c6d Adit Ranadive     2016-10-02  1010  	dev->sgid_tbl = kcalloc(dev->dsr->caps.gid_tbl_len,
29c8d9eba550c6d Adit Ranadive     2016-10-02  1011  				sizeof(union ib_gid), GFP_KERNEL);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1012  	if (!dev->sgid_tbl) {
29c8d9eba550c6d Adit Ranadive     2016-10-02  1013  		ret = -ENOMEM;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1014  		goto err_free_uar_table;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1015  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02  1016  	dev_dbg(&pdev->dev, "gid table len %d\n", dev->dsr->caps.gid_tbl_len);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1017  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1018  	pvrdma_enable_intrs(dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1019  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1020  	/* Activate pvrdma device */
29c8d9eba550c6d Adit Ranadive     2016-10-02  1021  	pvrdma_write_reg(dev, PVRDMA_REG_CTL, PVRDMA_DEVICE_CTL_ACTIVATE);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1022  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1023  	/* Make sure the write is complete before reading status. */
29c8d9eba550c6d Adit Ranadive     2016-10-02  1024  	mb();
29c8d9eba550c6d Adit Ranadive     2016-10-02  1025  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1026  	/* Check if device was successfully activated */
29c8d9eba550c6d Adit Ranadive     2016-10-02  1027  	ret = pvrdma_read_reg(dev, PVRDMA_REG_ERR);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1028  	if (ret != 0) {
29c8d9eba550c6d Adit Ranadive     2016-10-02  1029  		dev_err(&pdev->dev, "failed to activate device\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02  1030  		ret = -EFAULT;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1031  		goto err_disable_intr;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1032  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02  1033  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1034  	/* Register IB device */
29c8d9eba550c6d Adit Ranadive     2016-10-02  1035  	ret = pvrdma_register_device(dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1036  	if (ret) {
29c8d9eba550c6d Adit Ranadive     2016-10-02  1037  		dev_err(&pdev->dev, "failed to register IB device\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02  1038  		goto err_disable_intr;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1039  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02  1040  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1041  	dev->nb_netdev.notifier_call = pvrdma_netdevice_event;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1042  	ret = register_netdevice_notifier(&dev->nb_netdev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1043  	if (ret) {
29c8d9eba550c6d Adit Ranadive     2016-10-02  1044  		dev_err(&pdev->dev, "failed to register netdevice events\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02  1045  		goto err_unreg_ibdev;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1046  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02  1047  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1048  	dev_info(&pdev->dev, "attached to device\n");
29c8d9eba550c6d Adit Ranadive     2016-10-02  1049  	return 0;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1050  
29c8d9eba550c6d Adit Ranadive     2016-10-02  1051  err_unreg_ibdev:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1052  	ib_unregister_device(&dev->ib_dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1053  err_disable_intr:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1054  	pvrdma_disable_intrs(dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1055  	kfree(dev->sgid_tbl);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1056  err_free_uar_table:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1057  	pvrdma_uar_table_cleanup(dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1058  err_free_intrs:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1059  	pvrdma_free_irq(dev);
7bf3976d6cfd77c Christoph Hellwig 2017-02-15  1060  	pci_free_irq_vectors(pdev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1061  err_free_cq_ring:
11e40f5c577624d Neil Horman       2018-06-29  1062  	if (dev->netdev) {
11e40f5c577624d Neil Horman       2018-06-29  1063  		dev_put(dev->netdev);
11e40f5c577624d Neil Horman       2018-06-29  1064  		dev->netdev = NULL;
11e40f5c577624d Neil Horman       2018-06-29  1065  	}
29c8d9eba550c6d Adit Ranadive     2016-10-02  1066  	pvrdma_page_dir_cleanup(dev, &dev->cq_pdir);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1067  err_free_async_ring:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1068  	pvrdma_page_dir_cleanup(dev, &dev->async_pdir);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1069  err_free_slots:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1070  	pvrdma_free_slots(dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1071  err_free_dsr:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1072  	dma_free_coherent(&pdev->dev, sizeof(*dev->dsr), dev->dsr,
29c8d9eba550c6d Adit Ranadive     2016-10-02  1073  			  dev->dsrbase);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1074  err_uar_unmap:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1075  	iounmap(dev->driver_uar.map);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1076  err_unmap_regs:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1077  	iounmap(dev->regs);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1078  err_free_resource:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1079  	pci_release_regions(pdev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1080  err_disable_pdev:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1081  	pci_disable_device(pdev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1082  	pci_set_drvdata(pdev, NULL);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1083  err_free_device:
29c8d9eba550c6d Adit Ranadive     2016-10-02  1084  	mutex_lock(&pvrdma_device_list_lock);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1085  	list_del(&dev->device_link);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1086  	mutex_unlock(&pvrdma_device_list_lock);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1087  	ib_dealloc_device(&dev->ib_dev);
29c8d9eba550c6d Adit Ranadive     2016-10-02  1088  	return ret;
29c8d9eba550c6d Adit Ranadive     2016-10-02  1089  }
29c8d9eba550c6d Adit Ranadive     2016-10-02  1090  

:::::: The code at line 842 was first introduced by commit
:::::: 29c8d9eba550c6d73d17cc1618a9f5f2a7345aa1 IB: Add vmw_pvrdma driver

:::::: TO: Adit Ranadive <aditr@vmware.com>
:::::: CC: Doug Ledford <dledford@redhat.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 41691 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-08-26  4:07 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-26  4:07 [jgunthorpe:for-yishai 29/35] drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c:842:29: warning: shift count >= width of type kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.