diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0351-drm-amdgpu-cleanup-context-structure-v2.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0351-drm-amdgpu-cleanup-context-structure-v2.patch | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/common/recipes-kernel/linux/files/0351-drm-amdgpu-cleanup-context-structure-v2.patch b/common/recipes-kernel/linux/files/0351-drm-amdgpu-cleanup-context-structure-v2.patch deleted file mode 100644 index 9f89b9f6..00000000 --- a/common/recipes-kernel/linux/files/0351-drm-amdgpu-cleanup-context-structure-v2.patch +++ /dev/null @@ -1,217 +0,0 @@ -From 0b492a4c92050862a9780b941d52c05923fcd669 Mon Sep 17 00:00:00 2001 -From: Alex Deucher <alexander.deucher@amd.com> -Date: Sun, 16 Aug 2015 22:48:26 -0400 -Subject: [PATCH 0351/1050] drm/amdgpu: cleanup context structure v2 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The comment is misleading and incorrect, remove it. - -Printing the id is completely meaningless and this practice -can cause a race conditions on command submission. - -The flags and hangs fields are completely unused. - -Give all fields a common indentation. - -v2: remove fpriv reference and unused flags as well, fix debug message. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com> -Reviewed-by: Chunming Zhou <david1.zhou@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu.h | 50 +++++++++++++++------------------ - drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 28 +++++------------- - 2 files changed, 29 insertions(+), 49 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -index 548e2bb..069cc28 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -179,6 +179,7 @@ struct amdgpu_ring; - struct amdgpu_semaphore; - struct amdgpu_cs_parser; - struct amdgpu_irq_src; -+struct amdgpu_fpriv; - - enum amdgpu_cp_irq { - AMDGPU_CP_IRQ_GFX_EOP = 0, -@@ -984,27 +985,32 @@ struct amdgpu_vm_manager { - * context related structures - */ - --struct amdgpu_ctx_state { -- uint64_t flags; -- uint32_t hangs; --}; -- - struct amdgpu_ctx { -- /* call kref_get()before CS start and kref_put() after CS fence signaled */ -- struct kref refcount; -- struct amdgpu_fpriv *fpriv; -- struct amdgpu_ctx_state state; -- uint32_t id; -- unsigned reset_counter; -+ struct kref refcount; -+ unsigned reset_counter; - }; - - struct amdgpu_ctx_mgr { -- struct amdgpu_device *adev; -- struct idr ctx_handles; -- /* lock for IDR system */ -- struct mutex lock; -+ struct amdgpu_device *adev; -+ struct mutex lock; -+ /* protected by lock */ -+ struct idr ctx_handles; - }; - -+int amdgpu_ctx_alloc(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv, -+ uint32_t *id); -+int amdgpu_ctx_free(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv, -+ uint32_t id); -+ -+void amdgpu_ctx_fini(struct amdgpu_fpriv *fpriv); -+ -+struct amdgpu_ctx *amdgpu_ctx_get(struct amdgpu_fpriv *fpriv, uint32_t id); -+int amdgpu_ctx_put(struct amdgpu_ctx *ctx); -+ -+int amdgpu_ctx_ioctl(struct drm_device *dev, void *data, -+ struct drm_file *filp); -+ -+ - /* - * file private structure - */ -@@ -1013,7 +1019,7 @@ struct amdgpu_fpriv { - struct amdgpu_vm vm; - struct mutex bo_list_lock; - struct idr bo_list_handles; -- struct amdgpu_ctx_mgr ctx_mgr; -+ struct amdgpu_ctx_mgr ctx_mgr; - }; - - /* -@@ -1850,18 +1856,6 @@ struct amdgpu_atcs { - struct amdgpu_atcs_functions functions; - }; - --int amdgpu_ctx_alloc(struct amdgpu_device *adev,struct amdgpu_fpriv *fpriv, -- uint32_t *id,uint32_t flags); --int amdgpu_ctx_free(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv, -- uint32_t id); -- --void amdgpu_ctx_fini(struct amdgpu_fpriv *fpriv); --struct amdgpu_ctx *amdgpu_ctx_get(struct amdgpu_fpriv *fpriv, uint32_t id); --int amdgpu_ctx_put(struct amdgpu_ctx *ctx); -- --extern int amdgpu_ctx_ioctl(struct drm_device *dev, void *data, -- struct drm_file *filp); -- - /* - * CGS - */ -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c -index 6c66ac8..e63cfb7 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c -@@ -28,16 +28,13 @@ - static void amdgpu_ctx_do_release(struct kref *ref) - { - struct amdgpu_ctx *ctx; -- struct amdgpu_ctx_mgr *mgr; - - ctx = container_of(ref, struct amdgpu_ctx, refcount); -- mgr = &ctx->fpriv->ctx_mgr; -- -- idr_remove(&mgr->ctx_handles, ctx->id); - kfree(ctx); - } - --int amdgpu_ctx_alloc(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv, uint32_t *id, uint32_t flags) -+int amdgpu_ctx_alloc(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv, -+ uint32_t *id) - { - int r; - struct amdgpu_ctx *ctx; -@@ -57,8 +54,6 @@ int amdgpu_ctx_alloc(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv, uin - *id = (uint32_t)r; - - memset(ctx, 0, sizeof(*ctx)); -- ctx->id = *id; -- ctx->fpriv = fpriv; - kref_init(&ctx->refcount); - mutex_unlock(&mgr->lock); - -@@ -73,6 +68,7 @@ int amdgpu_ctx_free(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv, uint - mutex_lock(&mgr->lock); - ctx = idr_find(&mgr->ctx_handles, id); - if (ctx) { -+ idr_remove(&mgr->ctx_handles, id); - kref_put(&ctx->refcount, amdgpu_ctx_do_release); - mutex_unlock(&mgr->lock); - return 0; -@@ -97,8 +93,8 @@ static int amdgpu_ctx_query(struct amdgpu_device *adev, - } - - /* TODO: these two are always zero */ -- out->state.flags = ctx->state.flags; -- out->state.hangs = ctx->state.hangs; -+ out->state.flags = 0x0; -+ out->state.hangs = 0x0; - - /* determine if a GPU reset has occured since the last call */ - reset_counter = atomic_read(&adev->gpu_reset_counter); -@@ -123,7 +119,7 @@ void amdgpu_ctx_fini(struct amdgpu_fpriv *fpriv) - - idr_for_each_entry(idp,ctx,id) { - if (kref_put(&ctx->refcount, amdgpu_ctx_do_release) != 1) -- DRM_ERROR("ctx (id=%ul) is still alive\n",ctx->id); -+ DRM_ERROR("ctx %p is still alive\n", ctx); - } - - mutex_destroy(&mgr->lock); -@@ -134,7 +130,6 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data, - { - int r; - uint32_t id; -- uint32_t flags; - - union drm_amdgpu_ctx *args = data; - struct amdgpu_device *adev = dev->dev_private; -@@ -142,11 +137,10 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data, - - r = 0; - id = args->in.ctx_id; -- flags = args->in.flags; - - switch (args->in.op) { - case AMDGPU_CTX_OP_ALLOC_CTX: -- r = amdgpu_ctx_alloc(adev, fpriv, &id, flags); -+ r = amdgpu_ctx_alloc(adev, fpriv, &id); - args->out.alloc.ctx_id = id; - break; - case AMDGPU_CTX_OP_FREE_CTX: -@@ -177,17 +171,9 @@ struct amdgpu_ctx *amdgpu_ctx_get(struct amdgpu_fpriv *fpriv, uint32_t id) - - int amdgpu_ctx_put(struct amdgpu_ctx *ctx) - { -- struct amdgpu_fpriv *fpriv; -- struct amdgpu_ctx_mgr *mgr; -- - if (ctx == NULL) - return -EINVAL; - -- fpriv = ctx->fpriv; -- mgr = &fpriv->ctx_mgr; -- mutex_lock(&mgr->lock); - kref_put(&ctx->refcount, amdgpu_ctx_do_release); -- mutex_unlock(&mgr->lock); -- - return 0; - } --- -1.9.1 - |