* [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.