示例#1
0
static void amdgpu_ctx_do_release(struct kref *ref)
{
	struct amdgpu_ctx *ctx;

	ctx = container_of(ref, struct amdgpu_ctx, refcount);

	amdgpu_ctx_fini(ctx);

	kfree(ctx);
}
示例#2
0
文件: amdgpu_ctx.c 项目: avagin/linux
static void amdgpu_ctx_do_release(struct kref *ref)
{
	struct amdgpu_ctx *ctx;
	unsigned num_entities;
	u32 i;

	ctx = container_of(ref, struct amdgpu_ctx, refcount);

	num_entities = 0;
	for (i = 0; i < AMDGPU_HW_IP_NUM; i++)
		num_entities += amdgpu_ctx_num_entities[i];

	for (i = 0; i < num_entities; i++)
		drm_sched_entity_destroy(&ctx->entities[0][i].entity);

	amdgpu_ctx_fini(ref);
}
示例#3
0
static void amdgpu_ctx_do_release(struct kref *ref)
{
	struct amdgpu_ctx *ctx;
	u32 i;

	ctx = container_of(ref, struct amdgpu_ctx, refcount);

	for (i = 0; i < ctx->adev->num_rings; i++) {

		if (ctx->adev->rings[i] == &ctx->adev->gfx.kiq.ring)
			continue;

		drm_sched_entity_fini(&ctx->adev->rings[i]->sched,
			&ctx->rings[i].entity);
	}

	amdgpu_ctx_fini(ref);
}