Commit a9d629d7 authored by Sean Paul's avatar Sean Paul Committed by Rob Clark

drm/msm: dpu: Remove crtc_lock from setup_mixers

I think the intention here was to protect the enc->crtc access, but
that's insufficient to avoid enc->crtc changing. Fortunately we're
already holding the modeset lock when this is called (from
atomic_check), so remove the crtc_lock and add a modeset lock check.

While we're at it, use the encoder mask from crtc state instead of
legacy pointer.

Changes in v2:
- None
Reviewed-by: default avatarJeykumar Sankaran <jsanka@codeaurora.org>
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent b77d0f0d
...@@ -485,19 +485,13 @@ static void _dpu_crtc_setup_mixer_for_encoder( ...@@ -485,19 +485,13 @@ static void _dpu_crtc_setup_mixer_for_encoder(
static void _dpu_crtc_setup_mixers(struct drm_crtc *crtc) static void _dpu_crtc_setup_mixers(struct drm_crtc *crtc)
{ {
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
struct drm_encoder *enc; struct drm_encoder *enc;
mutex_lock(&dpu_crtc->crtc_lock); WARN_ON(!drm_modeset_is_locked(&crtc->mutex));
/* Check for mixers on all encoders attached to this crtc */
list_for_each_entry(enc, &crtc->dev->mode_config.encoder_list, head) {
if (enc->crtc != crtc)
continue;
/* Check for mixers on all encoders attached to this crtc */
drm_for_each_encoder_mask(enc, crtc->dev, crtc->state->encoder_mask)
_dpu_crtc_setup_mixer_for_encoder(crtc, enc); _dpu_crtc_setup_mixer_for_encoder(crtc, enc);
}
mutex_unlock(&dpu_crtc->crtc_lock);
} }
static void _dpu_crtc_setup_lm_bounds(struct drm_crtc *crtc, static void _dpu_crtc_setup_lm_bounds(struct drm_crtc *crtc,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment