Re: [PATCH] thunderbolt: debugfs: Don't stop reading SB registers if just one fails
From: Mika Westerberg
Date: Mon Apr 13 2026 - 00:39:33 EST
On Fri, Apr 10, 2026 at 07:27:34PM +0200, Konrad Dybcio wrote:
> On 4/10/26 5:10 PM, Mika Westerberg wrote:
> > On Fri, Apr 10, 2026 at 04:43:54PM +0200, Konrad Dybcio wrote:
> >> On 4/10/26 4:29 PM, Konrad Dybcio wrote:
> >>> On 4/9/26 4:32 PM, Mika Westerberg wrote:
> >>>> On Thu, Apr 09, 2026 at 02:59:22PM +0200, Konrad Dybcio wrote:
> >>>>> On 4/9/26 2:04 PM, Mika Westerberg wrote:
> >>>
> >>> [...]
> >>>
> >>>>>> I assume you have tested this on a hardware that supports this too, right?
> >>>>>
> >>>>> Hardware that exposes that register this does not exercise the altered
> >>>>> code path.
> >>>>
> >>>> Well it may happen now that previously we got -EIO from some other register
> >>>> and we stopped there, now this changes and we actually continue reading so
> >>>> this definitely should be tested.
> >>>
> >>> The only register before USB4_SB_GEN4_TXFFE that isn't in-spec for
> >>> both retimers in v1.0 and v2.0 is USB4_SB_LRD_TUNING (0x07). The PS8830
> >>> interestingly reports all zeroes (not a bounce).
> >>>
> >>> The registers following USB4_SB_GEN4_TXFFE in the array are
> >>> USB4_SB_VERSION and USB4_SB_DATA. The former is not accessed anywhere
> >>> else in the code, at first glance. The latter is, during NVM r/w and
> >>> in margining ops, which have definitely been in use for a long time.
> >>>
> >>> Plus both of them are the v1.0 spec. The USB4_SB_GEN4_TXFFE specifically
> >>> isn't (the retimer supplement pdf lists it as Rsvd, the main spec pdf
> >>> omits it in the SB register table), as it wasn't previously useful (since
> >>> Gen4 came about in v2.0).
> >>>
> >>>
> >>> I don't think there's an easy way to limit the reading of this register
> >>> since the bit indicating Gen4 capability is in USB4_SB_LINK_CONF (0x0c),
> >>> which is Rsvd on retimers regardless of the spec revision. A connected
> >>> port could easily have higher/lower capabilities, too.
> >>
> >> Checked again, the USB4_SB_FW_VERSION (0x02) register's lowest 8 bytes
> >> are 0/1 for retimers implementing USB4v1 and 2 for v2, so we may go this
> >> path too
> >
> > I also checked from Retimer 1.0 spec and there it is still "Reserved. May
> > have non-zero value". Probably not good to rely on that.
>
> In Table 4-3 below that definition, it says:
>
> """
> Shall be set to 00h or 01h
>
> It is recommended that this field be set to 01h.
> """
Oh yeah missed that.
> But we can revisit limiting those reads another day
Agree.