summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Crouse <jcrouse@codeaurora.org>2017-06-12 09:16:48 -0600
committerJordan Crouse <jcrouse@codeaurora.org>2017-06-19 15:50:32 -0600
commit53530e16447303d6e4ff4372be5bfe9922261596 (patch)
treecc975a56462e38a04a1086e708ee0039bc5418b7
parentd8505d8307d73749b9eb0ff01c978a6ba0c60928 (diff)
drm/msm: Simplify ringbuffer cleanup
Cleanup and consolidate sanity checking on the ringbuffer cleanup code. Change-Id: Ic0dedbad551d36ca8ed3db56a4366a5008768791 Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
-rw-r--r--drivers/gpu/drm/msm/msm_gpu.c15
-rw-r--r--drivers/gpu/drm/msm/msm_ringbuffer.c5
2 files changed, 7 insertions, 13 deletions
diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
index 6bbd4c338433..4e43b96341f8 100644
--- a/drivers/gpu/drm/msm/msm_gpu.c
+++ b/drivers/gpu/drm/msm/msm_gpu.c
@@ -935,10 +935,8 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev,
return 0;
fail:
- for (i = 0; i < ARRAY_SIZE(gpu->rb); i++) {
- if (gpu->rb[i])
- msm_ringbuffer_destroy(gpu->rb[i]);
- }
+ for (i = 0; i < ARRAY_SIZE(gpu->rb); i++)
+ msm_ringbuffer_destroy(gpu->rb[i]);
pm_runtime_disable(&pdev->dev);
return ret;
@@ -957,15 +955,8 @@ void msm_gpu_cleanup(struct msm_gpu *gpu)
bs_fini(gpu);
- for (i = 0; i < ARRAY_SIZE(gpu->rb); i++) {
- if (!gpu->rb[i])
- continue;
-
- if (gpu->rb[i]->iova)
- msm_gem_put_iova(gpu->rb[i]->bo, gpu->aspace);
-
+ for (i = 0; i < ARRAY_SIZE(gpu->rb); i++)
msm_ringbuffer_destroy(gpu->rb[i]);
- }
msm_snapshot_destroy(gpu, gpu->snapshot);
pm_runtime_disable(&pdev->dev);
diff --git a/drivers/gpu/drm/msm/msm_ringbuffer.c b/drivers/gpu/drm/msm/msm_ringbuffer.c
index 458f80426b39..9b8e76da449f 100644
--- a/drivers/gpu/drm/msm/msm_ringbuffer.c
+++ b/drivers/gpu/drm/msm/msm_ringbuffer.c
@@ -60,7 +60,10 @@ fail:
void msm_ringbuffer_destroy(struct msm_ringbuffer *ring)
{
- if (ring->bo)
+ if (ring && ring->bo) {
+ msm_gem_put_iova(ring->bo, ring->gpu->aspace);
drm_gem_object_unreference_unlocked(ring->bo);
+ }
+
kfree(ring);
}