Message ID | 20240103091137.27142-3-njavali@marvell.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | UIO_MEM_DMA_COHERENT for cnic/bnx2/bnx2x | expand |
Hi Nilesh, kernel test robot noticed the following build warnings: [auto build test WARNING on char-misc/char-misc-testing] [also build test WARNING on char-misc/char-misc-next char-misc/char-misc-linus linus/master v6.7-rc8 next-20240104] [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/Nilesh-Javali/uio-introduce-UIO_MEM_DMA_COHERENT-type/20240103-171531 base: char-misc/char-misc-testing patch link: https://lore.kernel.org/r/20240103091137.27142-3-njavali%40marvell.com patch subject: [PATCH v2 2/3] cnic,bnx2,bnx2x: use UIO_MEM_DMA_COHERENT config: arc-allmodconfig (https://download.01.org/0day-ci/archive/20240105/202401051255.Qa1W34Jr-lkp@intel.com/config) compiler: arceb-elf-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240105/202401051255.Qa1W34Jr-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202401051255.Qa1W34Jr-lkp@intel.com/ All warnings (new ones prefixed by >>): drivers/net/ethernet/broadcom/cnic.c: In function 'cnic_init_uio': >> drivers/net/ethernet/broadcom/cnic.c:1120:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 1120 | uinfo->mem[1].addr = (phys_addr_t)cp->bnx2x_def_status_blk & | ^ drivers/net/ethernet/broadcom/cnic.c:1130:30: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 1130 | uinfo->mem[2].addr = (phys_addr_t)udev->l2_ring; | ^ drivers/net/ethernet/broadcom/cnic.c:1135:30: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 1135 | uinfo->mem[3].addr = (phys_addr_t)udev->l2_buf; | ^ vim +1120 drivers/net/ethernet/broadcom/cnic.c 1088 1089 static int cnic_init_uio(struct cnic_dev *dev) 1090 { 1091 struct cnic_local *cp = dev->cnic_priv; 1092 struct cnic_uio_dev *udev = cp->udev; 1093 struct uio_info *uinfo; 1094 int ret = 0; 1095 1096 if (!udev) 1097 return -ENOMEM; 1098 1099 uinfo = &udev->cnic_uinfo; 1100 1101 uinfo->mem[0].addr = pci_resource_start(dev->pcidev, 0); 1102 uinfo->mem[0].internal_addr = dev->regview; 1103 uinfo->mem[0].memtype = UIO_MEM_PHYS; 1104 1105 if (test_bit(CNIC_F_BNX2_CLASS, &dev->flags)) { 1106 uinfo->mem[0].size = MB_GET_CID_ADDR(TX_TSS_CID + 1107 TX_MAX_TSS_RINGS + 1); 1108 uinfo->mem[1].addr = (unsigned long) cp->status_blk.gen & 1109 CNIC_PAGE_MASK; 1110 uinfo->mem[1].dma_addr = cp->status_blk_map; 1111 if (cp->ethdev->drv_state & CNIC_DRV_STATE_USING_MSIX) 1112 uinfo->mem[1].size = BNX2_SBLK_MSIX_ALIGN_SIZE * 9; 1113 else 1114 uinfo->mem[1].size = BNX2_SBLK_MSIX_ALIGN_SIZE; 1115 1116 uinfo->name = "bnx2_cnic"; 1117 } else if (test_bit(CNIC_F_BNX2X_CLASS, &dev->flags)) { 1118 uinfo->mem[0].size = pci_resource_len(dev->pcidev, 0); 1119 > 1120 uinfo->mem[1].addr = (phys_addr_t)cp->bnx2x_def_status_blk & 1121 CNIC_PAGE_MASK; 1122 uinfo->mem[1].dma_addr = cp->status_blk_map; 1123 uinfo->mem[1].size = sizeof(*cp->bnx2x_def_status_blk); 1124 1125 uinfo->name = "bnx2x_cnic"; 1126 } 1127 1128 uinfo->mem[1].memtype = UIO_MEM_DMA_COHERENT; 1129 1130 uinfo->mem[2].addr = (phys_addr_t)udev->l2_ring; 1131 uinfo->mem[2].dma_addr = udev->l2_ring_map; 1132 uinfo->mem[2].size = udev->l2_ring_size; 1133 uinfo->mem[2].memtype = UIO_MEM_DMA_COHERENT; 1134 1135 uinfo->mem[3].addr = (phys_addr_t)udev->l2_buf; 1136 uinfo->mem[3].dma_addr = udev->l2_buf_map; 1137 uinfo->mem[3].size = udev->l2_buf_size; 1138 uinfo->mem[3].memtype = UIO_MEM_DMA_COHERENT; 1139 1140 uinfo->version = CNIC_MODULE_VERSION; 1141 uinfo->irq = UIO_IRQ_CUSTOM; 1142 1143 uinfo->open = cnic_uio_open; 1144 uinfo->release = cnic_uio_close; 1145 1146 if (udev->uio_dev == -1) { 1147 if (!uinfo->priv) { 1148 uinfo->priv = udev; 1149 1150 ret = uio_register_device(&udev->pdev->dev, uinfo); 1151 } 1152 } else { 1153 cnic_init_rings(dev); 1154 } 1155 1156 return ret; 1157 } 1158
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c index 0d917a9699c5..b65b8592ad75 100644 --- a/drivers/net/ethernet/broadcom/bnx2.c +++ b/drivers/net/ethernet/broadcom/bnx2.c @@ -367,6 +367,7 @@ static void bnx2_setup_cnic_irq_info(struct bnx2 *bp) cp->irq_arr[0].status_blk = (void *) ((unsigned long) bnapi->status_blk.msi + (BNX2_SBLK_MSIX_ALIGN_SIZE * sb_id)); + cp->irq_arr[0].status_blk_map = bp->status_blk_mapping; cp->irq_arr[0].status_blk_num = sb_id; cp->num_irq = 1; } diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 0d8e61c63c7c..678829646cec 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -14912,9 +14912,11 @@ void bnx2x_setup_cnic_irq_info(struct bnx2x *bp) else cp->irq_arr[0].status_blk = (void *)bp->cnic_sb.e1x_sb; + cp->irq_arr[0].status_blk_map = bp->cnic_sb_mapping; cp->irq_arr[0].status_blk_num = bnx2x_cnic_fw_sb_id(bp); cp->irq_arr[0].status_blk_num2 = bnx2x_cnic_igu_sb_id(bp); cp->irq_arr[1].status_blk = bp->def_status_blk; + cp->irq_arr[1].status_blk_map = bp->def_status_blk_mapping; cp->irq_arr[1].status_blk_num = DEF_SB_ID; cp->irq_arr[1].status_blk_num2 = DEF_SB_IGU_ID; diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c index 7926aaef8f0c..d9b52dc6d060 100644 --- a/drivers/net/ethernet/broadcom/cnic.c +++ b/drivers/net/ethernet/broadcom/cnic.c @@ -1107,6 +1107,7 @@ static int cnic_init_uio(struct cnic_dev *dev) TX_MAX_TSS_RINGS + 1); uinfo->mem[1].addr = (unsigned long) cp->status_blk.gen & CNIC_PAGE_MASK; + uinfo->mem[1].dma_addr = cp->status_blk_map; if (cp->ethdev->drv_state & CNIC_DRV_STATE_USING_MSIX) uinfo->mem[1].size = BNX2_SBLK_MSIX_ALIGN_SIZE * 9; else @@ -1116,22 +1117,25 @@ static int cnic_init_uio(struct cnic_dev *dev) } else if (test_bit(CNIC_F_BNX2X_CLASS, &dev->flags)) { uinfo->mem[0].size = pci_resource_len(dev->pcidev, 0); - uinfo->mem[1].addr = (unsigned long) cp->bnx2x_def_status_blk & + uinfo->mem[1].addr = (phys_addr_t)cp->bnx2x_def_status_blk & CNIC_PAGE_MASK; + uinfo->mem[1].dma_addr = cp->status_blk_map; uinfo->mem[1].size = sizeof(*cp->bnx2x_def_status_blk); uinfo->name = "bnx2x_cnic"; } - uinfo->mem[1].memtype = UIO_MEM_LOGICAL; + uinfo->mem[1].memtype = UIO_MEM_DMA_COHERENT; - uinfo->mem[2].addr = (unsigned long) udev->l2_ring; + uinfo->mem[2].addr = (phys_addr_t)udev->l2_ring; + uinfo->mem[2].dma_addr = udev->l2_ring_map; uinfo->mem[2].size = udev->l2_ring_size; - uinfo->mem[2].memtype = UIO_MEM_LOGICAL; + uinfo->mem[2].memtype = UIO_MEM_DMA_COHERENT; - uinfo->mem[3].addr = (unsigned long) udev->l2_buf; + uinfo->mem[3].addr = (phys_addr_t)udev->l2_buf; + uinfo->mem[3].dma_addr = udev->l2_buf_map; uinfo->mem[3].size = udev->l2_buf_size; - uinfo->mem[3].memtype = UIO_MEM_LOGICAL; + uinfo->mem[3].memtype = UIO_MEM_DMA_COHERENT; uinfo->version = CNIC_MODULE_VERSION; uinfo->irq = UIO_IRQ_CUSTOM; @@ -1313,6 +1317,7 @@ static int cnic_alloc_bnx2x_resc(struct cnic_dev *dev) return 0; cp->bnx2x_def_status_blk = cp->ethdev->irq_arr[1].status_blk; + cp->status_blk_map = cp->ethdev->irq_arr[1].status_blk_map; cp->l2_rx_ring_size = 15; @@ -5323,6 +5328,7 @@ static int cnic_start_hw(struct cnic_dev *dev) pci_dev_get(dev->pcidev); cp->func = PCI_FUNC(dev->pcidev->devfn); cp->status_blk.gen = ethdev->irq_arr[0].status_blk; + cp->status_blk_map = ethdev->irq_arr[0].status_blk_map; cp->status_blk_num = ethdev->irq_arr[0].status_blk_num; err = cp->alloc_resc(dev); diff --git a/drivers/net/ethernet/broadcom/cnic.h b/drivers/net/ethernet/broadcom/cnic.h index 4baea81bae7a..fedc84ada937 100644 --- a/drivers/net/ethernet/broadcom/cnic.h +++ b/drivers/net/ethernet/broadcom/cnic.h @@ -260,6 +260,7 @@ struct cnic_local { #define SM_RX_ID 0 #define SM_TX_ID 1 } status_blk; + dma_addr_t status_blk_map; struct host_sp_status_block *bnx2x_def_status_blk; diff --git a/drivers/net/ethernet/broadcom/cnic_if.h b/drivers/net/ethernet/broadcom/cnic_if.h index 789e5c7e9311..49a11ec80b36 100644 --- a/drivers/net/ethernet/broadcom/cnic_if.h +++ b/drivers/net/ethernet/broadcom/cnic_if.h @@ -190,6 +190,7 @@ struct cnic_ops { struct cnic_irq { unsigned int vector; void *status_blk; + dma_addr_t status_blk_map; u32 status_blk_num; u32 status_blk_num2; u32 irq_flags;