drm/amdgpu: cleanup ctx_mgr init/fini
authorChristian König <christian.koenig@amd.com>
Tue, 4 Aug 2015 14:20:31 +0000 (16:20 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 17 Aug 2015 20:51:00 +0000 (16:51 -0400)
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c

index eadbe792c8aa3136091c2211d6497914d2b05c72..0cd776a55f05ff82346a50d78b32c84499d43497 100644 (file)
@@ -1038,8 +1038,6 @@ int amdgpu_ctx_alloc(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv,
 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);
 
@@ -1051,6 +1049,8 @@ struct fence *amdgpu_ctx_get_fence(struct amdgpu_ctx *ctx,
 int amdgpu_ctx_ioctl(struct drm_device *dev, void *data,
                     struct drm_file *filp);
 
+void amdgpu_ctx_mgr_init(struct amdgpu_ctx_mgr *mgr);
+void amdgpu_ctx_mgr_fini(struct amdgpu_ctx_mgr *mgr);
 
 /*
  * file private structure
index 6766ead31c4d25bb4687338eca4201fc0fef21e2..3c353375b228079ec9f5fb7de1a0459d38c151b1 100644 (file)
@@ -182,23 +182,6 @@ static int amdgpu_ctx_query(struct amdgpu_device *adev,
        return 0;
 }
 
-void amdgpu_ctx_fini(struct amdgpu_fpriv *fpriv)
-{
-       struct idr *idp;
-       struct amdgpu_ctx *ctx;
-       uint32_t id;
-       struct amdgpu_ctx_mgr *mgr = &fpriv->ctx_mgr;
-       idp = &mgr->ctx_handles;
-
-       idr_for_each_entry(idp,ctx,id) {
-               if (kref_put(&ctx->refcount, amdgpu_ctx_do_release) != 1)
-                       DRM_ERROR("ctx %p is still alive\n", ctx);
-       }
-
-       idr_destroy(&mgr->ctx_handles);
-       mutex_destroy(&mgr->lock);
-}
-
 int amdgpu_ctx_ioctl(struct drm_device *dev, void *data,
                     struct drm_file *filp)
 {
@@ -330,3 +313,26 @@ struct fence *amdgpu_ctx_get_fence(struct amdgpu_ctx *ctx,
 
        return fence;
 }
+
+void amdgpu_ctx_mgr_init(struct amdgpu_ctx_mgr *mgr)
+{
+       mutex_init(&mgr->lock);
+       idr_init(&mgr->ctx_handles);
+}
+
+void amdgpu_ctx_mgr_fini(struct amdgpu_ctx_mgr *mgr)
+{
+       struct amdgpu_ctx *ctx;
+       struct idr *idp;
+       uint32_t id;
+
+       idp = &mgr->ctx_handles;
+
+       idr_for_each_entry(idp, ctx, id) {
+               if (kref_put(&ctx->refcount, amdgpu_ctx_do_release) != 1)
+                       DRM_ERROR("ctx %p is still alive\n", ctx);
+       }
+
+       idr_destroy(&mgr->ctx_handles);
+       mutex_destroy(&mgr->lock);
+}
index 53da3d8a868c9131389ef62b9357b318dd8f68e8..7226def4e8fb1aaea68732888ca545e44b2cf149 100644 (file)
@@ -527,10 +527,7 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)
        mutex_init(&fpriv->bo_list_lock);
        idr_init(&fpriv->bo_list_handles);
 
-       /* init context manager */
-       mutex_init(&fpriv->ctx_mgr.lock);
-       idr_init(&fpriv->ctx_mgr.ctx_handles);
-       fpriv->ctx_mgr.adev = adev;
+       amdgpu_ctx_mgr_init(&fpriv->ctx_mgr);
 
        file_priv->driver_priv = fpriv;
 
@@ -571,8 +568,7 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev,
        idr_destroy(&fpriv->bo_list_handles);
        mutex_destroy(&fpriv->bo_list_lock);
 
-       /* release context */
-       amdgpu_ctx_fini(fpriv);
+       amdgpu_ctx_mgr_fini(&fpriv->ctx_mgr);
 
        kfree(fpriv);
        file_priv->driver_priv = NULL;