[PATCH 24/25] drm/msm/dpu: remove mutex locking for RM interfaces

Jeykumar Sankaran
2018-10-09T04:27:41Z

Since HW reservations are happening through atomic_check
and all the display commits are catered by a single commit thread,
it is not necessary to protect the interfaces by a separate
mutex.

Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
---
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 24 ------------------------
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 2 --
2 files changed, 26 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
index 34e09aa..9a63128 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
@@ -74,8 +74,6 @@ int dpu_rm_destroy(struct dpu_rm *rm)
}
}

- mutex_destroy(&rm->rm_lock);
-
return 0;
}

@@ -146,8 +144,6 @@ int dpu_rm_init(struct dpu_rm *rm,
/* Clear, setup lists */
memset(rm, 0, sizeof(*rm));

- mutex_init(&rm->rm_lock);
-
for (type = 0; type < DPU_HW_BLK_MAX; type++)
INIT_LIST_HEAD(&rm->hw_blks[type]);

@@ -473,11 +469,7 @@ void dpu_rm_crtc_release(struct dpu_rm *rm, struct drm_crtc_state *crtc_state)
{
struct dpu_crtc_state *dpu_cstate = to_dpu_crtc_state(crtc_state);

- mutex_lock(&rm->rm_lock);
-
_dpu_rm_crtc_release_reservation(rm, dpu_cstate);
-
- mutex_unlock(&rm->rm_lock);
}

void dpu_rm_encoder_release(struct dpu_rm *rm,
@@ -485,11 +477,7 @@ void dpu_rm_encoder_release(struct dpu_rm *rm,
{
struct dpu_crtc_state *dpu_cstate = to_dpu_crtc_state(crtc_state);

- mutex_lock(&rm->rm_lock);
-
_dpu_rm_encoder_release_reservation(rm, dpu_cstate);
-
- mutex_unlock(&rm->rm_lock);
}

int dpu_rm_crtc_reserve(
@@ -506,8 +494,6 @@ int dpu_rm_crtc_reserve(

DRM_DEBUG_KMS("reserving hw for crtc %d\n", crtc_state->crtc->base.id);

- mutex_lock(&rm->rm_lock);
-
ret = _dpu_rm_reserve_lms(rm, dpu_cstate);
if (ret) {
DPU_ERROR("unable to find appropriate mixers\n");
@@ -520,15 +506,11 @@ int dpu_rm_crtc_reserve(
goto cleanup_on_fail;
}

- mutex_unlock(&rm->rm_lock);
-
return ret;

cleanup_on_fail:
_dpu_rm_crtc_release_reservation(rm, dpu_cstate);

- mutex_unlock(&rm->rm_lock);
-
return ret;
}

@@ -547,8 +529,6 @@ int dpu_rm_encoder_reserve(

DRM_DEBUG_KMS("reserving hw for enc %d\n", enc->base.id);

- mutex_lock(&rm->rm_lock);
-
dpu_encoder_get_hw_resources(enc, &hw_res);

ret = _dpu_rm_reserve_intfs(rm, dpu_cstate, &hw_res);
@@ -557,14 +537,10 @@ int dpu_rm_encoder_reserve(
goto cleanup_on_fail;
}

- mutex_unlock(&rm->rm_lock);
-
return ret;

cleanup_on_fail:
_dpu_rm_encoder_release_reservation(rm, dpu_cstate);

- mutex_unlock(&rm->rm_lock);
-
return ret;
}
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h
index 8676fa5..9acbeba 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h
@@ -24,11 +24,9 @@
* struct dpu_rm - DPU dynamic hardware resource manager
* @hw_blks: array of lists of hardware resources present in the system, one
* list per type of hardware block
- * @rm_lock: resource manager mutex
*/
struct dpu_rm {
struct list_head hw_blks[DPU_HW_BLK_MAX];
- struct mutex rm_lock;
};

/**
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project