[v2,24/24] drm/msm: dpu: Remove crtc_lock

Submitted by Sean Paul on Nov. 16, 2018, 6:42 p.m.

Details

Message ID 20181116184238.170034-25-sean@poorly.run
State New
Headers show
Series "drm/msm: Various dpu locking and legacy cleanups" ( rev: 2 1 ) in Freedreno

Not browsing as part of any series.

Commit Message

Sean Paul Nov. 16, 2018, 6:42 p.m.
From: Sean Paul <seanpaul@chromium.org>

Each time it's called we're holding the crtc modeset lock, so it's
redundant.

Changes in v2:
- None

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 11 -----------
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h |  3 ---
 2 files changed, 14 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index f15cba2584a0..70b5104d1111 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -69,7 +69,6 @@  static void dpu_crtc_destroy(struct drm_crtc *crtc)
 		return;
 
 	drm_crtc_cleanup(crtc);
-	mutex_destroy(&dpu_crtc->crtc_lock);
 	kfree(dpu_crtc);
 }
 
@@ -806,8 +805,6 @@  static void dpu_crtc_disable(struct drm_crtc *crtc,
 				  old_crtc_state->encoder_mask)
 		dpu_encoder_assign_crtc(encoder, NULL);
 
-	mutex_lock(&dpu_crtc->crtc_lock);
-
 	/* wait for frame_event_done completion */
 	if (_dpu_crtc_wait_for_frame_done(crtc))
 		DPU_ERROR("crtc%d wait for frame done failed;frame_pending%d\n",
@@ -836,8 +833,6 @@  static void dpu_crtc_disable(struct drm_crtc *crtc,
 	cstate->bw_control = false;
 	cstate->bw_split_vote = false;
 
-	mutex_unlock(&dpu_crtc->crtc_lock);
-
 	if (crtc->state->event && !crtc->state->active) {
 		spin_lock_irqsave(&crtc->dev->event_lock, flags);
 		drm_crtc_send_vblank_event(crtc, crtc->state->event);
@@ -870,12 +865,9 @@  static void dpu_crtc_enable(struct drm_crtc *crtc,
 		dpu_encoder_register_frame_event_callback(encoder,
 				dpu_crtc_frame_event_cb, (void *)crtc);
 
-	mutex_lock(&dpu_crtc->crtc_lock);
 	trace_dpu_crtc_enable(DRMID(crtc), true, dpu_crtc);
 	dpu_crtc->enabled = true;
 
-	mutex_unlock(&dpu_crtc->crtc_lock);
-
 	drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask)
 		dpu_encoder_assign_crtc(encoder, crtc);
 
@@ -1177,7 +1169,6 @@  static int _dpu_debugfs_status_show(struct seq_file *s, void *data)
 	drm_modeset_lock_all(crtc->dev);
 	cstate = to_dpu_crtc_state(crtc->state);
 
-	mutex_lock(&dpu_crtc->crtc_lock);
 	mode = &crtc->state->adjusted_mode;
 	out_width = _dpu_crtc_get_mixer_width(cstate, mode);
 
@@ -1264,7 +1255,6 @@  static int _dpu_debugfs_status_show(struct seq_file *s, void *data)
 		dpu_crtc->vblank_cb_time = ktime_set(0, 0);
 	}
 
-	mutex_unlock(&dpu_crtc->crtc_lock);
 	drm_modeset_unlock_all(crtc->dev);
 
 	return 0;
@@ -1414,7 +1404,6 @@  struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct drm_plane *plane,
 	crtc = &dpu_crtc->base;
 	crtc->dev = dev;
 
-	mutex_init(&dpu_crtc->crtc_lock);
 	spin_lock_init(&dpu_crtc->spin_lock);
 	atomic_set(&dpu_crtc->frame_pending, 0);
 
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
index 2b358546af49..34f0c4d4d774 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
@@ -140,7 +140,6 @@  struct dpu_crtc_frame_event {
  * @dirty_list    : list of color processing features are dirty
  * @ad_dirty: list containing ad properties that are dirty
  * @ad_active: list containing ad properties that are active
- * @crtc_lock     : crtc lock around create, destroy and access.
  * @frame_pending : Whether or not an update is pending
  * @frame_events  : static allocation of in-flight frame events
  * @frame_event_list : available frame event list
@@ -173,8 +172,6 @@  struct dpu_crtc {
 	struct list_head ad_dirty;
 	struct list_head ad_active;
 
-	struct mutex crtc_lock;
-
 	atomic_t frame_pending;
 	struct dpu_crtc_frame_event frame_events[DPU_CRTC_FRAME_EVENT_SIZE];
 	struct list_head frame_event_list;

Comments

On 2018-11-16 10:42, Sean Paul wrote:
> From: Sean Paul <seanpaul@chromium.org>
> 
> Each time it's called we're holding the crtc modeset lock, so it's
> redundant.
> 
> Changes in v2:
> - None
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 11 -----------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h |  3 ---
>  2 files changed, 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index f15cba2584a0..70b5104d1111 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -69,7 +69,6 @@ static void dpu_crtc_destroy(struct drm_crtc *crtc)
>  		return;
> 
>  	drm_crtc_cleanup(crtc);
> -	mutex_destroy(&dpu_crtc->crtc_lock);
>  	kfree(dpu_crtc);
>  }
> 
> @@ -806,8 +805,6 @@ static void dpu_crtc_disable(struct drm_crtc *crtc,
>  				  old_crtc_state->encoder_mask)
>  		dpu_encoder_assign_crtc(encoder, NULL);
> 
> -	mutex_lock(&dpu_crtc->crtc_lock);
> -
>  	/* wait for frame_event_done completion */
>  	if (_dpu_crtc_wait_for_frame_done(crtc))
>  		DPU_ERROR("crtc%d wait for frame done
> failed;frame_pending%d\n",
> @@ -836,8 +833,6 @@ static void dpu_crtc_disable(struct drm_crtc *crtc,
>  	cstate->bw_control = false;
>  	cstate->bw_split_vote = false;
> 
> -	mutex_unlock(&dpu_crtc->crtc_lock);
> -
>  	if (crtc->state->event && !crtc->state->active) {
>  		spin_lock_irqsave(&crtc->dev->event_lock, flags);
>  		drm_crtc_send_vblank_event(crtc, crtc->state->event);
> @@ -870,12 +865,9 @@ static void dpu_crtc_enable(struct drm_crtc *crtc,
>  		dpu_encoder_register_frame_event_callback(encoder,
>  				dpu_crtc_frame_event_cb, (void *)crtc);
> 
> -	mutex_lock(&dpu_crtc->crtc_lock);
>  	trace_dpu_crtc_enable(DRMID(crtc), true, dpu_crtc);
>  	dpu_crtc->enabled = true;
> 
> -	mutex_unlock(&dpu_crtc->crtc_lock);
> -
>  	drm_for_each_encoder_mask(encoder, crtc->dev,
> crtc->state->encoder_mask)
>  		dpu_encoder_assign_crtc(encoder, crtc);
> 
> @@ -1177,7 +1169,6 @@ static int _dpu_debugfs_status_show(struct 
> seq_file
> *s, void *data)
>  	drm_modeset_lock_all(crtc->dev);
>  	cstate = to_dpu_crtc_state(crtc->state);
> 
> -	mutex_lock(&dpu_crtc->crtc_lock);
>  	mode = &crtc->state->adjusted_mode;
>  	out_width = _dpu_crtc_get_mixer_width(cstate, mode);
> 
> @@ -1264,7 +1255,6 @@ static int _dpu_debugfs_status_show(struct 
> seq_file
> *s, void *data)
>  		dpu_crtc->vblank_cb_time = ktime_set(0, 0);
>  	}
> 
> -	mutex_unlock(&dpu_crtc->crtc_lock);
>  	drm_modeset_unlock_all(crtc->dev);
> 
>  	return 0;
> @@ -1414,7 +1404,6 @@ struct drm_crtc *dpu_crtc_init(struct drm_device
> *dev, struct drm_plane *plane,
>  	crtc = &dpu_crtc->base;
>  	crtc->dev = dev;
> 
> -	mutex_init(&dpu_crtc->crtc_lock);
>  	spin_lock_init(&dpu_crtc->spin_lock);
>  	atomic_set(&dpu_crtc->frame_pending, 0);
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> index 2b358546af49..34f0c4d4d774 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> @@ -140,7 +140,6 @@ struct dpu_crtc_frame_event {
>   * @dirty_list    : list of color processing features are dirty
>   * @ad_dirty: list containing ad properties that are dirty
>   * @ad_active: list containing ad properties that are active
> - * @crtc_lock     : crtc lock around create, destroy and access.
>   * @frame_pending : Whether or not an update is pending
>   * @frame_events  : static allocation of in-flight frame events
>   * @frame_event_list : available frame event list
> @@ -173,8 +172,6 @@ struct dpu_crtc {
>  	struct list_head ad_dirty;
>  	struct list_head ad_active;
> 
> -	struct mutex crtc_lock;
> -
>  	atomic_t frame_pending;
>  	struct dpu_crtc_frame_event
> frame_events[DPU_CRTC_FRAME_EVENT_SIZE];
>  	struct list_head frame_event_list;