+ p_t2->dma_mem[i].virt_addr,
+ p_t2->dma_mem[i].phys_addr,
+ p_t2->dma_mem[i].size);
+
+ OSAL_FREE(p_hwfn->p_dev, p_t2->dma_mem);
+ p_t2->dma_mem = OSAL_NULL;
+}
+
+static enum _ecore_status_t
+ecore_cxt_t2_alloc_pages(struct ecore_hwfn *p_hwfn,
+ struct ecore_src_t2 *p_t2,
+ u32 total_size, u32 page_size)
+{
+ void **p_virt;
+ u32 size, i;
+
+ if (!p_t2 || !p_t2->dma_mem)
+ return ECORE_INVAL;
+
+ for (i = 0; i < p_t2->num_pages; i++) {
+ size = OSAL_MIN_T(u32, total_size, page_size);
+ p_virt = &p_t2->dma_mem[i].virt_addr;
+
+ *p_virt = OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev,
+ &p_t2->dma_mem[i].phys_addr,
+ size);
+ if (!p_t2->dma_mem[i].virt_addr)
+ return ECORE_NOMEM;
+
+ OSAL_MEM_ZERO(*p_virt, size);
+ p_t2->dma_mem[i].size = size;
+ total_size -= size;
+ }