Lines Matching full:pbl
39 static void bng_free_pbl(struct bng_re_res *res, struct bng_re_pbl *pbl) in bng_free_pbl() argument
44 for (i = 0; i < pbl->pg_count; i++) { in bng_free_pbl()
45 if (pbl->pg_arr[i]) in bng_free_pbl()
46 dma_free_coherent(&pdev->dev, pbl->pg_size, in bng_free_pbl()
48 pbl->pg_arr[i] & in bng_free_pbl()
50 pbl->pg_map_arr[i]); in bng_free_pbl()
53 "PBL free pg_arr[%d] empty?!\n", i); in bng_free_pbl()
54 pbl->pg_arr[i] = NULL; in bng_free_pbl()
57 vfree(pbl->pg_arr); in bng_free_pbl()
58 pbl->pg_arr = NULL; in bng_free_pbl()
59 vfree(pbl->pg_map_arr); in bng_free_pbl()
60 pbl->pg_map_arr = NULL; in bng_free_pbl()
61 pbl->pg_count = 0; in bng_free_pbl()
62 pbl->pg_size = 0; in bng_free_pbl()
66 struct bng_re_pbl *pbl, in bng_alloc_pbl() argument
78 pbl->pg_arr = vmalloc_array(pages, sizeof(void *)); in bng_alloc_pbl()
79 if (!pbl->pg_arr) in bng_alloc_pbl()
82 pbl->pg_map_arr = vmalloc_array(pages, sizeof(dma_addr_t)); in bng_alloc_pbl()
83 if (!pbl->pg_map_arr) { in bng_alloc_pbl()
84 vfree(pbl->pg_arr); in bng_alloc_pbl()
85 pbl->pg_arr = NULL; in bng_alloc_pbl()
88 pbl->pg_count = 0; in bng_alloc_pbl()
89 pbl->pg_size = sginfo->pgsize; in bng_alloc_pbl()
92 pbl->pg_arr[i] = dma_alloc_coherent(&pdev->dev, in bng_alloc_pbl()
93 pbl->pg_size, in bng_alloc_pbl()
94 &pbl->pg_map_arr[i], in bng_alloc_pbl()
96 if (!pbl->pg_arr[i]) in bng_alloc_pbl()
98 pbl->pg_count++; in bng_alloc_pbl()
103 bng_free_pbl(res, pbl); in bng_alloc_pbl()
118 bng_free_pbl(res, &hwq->pbl[i]); in bng_re_free_hwq()
156 rc = bng_alloc_pbl(res, &hwq->pbl[BNG_PBL_LVL_0], hwq_attr->sginfo); in bng_re_alloc_init_hwq()
176 rc = bng_alloc_pbl(res, &hwq->pbl[BNG_PBL_LVL_0], &sginfo); in bng_re_alloc_init_hwq()
180 /* Alloc PBL pages */ in bng_re_alloc_init_hwq()
183 rc = bng_alloc_pbl(res, &hwq->pbl[BNG_PBL_LVL_1], &sginfo); in bng_re_alloc_init_hwq()
186 /* Fill PDL with PBL page pointers */ in bng_re_alloc_init_hwq()
188 (dma_addr_t **)hwq->pbl[BNG_PBL_LVL_0].pg_arr; in bng_re_alloc_init_hwq()
189 src_phys_ptr = hwq->pbl[BNG_PBL_LVL_1].pg_map_arr; in bng_re_alloc_init_hwq()
190 for (i = 0; i < hwq->pbl[BNG_PBL_LVL_1].pg_count; i++) in bng_re_alloc_init_hwq()
194 rc = bng_alloc_pbl(res, &hwq->pbl[BNG_PBL_LVL_2], in bng_re_alloc_init_hwq()
203 (dma_addr_t **)hwq->pbl[BNG_PBL_LVL_1].pg_arr; in bng_re_alloc_init_hwq()
204 src_phys_ptr = hwq->pbl[BNG_PBL_LVL_2].pg_map_arr; in bng_re_alloc_init_hwq()
205 for (i = 0; i < hwq->pbl[BNG_PBL_LVL_2].pg_count; i++) { in bng_re_alloc_init_hwq()
211 i = hwq->pbl[BNG_PBL_LVL_2].pg_count; in bng_re_alloc_init_hwq()
228 /* Alloc PBL page */ in bng_re_alloc_init_hwq()
229 rc = bng_alloc_pbl(res, &hwq->pbl[BNG_PBL_LVL_0], &sginfo); in bng_re_alloc_init_hwq()
233 rc = bng_alloc_pbl(res, &hwq->pbl[BNG_PBL_LVL_1], in bng_re_alloc_init_hwq()
240 /* Fill PBL with PTE pointers */ in bng_re_alloc_init_hwq()
242 (dma_addr_t **)hwq->pbl[BNG_PBL_LVL_0].pg_arr; in bng_re_alloc_init_hwq()
243 src_phys_ptr = hwq->pbl[BNG_PBL_LVL_1].pg_map_arr; in bng_re_alloc_init_hwq()
244 for (i = 0; i < hwq->pbl[BNG_PBL_LVL_1].pg_count; i++) in bng_re_alloc_init_hwq()
249 i = hwq->pbl[BNG_PBL_LVL_1].pg_count; in bng_re_alloc_init_hwq()
271 hwq->pbl_ptr = hwq->pbl[lvl].pg_arr; in bng_re_alloc_init_hwq()
272 hwq->pbl_dma_ptr = hwq->pbl[lvl].pg_map_arr; in bng_re_alloc_init_hwq()