Reviewed-by: Arun R Murthy <[email protected]> Thanks and Regards, Arun R Murthy --------------------
> -----Original Message----- > From: Deak, Imre <[email protected]> > Sent: Monday, February 23, 2026 10:05 PM > To: Murthy, Arun R <[email protected]> > Cc: [email protected]; [email protected] > Subject: Re: [PATCH 2/5] drm/i915/dp_tunnel: Simplify detection of link BW > change > > On Mon, Feb 23, 2026 at 06:02:26PM +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 2/5] drm/i915/dp_tunnel: Simplify detection of link > > > BW change > > > > > > update_tunnel_state() checks whether a tunnel state change (e.g. > > > available tunnel bandwidth) affects the list of valid modes for the > > > sink connected through the tunnel. If so, its caller sends a hotplug > > > event so userspace can re-enumerate the modes. > > > > > > A change in tunnel bandwidth does not affect the mode list if the > > > bandwidth was above the sink's DPRX bandwidth both before and after > > > the update, since in that case the effective bandwidth remains limited by > the DPRX. > > > > > > As get_current_link_bw() via intel_dp_max_link_data_rate() already > > > returns bandwidth values clamped to the DPRX limit, the condition > > > for detecting a mode list change can be simplified to: > > > > > > old_bw != new_bw > > > > > > Remove the explicit checks for whether the bandwidth was below the > > > maximum DPRX bandwidth before and after the update, and rely on the > > > clamped bandwidth values instead. > > > > > > Signed-off-by: Imre Deak <[email protected]> > > > --- > > > drivers/gpu/drm/i915/display/intel_dp_tunnel.c | 18 > > > +++++------------- > > > 1 file changed, 5 insertions(+), 13 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_tunnel.c > > > b/drivers/gpu/drm/i915/display/intel_dp_tunnel.c > > > index eb1eed1c8c7bb..9f3750035f68e 100644 > > > --- a/drivers/gpu/drm/i915/display/intel_dp_tunnel.c > > > +++ b/drivers/gpu/drm/i915/display/intel_dp_tunnel.c > > > @@ -54,30 +54,23 @@ static int kbytes_to_mbits(int kbytes) > > > return DIV_ROUND_UP(kbytes * 8, 1000); } > > > > > > -static int get_current_link_bw(struct intel_dp *intel_dp, > > > - bool *below_dprx_bw) > > > +static int get_current_link_bw(struct intel_dp *intel_dp) > > > { > > > int rate = intel_dp_max_common_rate(intel_dp); > > > int lane_count = intel_dp_max_common_lane_count(intel_dp); > > > - int bw; > > > > > > - bw = intel_dp_max_link_data_rate(intel_dp, rate, lane_count); > > > - *below_dprx_bw = bw < drm_dp_max_dprx_data_rate(rate, > > > lane_count); > > > - > > > - return bw; > > > + return intel_dp_max_link_data_rate(intel_dp, rate, lane_count); > > > } > > > > Function name says get the current data rate, but we are returning the > > max data rate here. > > It is the current link bandwidth, i.e., the link bandwidth allowed by the > Thunderbolt Connection Manager at the moment. It is not a maximum (which > could refer either to the maximum DPRX bandwidth or the maximum > Thunderbolt bandwidth), but rather the amount allowed by all other > components on the Thunderbolt link sharing the same bandwidth. > > > > > Thanks and Regards, > > Arun R Murthy > > ------------------- > > > > > > static int update_tunnel_state(struct intel_dp *intel_dp) { > > > struct intel_display *display = to_intel_display(intel_dp); > > > struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; > > > - bool old_bw_below_dprx; > > > - bool new_bw_below_dprx; > > > int old_bw; > > > int new_bw; > > > int ret; > > > > > > - old_bw = get_current_link_bw(intel_dp, &old_bw_below_dprx); > > > + old_bw = get_current_link_bw(intel_dp); > > > > > > ret = drm_dp_tunnel_update_state(intel_dp->tunnel); > > > if (ret < 0) { > > > @@ -96,11 +89,10 @@ static int update_tunnel_state(struct intel_dp > > > *intel_dp) > > > > > > intel_dp_update_sink_caps(intel_dp); > > > > > > - new_bw = get_current_link_bw(intel_dp, &new_bw_below_dprx); > > > + new_bw = get_current_link_bw(intel_dp); > > > > > > /* Suppress the notification if the mode list can't change due to bw. */ > > > - if (old_bw_below_dprx == new_bw_below_dprx && > > > - !new_bw_below_dprx) > > > + if (old_bw == new_bw) > > > return 0; > > > > > > drm_dbg_kms(display->drm, > > > -- > > > 2.49.1 > >
