> -----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
