RE: [PATCH 06/14] drm/i915/dp: Send only a single modeset-retry uevent for a commit

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

 



> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Imre
> Deak
> Sent: Monday, July 22, 2024 10:25 PM
> To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> Subject: [PATCH 06/14] drm/i915/dp: Send only a single modeset-retry uevent
> for a commit
> 
> There are multiple failure cases a modeset-retry uevent can be sent for a link
> (TBT tunnel BW allocation failure, unrecoverable link training failure), a follow-
> up patch adding the handling for a new case where the DP MST payload
> allocation fails. The uevent is the same in all cases, sent to all the connectors on
> the link, so in case of multiple failures there is no point in sending a separate
> uevent for each failure; prevent this, sending only a single modeset-retry
> uevent for a commit.
> 
Is an exit condition required with some 'x' retry so that this retry doesn't end up in an infinite loop.
For link training failure the link rate/lane count is reduced and when it reaches the least can exit, but for BW allocation failures/payload failure this may not be the case.

Thanks and Regards,
Arun R Murthy
--------------------
> Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx>
> ---
>  drivers/gpu/drm/i915/display/intel_display_types.h | 1 +
>  drivers/gpu/drm/i915/display/intel_dp.c            | 6 ++++++
>  2 files changed, 7 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index a9d2acdc51a4a..3501125c55158 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1754,6 +1754,7 @@ struct intel_dp {
>  	u8 lane_count;
>  	u8 sink_count;
>  	bool link_trained;
> +	bool needs_modeset_retry;
>  	bool use_max_params;
>  	u8 dpcd[DP_RECEIVER_CAP_SIZE];
>  	u8 psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE];
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 421e970b3c180..0882dddd97206 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2876,6 +2876,11 @@ intel_dp_queue_modeset_retry_for_link(struct
> intel_atomic_state *state,
>  	struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
>  	int i;
> 
> +	if (intel_dp->needs_modeset_retry)
> +		return;
> +
> +	intel_dp->needs_modeset_retry = true;
> +
>  	if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST)) {
>  		intel_dp_queue_modeset_retry_work(intel_dp-
> >attached_connector);
> 
> @@ -3009,6 +3014,7 @@ void intel_dp_set_link_params(struct intel_dp
> *intel_dp,  {
>  	memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set));
>  	intel_dp->link_trained = false;
> +	intel_dp->needs_modeset_retry = false;
>  	intel_dp->link_rate = link_rate;
>  	intel_dp->lane_count = lane_count;
>  }
> --
> 2.44.2





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

  Powered by Linux