Home
last modified time | relevance | path

Searched full:pbl (Results 1 – 25 of 285) sorted by relevance

12345678910>>...12

/kernel/linux/linux-4.19/drivers/infiniband/hw/bnxt_re/
Dqplib_res.c55 /* PBL */
56 static void __free_pbl(struct pci_dev *pdev, struct bnxt_qplib_pbl *pbl, in __free_pbl() argument
62 for (i = 0; i < pbl->pg_count; i++) { in __free_pbl()
63 if (pbl->pg_arr[i]) in __free_pbl()
64 dma_free_coherent(&pdev->dev, pbl->pg_size, in __free_pbl()
66 pbl->pg_arr[i] & in __free_pbl()
68 pbl->pg_map_arr[i]); in __free_pbl()
71 "QPLIB: PBL free pg_arr[%d] empty?!", in __free_pbl()
73 pbl->pg_arr[i] = NULL; in __free_pbl()
76 kfree(pbl->pg_arr); in __free_pbl()
[all …]
Dqplib_rcfw.c445 static int __get_pbl_pg_idx(struct bnxt_qplib_pbl *pbl) in __get_pbl_pg_idx() argument
447 return (pbl->pg_size == ROCE_PG_SIZE_4K ? in __get_pbl_pg_idx()
449 pbl->pg_size == ROCE_PG_SIZE_8K ? in __get_pbl_pg_idx()
451 pbl->pg_size == ROCE_PG_SIZE_64K ? in __get_pbl_pg_idx()
453 pbl->pg_size == ROCE_PG_SIZE_2M ? in __get_pbl_pg_idx()
455 pbl->pg_size == ROCE_PG_SIZE_8M ? in __get_pbl_pg_idx()
457 pbl->pg_size == ROCE_PG_SIZE_1G ? in __get_pbl_pg_idx()
486 __get_pbl_pg_idx(&ctx->qpc_tbl.pbl[level]); in bnxt_qplib_init_rcfw()
489 __get_pbl_pg_idx(&ctx->mrw_tbl.pbl[level]); in bnxt_qplib_init_rcfw()
492 __get_pbl_pg_idx(&ctx->srqc_tbl.pbl[level]); in bnxt_qplib_init_rcfw()
[all …]
Dqplib_fp.c533 struct bnxt_qplib_pbl *pbl; in bnxt_qplib_create_srq() local
559 pbl = &srq->hwq.pbl[PBL_LVL_0]; in bnxt_qplib_create_srq()
563 (pbl->pg_size == ROCE_PG_SIZE_4K ? in bnxt_qplib_create_srq()
565 pbl->pg_size == ROCE_PG_SIZE_8K ? in bnxt_qplib_create_srq()
567 pbl->pg_size == ROCE_PG_SIZE_64K ? in bnxt_qplib_create_srq()
569 pbl->pg_size == ROCE_PG_SIZE_2M ? in bnxt_qplib_create_srq()
571 pbl->pg_size == ROCE_PG_SIZE_8M ? in bnxt_qplib_create_srq()
573 pbl->pg_size == ROCE_PG_SIZE_1G ? in bnxt_qplib_create_srq()
576 req.pbl = cpu_to_le64(pbl->pg_map_arr[0]); in bnxt_qplib_create_srq()
722 struct bnxt_qplib_pbl *pbl; in bnxt_qplib_create_qp1() local
[all …]
/kernel/linux/linux-5.10/drivers/infiniband/hw/bnxt_re/
Dqplib_res.c62 /* PBL */
63 static void __free_pbl(struct bnxt_qplib_res *res, struct bnxt_qplib_pbl *pbl, in __free_pbl() argument
70 for (i = 0; i < pbl->pg_count; i++) { in __free_pbl()
71 if (pbl->pg_arr[i]) in __free_pbl()
72 dma_free_coherent(&pdev->dev, pbl->pg_size, in __free_pbl()
74 pbl->pg_arr[i] & in __free_pbl()
76 pbl->pg_map_arr[i]); in __free_pbl()
79 "PBL free pg_arr[%d] empty?!\n", i); in __free_pbl()
80 pbl->pg_arr[i] = NULL; in __free_pbl()
83 vfree(pbl->pg_arr); in __free_pbl()
[all …]
Dqplib_res.h151 struct bnxt_qplib_pbl pbl[PBL_LVL_MAX + 1]; member
153 /* ptr for easy access to the PBL entries */
295 struct bnxt_qplib_pbl *pbl; in bnxt_qplib_base_pg_size() local
297 pbl = &hwq->pbl[PBL_LVL_0]; in bnxt_qplib_base_pg_size()
298 switch (pbl->pg_size) { in bnxt_qplib_base_pg_size()
/kernel/linux/linux-5.10/drivers/infiniband/hw/efa/
Defa_verbs.c1189 static int pbl_chunk_list_create(struct efa_dev *dev, struct pbl_context *pbl) in pbl_chunk_list_create() argument
1191 struct pbl_chunk_list *chunk_list = &pbl->phys.indirect.chunk_list; in pbl_chunk_list_create()
1192 int page_cnt = pbl->phys.indirect.pbl_buf_size_in_pages; in pbl_chunk_list_create()
1193 struct scatterlist *pages_sgl = pbl->phys.indirect.sgl; in pbl_chunk_list_create()
1195 int sg_dma_cnt = pbl->phys.indirect.sg_dma_cnt; in pbl_chunk_list_create()
1289 static void pbl_chunk_list_destroy(struct efa_dev *dev, struct pbl_context *pbl) in pbl_chunk_list_destroy() argument
1291 struct pbl_chunk_list *chunk_list = &pbl->phys.indirect.chunk_list; in pbl_chunk_list_destroy()
1303 /* initialize pbl continuous mode: map pbl buffer to a dma address. */
1305 struct pbl_context *pbl) in pbl_continuous_initialize() argument
1309 dma_addr = dma_map_single(&dev->pdev->dev, pbl->pbl_buf, in pbl_continuous_initialize()
[all …]
Defa_com_cmd.c239 memcpy(mr_cmd.pbl.inline_pbl_array, in efa_com_register_mr()
240 params->pbl.inline_pbl_array, in efa_com_register_mr()
241 sizeof(mr_cmd.pbl.inline_pbl_array)); in efa_com_register_mr()
243 mr_cmd.pbl.pbl.length = params->pbl.pbl.length; in efa_com_register_mr()
244 mr_cmd.pbl.pbl.address.mem_addr_low = in efa_com_register_mr()
245 params->pbl.pbl.address.mem_addr_low; in efa_com_register_mr()
246 mr_cmd.pbl.pbl.address.mem_addr_high = in efa_com_register_mr()
247 params->pbl.pbl.address.mem_addr_high; in efa_com_register_mr()
/kernel/linux/linux-5.10/include/linux/qed/
Dqed_chain.h84 /* Fastpath portions of the PBL [if exists] */
89 * in the pbl table.
97 } pbl; member
126 /* Base address of a pre-allocated buffer for pbl */
310 *p_next_elem = p_chain->pbl.pp_addr_tbl[page_index].virt_addr; in qed_chain_advance_page()
374 p_prod_page_idx = &p_chain->pbl.c.u16.prod_page_idx; in qed_chain_produce()
383 p_prod_page_idx = &p_chain->pbl.c.u32.prod_page_idx; in qed_chain_produce()
447 p_cons_page_idx = &p_chain->pbl.c.u16.cons_page_idx; in qed_chain_consume()
456 p_cons_page_idx = &p_chain->pbl.c.u32.cons_page_idx; in qed_chain_consume()
498 p_chain->pbl.c.u16.prod_page_idx = (u16)reset_val; in qed_chain_reset()
[all …]
/kernel/linux/linux-4.19/include/linux/qed/
Dqed_chain.h113 /* Fastpath portions of the PBL [if exists] */
117 * in the pbl table.
125 } pbl; member
152 /* Base address of a pre-allocated buffer for pbl */
302 *p_next_elem = p_chain->pbl.pp_addr_tbl[page_index].virt_addr; in qed_chain_advance_page()
366 p_prod_page_idx = &p_chain->pbl.c.u16.prod_page_idx; in qed_chain_produce()
375 p_prod_page_idx = &p_chain->pbl.c.u32.prod_page_idx; in qed_chain_produce()
439 p_cons_page_idx = &p_chain->pbl.c.u16.cons_page_idx; in qed_chain_consume()
448 p_cons_page_idx = &p_chain->pbl.c.u32.cons_page_idx; in qed_chain_consume()
490 p_chain->pbl.c.u16.prod_page_idx = (u16)reset_val; in qed_chain_reset()
[all …]
/kernel/linux/linux-5.10/drivers/infiniband/sw/siw/
Dsiw_mem.c144 siw_dbg_mem(mem, "free mem, pbl: %s\n", mem->is_pbl ? "y" : "n"); in siw_free_mem()
150 kfree(mem->pbl); in siw_free_mem()
320 * Gets physical address backed by PBL element. Address is referenced
323 * current PBL index for later resume at same element.
325 dma_addr_t siw_pbl_get_buffer(struct siw_pbl *pbl, u64 off, int *len, int *idx) in siw_pbl_get_buffer() argument
329 while (i < pbl->num_buf) { in siw_pbl_get_buffer()
330 struct siw_pble *pble = &pbl->pbe[i]; in siw_pbl_get_buffer()
351 struct siw_pbl *pbl; in siw_pbl_alloc() local
356 pbl = kzalloc(struct_size(pbl, pbe, num_buf), GFP_KERNEL); in siw_pbl_alloc()
357 if (!pbl) in siw_pbl_alloc()
[all …]
Dsiw_verbs.c1378 struct siw_pbl *pbl = NULL; in siw_alloc_mr() local
1396 pbl = siw_pbl_alloc(max_sge); in siw_alloc_mr()
1397 if (IS_ERR(pbl)) { in siw_alloc_mr()
1398 rv = PTR_ERR(pbl); in siw_alloc_mr()
1399 siw_dbg_pd(pd, "pbl allocation failed: %d\n", rv); in siw_alloc_mr()
1400 pbl = NULL; in siw_alloc_mr()
1408 rv = siw_mr_add_mem(mr, pd, pbl, 0, max_sge * PAGE_SIZE, 0); in siw_alloc_mr()
1422 kfree(pbl); in siw_alloc_mr()
1445 struct siw_pbl *pbl = mem->pbl; in siw_map_mr_sg() local
1450 if (!pbl) { in siw_map_mr_sg()
[all …]
/kernel/linux/linux-5.10/drivers/infiniband/hw/cxgb4/
Dresource.c260 * PBL Memory Manager. Uses Linux generic allocator.
263 #define MIN_PBL_SHIFT 8 /* 256B == min PBL size (32 entries) */
271 rdev->stats.pbl.cur += roundup(size, 1 << MIN_PBL_SHIFT); in c4iw_pblpool_alloc()
272 if (rdev->stats.pbl.cur > rdev->stats.pbl.max) in c4iw_pblpool_alloc()
273 rdev->stats.pbl.max = rdev->stats.pbl.cur; in c4iw_pblpool_alloc()
276 rdev->stats.pbl.fail++; in c4iw_pblpool_alloc()
294 rdev->stats.pbl.cur -= roundup(size, 1 << MIN_PBL_SHIFT); in c4iw_pblpool_free()
308 pbl_start = rdev->lldi.vr->pbl.start; in c4iw_pblpool_create()
309 pbl_chunk = rdev->lldi.vr->pbl.size; in c4iw_pblpool_create()
315 pr_debug("failed to add PBL chunk (%x/%x)\n", in c4iw_pblpool_create()
[all …]
/kernel/linux/linux-4.19/drivers/infiniband/hw/cxgb4/
Dresource.c260 * PBL Memory Manager. Uses Linux generic allocator.
263 #define MIN_PBL_SHIFT 8 /* 256B == min PBL size (32 entries) */
271 rdev->stats.pbl.cur += roundup(size, 1 << MIN_PBL_SHIFT); in c4iw_pblpool_alloc()
272 if (rdev->stats.pbl.cur > rdev->stats.pbl.max) in c4iw_pblpool_alloc()
273 rdev->stats.pbl.max = rdev->stats.pbl.cur; in c4iw_pblpool_alloc()
276 rdev->stats.pbl.fail++; in c4iw_pblpool_alloc()
294 rdev->stats.pbl.cur -= roundup(size, 1 << MIN_PBL_SHIFT); in c4iw_pblpool_free()
308 pbl_start = rdev->lldi.vr->pbl.start; in c4iw_pblpool_create()
309 pbl_chunk = rdev->lldi.vr->pbl.size; in c4iw_pblpool_create()
315 pr_debug("failed to add PBL chunk (%x/%x)\n", in c4iw_pblpool_create()
[all …]
/kernel/linux/linux-4.19/drivers/infiniband/hw/qedr/
Dverbs.c526 struct qedr_pbl_info *pbl_info, struct qedr_pbl *pbl) in qedr_free_pbl() argument
532 if (!pbl[i].va) in qedr_free_pbl()
535 pbl[i].va, pbl[i].pa); in qedr_free_pbl()
538 kfree(pbl); in qedr_free_pbl()
573 /* Two-Layer PBLs, if we have more than one pbl we need to initialize in qedr_alloc_pbl_tbl()
602 DP_ERR(dev, "prepare pbl table: too many pages %d\n", in qedr_prepare_pbl_tbl()
607 /* calculate required pbl page size */ in qedr_prepare_pbl_tbl()
622 /* One layered PBL */ in qedr_prepare_pbl_tbl()
634 "prepare pbl table: num_pbes=%d, num_pbls=%d, pbl_size=%d\n", in qedr_prepare_pbl_tbl()
641 struct qedr_pbl *pbl, in qedr_populate_pbls() argument
[all …]
/kernel/linux/linux-5.10/drivers/infiniband/hw/qedr/
Dverbs.c505 struct qedr_pbl_info *pbl_info, struct qedr_pbl *pbl) in qedr_free_pbl() argument
511 if (!pbl[i].va) in qedr_free_pbl()
514 pbl[i].va, pbl[i].pa); in qedr_free_pbl()
517 kfree(pbl); in qedr_free_pbl()
552 /* Two-Layer PBLs, if we have more than one pbl we need to initialize in qedr_alloc_pbl_tbl()
581 DP_ERR(dev, "prepare pbl table: too many pages %d\n", in qedr_prepare_pbl_tbl()
586 /* calculate required pbl page size */ in qedr_prepare_pbl_tbl()
601 /* One layered PBL */ in qedr_prepare_pbl_tbl()
613 "prepare pbl table: num_pbes=%d, num_pbls=%d, pbl_size=%d\n", in qedr_prepare_pbl_tbl()
620 struct qedr_pbl *pbl, in qedr_populate_pbls() argument
[all …]
/kernel/linux/linux-5.10/drivers/scsi/bnx2fc/
Dbnx2fc_tgt.c667 u32 *pbl; in bnx2fc_alloc_session_resc() local
695 /* Allocate and map RQ and RQ PBL */ in bnx2fc_alloc_session_resc()
715 printk(KERN_ERR PFX "unable to allocate RQ PBL %d\n", in bnx2fc_alloc_session_resc()
722 pbl = (u32 *)tgt->rq_pbl; in bnx2fc_alloc_session_resc()
725 *pbl = (u32)page; in bnx2fc_alloc_session_resc()
726 pbl++; in bnx2fc_alloc_session_resc()
727 *pbl = (u32)((u64)page >> 32); in bnx2fc_alloc_session_resc()
728 pbl++; in bnx2fc_alloc_session_resc()
746 /* Allocate and map CONFQ & CONFQ PBL */ in bnx2fc_alloc_session_resc()
769 printk(KERN_ERR PFX "unable to allocate CONFQ PBL %d\n", in bnx2fc_alloc_session_resc()
[all …]
/kernel/linux/linux-4.19/drivers/scsi/bnx2fc/
Dbnx2fc_tgt.c668 u32 *pbl; in bnx2fc_alloc_session_resc() local
696 /* Allocate and map RQ and RQ PBL */ in bnx2fc_alloc_session_resc()
716 printk(KERN_ERR PFX "unable to allocate RQ PBL %d\n", in bnx2fc_alloc_session_resc()
723 pbl = (u32 *)tgt->rq_pbl; in bnx2fc_alloc_session_resc()
726 *pbl = (u32)page; in bnx2fc_alloc_session_resc()
727 pbl++; in bnx2fc_alloc_session_resc()
728 *pbl = (u32)((u64)page >> 32); in bnx2fc_alloc_session_resc()
729 pbl++; in bnx2fc_alloc_session_resc()
747 /* Allocate and map CONFQ & CONFQ PBL */ in bnx2fc_alloc_session_resc()
770 printk(KERN_ERR PFX "unable to allocate CONFQ PBL %d\n", in bnx2fc_alloc_session_resc()
[all …]
/kernel/linux/linux-4.19/drivers/scsi/qedi/
Dqedi_main.c1426 struct scsi_bd *pbl; in qedi_alloc_bdq() local
1456 QEDI_ERR(&qedi->dbg_ctx, "Could not allocate BDQ PBL.\n"); in qedi_alloc_bdq()
1461 * Populate BDQ PBL with physical and virtual address of individual in qedi_alloc_bdq()
1464 pbl = (struct scsi_bd *)qedi->bdq_pbl; in qedi_alloc_bdq()
1466 pbl->address.hi = in qedi_alloc_bdq()
1468 pbl->address.lo = in qedi_alloc_bdq()
1471 "pbl [0x%p] pbl->address hi [0x%llx] lo [0x%llx], idx [%d]\n", in qedi_alloc_bdq()
1472 pbl, pbl->address.hi, pbl->address.lo, i); in qedi_alloc_bdq()
1473 pbl->opaque.iscsi_opaque.reserved_zero[0] = 0; in qedi_alloc_bdq()
1474 pbl->opaque.iscsi_opaque.reserved_zero[1] = 0; in qedi_alloc_bdq()
[all …]
/kernel/linux/linux-5.10/drivers/scsi/qedi/
Dqedi_main.c1540 struct scsi_bd *pbl; in qedi_alloc_bdq() local
1570 QEDI_ERR(&qedi->dbg_ctx, "Could not allocate BDQ PBL.\n"); in qedi_alloc_bdq()
1575 * Populate BDQ PBL with physical and virtual address of individual in qedi_alloc_bdq()
1578 pbl = (struct scsi_bd *)qedi->bdq_pbl; in qedi_alloc_bdq()
1580 pbl->address.hi = in qedi_alloc_bdq()
1582 pbl->address.lo = in qedi_alloc_bdq()
1585 "pbl [0x%p] pbl->address hi [0x%llx] lo [0x%llx], idx [%d]\n", in qedi_alloc_bdq()
1586 pbl, pbl->address.hi, pbl->address.lo, i); in qedi_alloc_bdq()
1587 pbl->opaque.iscsi_opaque.reserved_zero[0] = 0; in qedi_alloc_bdq()
1588 pbl->opaque.iscsi_opaque.reserved_zero[1] = 0; in qedi_alloc_bdq()
[all …]
/kernel/linux/linux-5.10/drivers/net/ethernet/qlogic/qed/
Dqed_chain.c111 if (!chain->pbl.pp_addr_tbl) in qed_chain_free_pbl()
115 entry = chain->pbl.pp_addr_tbl + i; in qed_chain_free_pbl()
128 vfree(chain->pbl.pp_addr_tbl); in qed_chain_free_pbl()
129 chain->pbl.pp_addr_tbl = NULL; in qed_chain_free_pbl()
269 chain->pbl.pp_addr_tbl = addr_tbl; in qed_chain_alloc_pbl()
300 /* Fill the PBL table with the physical address of the page */ in qed_chain_alloc_pbl()
/kernel/linux/linux-4.19/drivers/net/ethernet/samsung/sxgbe/
Dsxgbe_dma.c47 int fix_burst, int pbl, dma_addr_t dma_tx, in sxgbe_dma_channel_init() argument
54 /* set the pbl */ in sxgbe_dma_channel_init()
58 /* program the TX pbl */ in sxgbe_dma_channel_init()
60 reg_val |= (pbl << SXGBE_DMA_TXPBL_LSHIFT); in sxgbe_dma_channel_init()
62 /* program the RX pbl */ in sxgbe_dma_channel_init()
64 reg_val |= (pbl << SXGBE_DMA_RXPBL_LSHIFT); in sxgbe_dma_channel_init()
/kernel/linux/linux-5.10/drivers/net/ethernet/samsung/sxgbe/
Dsxgbe_dma.c44 int fix_burst, int pbl, dma_addr_t dma_tx, in sxgbe_dma_channel_init() argument
51 /* set the pbl */ in sxgbe_dma_channel_init()
55 /* program the TX pbl */ in sxgbe_dma_channel_init()
57 reg_val |= (pbl << SXGBE_DMA_TXPBL_LSHIFT); in sxgbe_dma_channel_init()
59 /* program the RX pbl */ in sxgbe_dma_channel_init()
61 reg_val |= (pbl << SXGBE_DMA_RXPBL_LSHIFT); in sxgbe_dma_channel_init()
/kernel/linux/linux-4.19/Documentation/devicetree/bindings/net/
Dstmmac.txt39 - snps,pbl Programmable Burst Length (tx and rx)
41 If set, DMA tx will use this value rather than snps,pbl.
43 If set, DMA rx will use this value rather than snps,pbl.
44 - snps,no-pbl-x8 Don't multiply the pbl/txpbl/rxpbl values by 8.
/kernel/linux/linux-4.19/drivers/infiniband/hw/nes/
Dnes_verbs.c334 * Note: Set to always use a fixed length single page entry PBL. This is to allow in nes_alloc_mr()
335 * for the fast_reg_mr operation to always know the size of the PBL. in nes_alloc_mr()
786 __le64 *pbl = NULL; in nes_setup_virt_qp() local
796 nes_debug(NES_DBG_QP, "Userspace PBL, pbl_size=%u, pbl_entries = %d pbl_vbase=%p, pbl_pbase=%lx\n", in nes_setup_virt_qp()
800 pbl = (__le64 *) nespbl->pbl_vbase; /* points to first pbl entry */ in nes_setup_virt_qp()
802 /* the first pbl to be fro the rq_vbase... */ in nes_setup_virt_qp()
805 …nesqp->hwqp.sq_pbase = (le32_to_cpu(((__le32 *)pbl)[0])) | ((u64)((le32_to_cpu(((__le32 *)pbl)[1])… in nes_setup_virt_qp()
821 /* PBL entries were used by the rq.. */ in nes_setup_virt_qp()
822 pbl += sq_pbl_entries; in nes_setup_virt_qp()
823 …nesqp->hwqp.rq_pbase = (le32_to_cpu(((__le32 *)pbl)[0])) | ((u64)((le32_to_cpu(((__le32 *)pbl)[1])… in nes_setup_virt_qp()
[all …]
/kernel/linux/linux-4.19/drivers/infiniband/hw/cxgb3/
Dcxio_resource.c252 * PBL Memory Manager. Uses Linux generic allocator.
255 #define MIN_PBL_SHIFT 8 /* 256B == min PBL size (32 entries) */
285 pr_debug("%s failed to add PBL chunk (%x/%x)\n", in cxio_hal_pblpool_create()
288 pr_warn("%s: Failed to add all PBL chunks (%x/%x)\n", in cxio_hal_pblpool_create()
295 pr_debug("%s added PBL chunk (%x/%x)\n", in cxio_hal_pblpool_create()

12345678910>>...12