Lines Matching refs:ctx
16 static int cb_map_mem(struct hl_ctx *ctx, struct hl_cb *cb)
18 struct hl_device *hdev = ctx->hdev;
45 virt_addr = (u64) gen_pool_alloc(ctx->cb_va_pool, page_size);
56 gen_pool_free(ctx->cb_va_pool, virt_addr, page_size);
66 mutex_lock(&ctx->mmu_lock);
71 rc = hl_mmu_map(ctx, va_block->start, bus_addr, va_block->size,
86 mutex_unlock(&ctx->mmu_lock);
96 hl_mmu_unmap(ctx, va_block->start, va_block->size,
103 mutex_unlock(&ctx->mmu_lock);
107 gen_pool_free(ctx->cb_va_pool, va_block->start, va_block->size);
115 static void cb_unmap_mem(struct hl_ctx *ctx, struct hl_cb *cb)
117 struct hl_device *hdev = ctx->hdev;
120 mutex_lock(&ctx->mmu_lock);
123 if (hl_mmu_unmap(ctx, va_block->start, va_block->size,
132 mutex_unlock(&ctx->mmu_lock);
135 gen_pool_free(ctx->cb_va_pool, va_block->start, va_block->size);
175 cb_unmap_mem(cb->ctx, cb);
177 hl_ctx_put(cb->ctx);
239 struct hl_ctx *ctx, u32 cb_size, bool internal_cb,
244 int rc, ctx_id = ctx->asid;
296 cb->ctx = ctx;
297 hl_ctx_get(hdev, cb->ctx);
307 rc = cb_map_mem(ctx, cb);
339 cb_unmap_mem(cb->ctx, cb);
341 hl_ctx_put(cb->ctx);
401 rc = hl_cb_create(hdev, &hpriv->cb_mgr, hpriv->ctx,
576 id, cb->ctx->asid);
647 int hl_cb_va_pool_init(struct hl_ctx *ctx)
649 struct hl_device *hdev = ctx->hdev;
656 ctx->cb_va_pool = gen_pool_create(__ffs(prop->pmmu.page_size), -1);
657 if (!ctx->cb_va_pool) {
663 rc = gen_pool_add(ctx->cb_va_pool, prop->cb_va_start_addr,
674 gen_pool_destroy(ctx->cb_va_pool);
679 void hl_cb_va_pool_fini(struct hl_ctx *ctx)
681 struct hl_device *hdev = ctx->hdev;
686 gen_pool_destroy(ctx->cb_va_pool);