Re: [PATCH 2/2] drm/i915/dp: Modeset only the tiled connectors with CRTC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 22, 2020 at 04:24:15PM -0800, Manasi Navare wrote:

Missing commit msg.


> Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> Fixes: a603f5bd1691 ("drm/i915/dp: Make sure all tiled connectors get added to the state with full modeset")
> Closes: https://gitlab.freedesktop.org/drm/intel/issues/516
> Signed-off-by: Manasi Navare <manasi.d.navare@xxxxxxxxx>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 79f9054078ea..c8d6f6e8fc7f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -13155,11 +13155,12 @@ intel_modeset_pipe_config(struct intel_crtc_state *pipe_config)
>  	}
>  
>  	/* Get total number of tiled connectors in state that belong to
> -	 * this tile group.
> +	 * this tile group and that have a CRTC
>  	 */
>  	for_each_new_connector_in_state(state, connector, connector_state, i) {
>  		if (connector->has_tile &&
> -		    connector->tile_group->id == tile_group_id)
> +		    connector->tile_group->id == tile_group_id &&
> +		    connector_state->crtc)

It might have a crtc, but that crtc might not be active. So feels like
this fixes things more by luck that by design.

The real problem of course is that we can't tell whether other crtcs are
active or not during intel_modeset_pipe_config(). All pipes must finish
that stage before we can make an actual decision based on what's active
and what's inactive. And that requires the two stage approach I proposed
in my branch before xmas.

>  			num_tiled_conns++;
>  	}
>  
> @@ -14507,13 +14508,14 @@ intel_modeset_all_tiles(struct intel_atomic_state *state, int tile_grp_id)
>  			continue;
>  		conn_state = drm_atomic_get_connector_state(&state->base,
>  							    connector);
> +
>  		if (IS_ERR(conn_state)) {
>  			ret =  PTR_ERR(conn_state);
>  			break;
>  		}
>  
>  		if (!conn_state->crtc)
> -			continue;
> +			break;
>  
>  		crtc_state = drm_atomic_get_crtc_state(&state->base,
>  						       conn_state->crtc);
> @@ -14550,6 +14552,8 @@ intel_atomic_check_tiled_conns(struct intel_atomic_state *state)
>  			continue;
>  		if (!intel_connector_needs_modeset(state, connector))
>  			continue;
> +		if (!new_conn_state->crtc)
> +			continue;
>  
>  		ret = intel_modeset_all_tiles(state, connector->tile_group->id);
>  		if (ret)
> -- 
> 2.19.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux