Message ID | 20240722165503.2084999-12-imre.deak@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/dp_mst: Enable LT fallback for UHBR<->non-UHBR rates | expand |
> -----Original Message----- > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Imre > Deak > Sent: Monday, July 22, 2024 10:25 PM > To: intel-gfx@lists.freedesktop.org > Subject: [PATCH 11/14] drm/i915/dp_mst: Queue modeset-retry after a > failed payload BW allocation > > If the MST payload allocation failed, enabling the output also failed most > probably, so send a uevent accordinly requesting the user to retry the > modeset. While at it remove the driver specific debug message, there is > already one printed by drm_dp_add_payload_part1(). > > Signed-off-by: Imre Deak <imre.deak@intel.com> LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > --- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c > b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 27ce5c3f5951e..57f29906fa28f 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -1158,8 +1158,7 @@ static void intel_mst_pre_enable_dp(struct > intel_atomic_state *state, > ret = drm_dp_add_payload_part1(&intel_dp->mst_mgr, mst_state, > > drm_atomic_get_mst_payload_state(mst_state, connector->port)); > if (ret < 0) > - drm_dbg_kms(&dev_priv->drm, "Failed to create MST > payload for %s: %d\n", > - connector->base.name, ret); > + intel_dp_queue_modeset_retry_for_link(state, &dig_port- > >base, > +pipe_config); > > /* > * Before Gen 12 this is not done as part of @@ -1223,6 +1222,7 > @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > enum transcoder trans = pipe_config->cpu_transcoder; > bool first_mst_stream = intel_dp->active_mst_links == 1; > struct intel_crtc *pipe_crtc; > + int ret; > > drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); > > @@ -1254,8 +1254,11 @@ static void intel_mst_enable_dp(struct > intel_atomic_state *state, > if (first_mst_stream) > intel_ddi_wait_for_fec_status(encoder, pipe_config, true); > > - drm_dp_add_payload_part2(&intel_dp->mst_mgr, > - > drm_atomic_get_mst_payload_state(mst_state, connector->port)); > + ret = drm_dp_add_payload_part2(&intel_dp->mst_mgr, > + > drm_atomic_get_mst_payload_state(mst_state, > + > connector->port)); > + if (ret < 0) > + intel_dp_queue_modeset_retry_for_link(state, &dig_port- > >base, > +pipe_config); > > if (DISPLAY_VER(dev_priv) >= 12) > intel_de_rmw(dev_priv, hsw_chicken_trans_reg(dev_priv, > trans), > -- > 2.44.2
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 27ce5c3f5951e..57f29906fa28f 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -1158,8 +1158,7 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, ret = drm_dp_add_payload_part1(&intel_dp->mst_mgr, mst_state, drm_atomic_get_mst_payload_state(mst_state, connector->port)); if (ret < 0) - drm_dbg_kms(&dev_priv->drm, "Failed to create MST payload for %s: %d\n", - connector->base.name, ret); + intel_dp_queue_modeset_retry_for_link(state, &dig_port->base, pipe_config); /* * Before Gen 12 this is not done as part of @@ -1223,6 +1222,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, enum transcoder trans = pipe_config->cpu_transcoder; bool first_mst_stream = intel_dp->active_mst_links == 1; struct intel_crtc *pipe_crtc; + int ret; drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); @@ -1254,8 +1254,11 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, if (first_mst_stream) intel_ddi_wait_for_fec_status(encoder, pipe_config, true); - drm_dp_add_payload_part2(&intel_dp->mst_mgr, - drm_atomic_get_mst_payload_state(mst_state, connector->port)); + ret = drm_dp_add_payload_part2(&intel_dp->mst_mgr, + drm_atomic_get_mst_payload_state(mst_state, + connector->port)); + if (ret < 0) + intel_dp_queue_modeset_retry_for_link(state, &dig_port->base, pipe_config); if (DISPLAY_VER(dev_priv) >= 12) intel_de_rmw(dev_priv, hsw_chicken_trans_reg(dev_priv, trans),
If the MST payload allocation failed, enabling the output also failed most probably, so send a uevent accordinly requesting the user to retry the modeset. While at it remove the driver specific debug message, there is already one printed by drm_dp_add_payload_part1(). Signed-off-by: Imre Deak <imre.deak@intel.com> --- drivers/gpu/drm/i915/display/intel_dp_mst.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)