[Intel-gfx] [PATCH] drm/i915: Fix regression with crtc disable ordering

Souza, Jose jose.souza at intel.com
Fri Aug 30 19:59:16 UTC 2019


On Fri, 2019-08-30 at 12:16 +0200, Maarten Lankhorst wrote:
> When we moved the code to disable crtc's to a separate patch,
> we forgot to ensure that
> for_each_oldnew_intel_crtc_in_state_reverse()
> was moved as well.
> 

Reviewed-by: José Roberto de Souza <jose.souza at intel.com>

> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Fixes: 66d9cec8a6c9 ("drm/i915/display: Move the commit_tail()
> disable sequence to separate function")
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Manasi Navare <manasi.d.navare at intel.com>
> Cc: José Roberto de Souza <jose.souza at intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 21 ++++++++++------
> ----
>  1 file changed, 11 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index b38d842ff6ec..e661e2099118 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -13784,7 +13784,15 @@ static void
> intel_commit_modeset_disables(struct intel_atomic_state *state)
>  	struct intel_crtc *crtc;
>  	int i;
>  
> -	for_each_oldnew_intel_crtc_in_state(state, crtc,
> old_crtc_state, new_crtc_state, i) {
> +	/*
> +	 * Disable CRTC/pipes in reverse order because some
> features(MST in
> +	 * TGL+) requires master and slave relationship between pipes,
> so it
> +	 * should always pick the lowest pipe as master as it will be
> enabled
> +	 * first and disable in the reverse order so the master will be
> the
> +	 * last one to be disabled.
> +	 */
> +	for_each_oldnew_intel_crtc_in_state_reverse(state, crtc,
> old_crtc_state,
> +						    new_crtc_state, i)
> {
>  		if (!needs_modeset(new_crtc_state))
>  			continue;
>  
> @@ -13963,15 +13971,8 @@ static void intel_atomic_commit_tail(struct
> intel_atomic_state *state)
>  	if (state->modeset)
>  		wakeref = intel_display_power_get(dev_priv,
> POWER_DOMAIN_MODESET);
>  
> -	/*
> -	 * Disable CRTC/pipes in reverse order because some
> features(MST in
> -	 * TGL+) requires master and slave relationship between pipes,
> so it
> -	 * should always pick the lowest pipe as master as it will be
> enabled
> -	 * first and disable in the reverse order so the master will be
> the
> -	 * last one to be disabled.
> -	 */
> -	for_each_oldnew_intel_crtc_in_state_reverse(state, crtc,
> old_crtc_state,
> -						    new_crtc_state, i)
> {
> +	for_each_oldnew_intel_crtc_in_state(state, crtc,
> old_crtc_state,
> +					    new_crtc_state, i) {
>  		if (needs_modeset(new_crtc_state) ||
>  		    new_crtc_state->update_pipe) {
>  


More information about the Intel-gfx mailing list