> -----Original Message-----
> From: Intel-xe <[email protected]> On Behalf Of Imre Deak
> Sent: Monday, 1 June 2026 12.38
> To: [email protected]; [email protected]
> Subject: [PATCH v2 03/22] drm/i915/dp_link_training: Flush commits in debugfs 
> entries
> 
> Flush pending connector commits before accessing the link training state from 
> debugfs. Access to connector state - like the link
> training state - that may be updated from an asynchronous commit tail must 
> hold the connection mutex and wait for the tail to
> complete. The commit tail cannot hold the connection mutex, so all other 
> accessors must wait for it explicitly.
> 

Reviewed-by: Mika Kahola <[email protected]>

> Signed-off-by: Imre Deak <[email protected]>
> ---
>  .../drm/i915/display/intel_dp_link_training.c | 23 +++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c 
> b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> index eb75819a85c05..eea75a744b5ba 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> @@ -1882,8 +1882,11 @@ static int i915_dp_force_link_rate_show(struct 
> seq_file *m, void *data)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       if (intel_dp->link.active)
>               current_rate = intel_dp->link_rate;
> +
>       force_rate = intel_dp->link.force_rate;
> 
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
> @@ -1955,6 +1958,8 @@ static ssize_t i915_dp_force_link_rate_write(struct 
> file *file,
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       intel_dp_reset_link_params(intel_dp);
>       intel_dp->link.force_rate = rate;
> 
> @@ -1980,6 +1985,8 @@ static int i915_dp_force_lane_count_show(struct 
> seq_file *m, void *data)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       if (intel_dp->link.active)
>               current_lane_count = intel_dp->lane_count;
>       force_lane_count = intel_dp->link.force_lane_count; @@ -2057,6 +2064,8 
> @@ static ssize_t
> i915_dp_force_lane_count_write(struct file *file,
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       intel_dp_reset_link_params(intel_dp);
>       intel_dp->link.force_lane_count = lane_count;
> 
> @@ -2079,6 +2088,8 @@ static int i915_dp_max_link_rate_show(void *data, u64 
> *val)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       *val = intel_dp->link.max_rate;
> 
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
> @@ -2098,6 +2109,8 @@ static int i915_dp_max_lane_count_show(void *data, u64 
> *val)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       *val = intel_dp->link.max_lane_count;
> 
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
> @@ -2117,6 +2130,8 @@ static int 
> i915_dp_force_link_training_failure_show(void *data, u64 *val)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       *val = intel_dp->link.force_train_failure;
> 
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
> @@ -2138,6 +2153,8 @@ static int 
> i915_dp_force_link_training_failure_write(void *data, u64 val)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       intel_dp->link.force_train_failure = val;
> 
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
> @@ -2159,6 +2176,8 @@ static int i915_dp_force_link_retrain_show(void *data, 
> u64 *val)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       *val = intel_dp->link.force_retrain;
> 
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
> @@ -2177,6 +2196,8 @@ static int i915_dp_force_link_retrain_write(void *data, 
> u64 val)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       intel_dp->link.force_retrain = val;
> 
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
> @@ -2200,6 +2221,8 @@ static int i915_dp_link_retrain_disabled_show(struct 
> seq_file *m, void *data)
>       if (err)
>               return err;
> 
> +     intel_dp_flush_connector_commits(connector);
> +
>       seq_printf(m, "%s\n", str_yes_no(intel_dp->link.retrain_disabled));
> 
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
> --
> 2.49.1

Reply via email to