On Mon, Feb 23, 2026 at 05:54:38PM +0200, Murthy, Arun R wrote:
> 
> > -----Original Message-----
> > From: Intel-gfx <[email protected]> On Behalf Of Imre
> > Deak
> > Sent: Thursday, February 19, 2026 11:58 PM
> > To: [email protected]; [email protected]
> > Subject: [PATCH 1/5] drm/i915/dp_tunnel: Don't update tunnel state during
> > system resume
> > 
> > During system resume, restoring the pre-suspend display state must not fail.
> > This requires preserving the sink capabilities from before suspend, 
> > including the
> > available link bandwidth.
> > 
> I don't see the sink capabilities being stored in this patch.

The sink capabilities are stored in intel_dp and intel_connector,
including the maximum link rate and lane count, which determine the link
bandwidth. This patch preserves those capabilities across suspend/resume
by preventing the tunnel state from being updated during resume.

> 
> > If these capabilities are not preserved, the restore modeset may fail, 
> > either due
> > to a missing sink capability or insufficient link bandwidth for the 
> > restored mode.
> Don't see this in the patch.
> 
> > 
> > When the sink is connected through a DP tunnel, prevent such capability
> > changes by skipping tunnel state updates during resume. This also avoids
> > updating the sink state via the tunnel while it is being resumed.
> > 
> > Signed-off-by: Imre Deak <[email protected]>
> > ---
> >  drivers/gpu/drm/i915/display/intel_dp_tunnel.c | 11 ++++++-----
> >  1 file changed, 6 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp_tunnel.c
> > b/drivers/gpu/drm/i915/display/intel_dp_tunnel.c
> > index faa2b7a46699d..eb1eed1c8c7bb 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp_tunnel.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp_tunnel.c
> > @@ -150,11 +150,9 @@ static int allocate_initial_tunnel_bw_for_pipes(struct
> > intel_dp *intel_dp, u8 pi
> >                         drm_dp_tunnel_name(intel_dp->tunnel),
> >                         encoder->base.base.id, encoder->base.name,
> >                         ERR_PTR(err));
> > -
> > -           return err;
> >     }
> > 
> > -   return update_tunnel_state(intel_dp);
> > +   return err;
> >  }
> > 
> >  static int allocate_initial_tunnel_bw(struct intel_dp *intel_dp, @@ -200,10
> > +198,13 @@ static int detect_new_tunnel(struct intel_dp *intel_dp, struct
> > drm_modeset_acqui
> >     }
> > 
> >     ret = allocate_initial_tunnel_bw(intel_dp, ctx);
> > -   if (ret < 0)
> > +   if (ret < 0) {
> >             intel_dp_tunnel_destroy(intel_dp);
> > 
> > -   return ret;
> > +           return ret;
> > +   }
> > +
> > +   return update_tunnel_state(intel_dp);
> >  }
> > 
> >  /**
> > --
> > 2.49.1
> 
> Thanks and Regards,
> Arun R Murthy
> --------------------

Reply via email to