]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/dp_tunnel: Don't update tunnel state during system resume
authorImre Deak <imre.deak@intel.com>
Thu, 19 Feb 2026 18:28:19 +0000 (20:28 +0200)
committerImre Deak <imre.deak@intel.com>
Wed, 25 Feb 2026 13:29:46 +0000 (15:29 +0200)
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.

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.

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.

Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patch.msgid.link/20260219182823.926702-2-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_dp_tunnel.c

index 83865c02d477cdab4b3075d93aad1e61a9333f6f..633706274c9c6914c802bd52c627f9f03f66b178 100644 (file)
@@ -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);
 }
 
 /**