aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0351-drm-amdgpu-cleanup-context-structure-v2.patch
diff options
context:
space:
mode:
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.patch217
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
-