Linux USB
 help / color / mirror / Atom feed
* thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
@ 2026-11-08 13:15 James Taylor
  2026-11-09 11:18 ` Mika Westerberg
  0 siblings, 1 reply; 9+ messages in thread
From: James Taylor @ 2026-11-08 13:15 UTC (permalink / raw)
  To: linux-usb; +Cc: Mika Westerberg

Hi,

(Resend as plain text. The first copy was rejected by the list for HTML.
Mika, apologies for the duplicate.)

I'm reporting a link-speed problem on an AMD Phoenix USB4 host with a
Thunderbolt 5 (Barlow Ridge) device. I think the register data points at
host firmware, and I'd like to know whether the connection manager has any
supported way to influence it.

Setup
- Host: Minisforum UM890 Pro (AMD Ryzen 9 8945HS / Phoenix, "Pink Sardine"
  USB4 NHI 1022:1668/1669), BIOS 1.06, AGESA PhoenixPI-FP8-FP7 1.2.0.0a
- Device: Minisforum DEG2 eGPU dock, Intel JHL9480 (8086:5786), NVM 62.42,
  vendor 0x41f device 0xd002
- Cable: StarTech TBLT5MM50CM240W (0.5 m, TB5). One retimer is enumerated:
  1-0:2.1 vendor=0x7fea device=0x1032
- Kernel: 7.2.15, software CM, thunderbolt.host_reset=0 (also tested
  host_reset=1: same result)

Symptom
The link always comes up 2 x Gen2 (rx/tx 10.0 Gb/s, 2 lanes),
usb4_port2/link = "tbt". It's deterministic across replug, host_reset and
reboots. A USB4 v1 device (ASM2464PD enclosure) on the same host port, with
a different cable, trains Gen3 x2.

Registers (debugfs)
Host 1-0 port2:
  LANE_ADP_CS_0 = 0x003c01c0   (supported Gen2|Gen3)
  LANE_ADP_CS_1 = 0x4828003c   (target Gen3, current Gen2, width 2)
  PORT_CS_18    = 0x00002f00   (TCM set)
  SB 0x0c LINK_CONF = 03 d3 03
Device 1-2 port1:
  LANE_ADP_CS_0 = 0x0cfe01c0   (supported Gen2|Gen3|Gen4)
  LANE_ADP_CS_1 = 0x4828003e   (target Gen4, current Gen2)
  PORT_CS_18    = 0x00902f01   (TCM set)
  SB 0x0c LINK_CONF = 03 f3 1b

The two LINK_CONF values differ in bit 13. If I map the fields in the USB4
order (enabling decisions, rsvd, enabling requests, rsvd, bonding, Gen3
support, RS-FEC Gen2/Gen3, SB channel support, TBT3 speeds, Gen4, asym...),
the host advertises Gen3 Support = 0 and the device advertises Gen3
Support = 1. I took the field positions from a protocol-analyser field list
rather than the spec text, so please correct me if the layout is wrong.
Under that reading, the host's link characteristics exclude Gen3 even though
its lane adapter supports and targets Gen3, which would explain Gen2.

Experiment
With a thunderbolt.ko built with CONFIG_USB4_DEBUGFS_WRITE:
- Writing "0x0c 0x03 0xf3 0x03" to 1-0/port2/sb_regs fails with -EIO, and
  the value is unchanged. So the host router appears to own this register
  (set by platform/PD firmware).
- Toggling LANE_ADP_CS_1.LD on 1-0 port2 dropped the link. It did not
  re-establish when LD was cleared, and recovered only after reloading the
  driver with host_reset=1. Possibly worth handling separately.

Questions
1. Is my reading of SB LINK_CONF correct, i.e. is the host-side Gen3
   Support bit what limits this link?
2. On AMD USB4 hosts, is there a CM-visible way (router operation, port
   config, or reset sequence) to make the host re-evaluate Gen3 support, or
   is this purely platform PD/USB4 firmware (cable/partner VDO handling with
   TB5 cables)?
3. Is this a known issue with Phoenix/Hawk Point hosts and USB4 v2 / TB5
   devices or cables? (Bugzilla 221822 and 221319 look related but describe
   different symptoms.)

I can provide full debugfs dumps, dmesg with thunderbolt.dyndbg, or test
patches.

Thanks,
James

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
  2026-11-08 13:15 thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2 James Taylor
@ 2026-11-09 11:18 ` Mika Westerberg
  2026-11-09 11:25   ` James Taylor
  0 siblings, 1 reply; 9+ messages in thread
From: Mika Westerberg @ 2026-11-09 11:18 UTC (permalink / raw)
  To: James Taylor; +Cc: linux-usb

Hi,

On Sun, Nov 08, 2026 at 01:15:45PM +0000, James Taylor wrote:
> Hi,
> 
> (Resend as plain text. The first copy was rejected by the list for HTML.
> Mika, apologies for the duplicate.)
> 
> I'm reporting a link-speed problem on an AMD Phoenix USB4 host with a
> Thunderbolt 5 (Barlow Ridge) device. I think the register data points at
> host firmware, and I'd like to know whether the connection manager has any
> supported way to influence it.
> 
> Setup
> - Host: Minisforum UM890 Pro (AMD Ryzen 9 8945HS / Phoenix, "Pink Sardine"
>   USB4 NHI 1022:1668/1669), BIOS 1.06, AGESA PhoenixPI-FP8-FP7 1.2.0.0a
> - Device: Minisforum DEG2 eGPU dock, Intel JHL9480 (8086:5786), NVM 62.42,
>   vendor 0x41f device 0xd002
> - Cable: StarTech TBLT5MM50CM240W (0.5 m, TB5). One retimer is enumerated:
>   1-0:2.1 vendor=0x7fea device=0x1032
> - Kernel: 7.2.15, software CM, thunderbolt.host_reset=0 (also tested
>   host_reset=1: same result)
> 
> Symptom
> The link always comes up 2 x Gen2 (rx/tx 10.0 Gb/s, 2 lanes),
> usb4_port2/link = "tbt". It's deterministic across replug, host_reset and
> reboots. A USB4 v1 device (ASM2464PD enclosure) on the same host port, with
> a different cable, trains Gen3 x2.
> 
> Registers (debugfs)
> Host 1-0 port2:
>   LANE_ADP_CS_0 = 0x003c01c0   (supported Gen2|Gen3)
>   LANE_ADP_CS_1 = 0x4828003c   (target Gen3, current Gen2, width 2)
>   PORT_CS_18    = 0x00002f00   (TCM set)
>   SB 0x0c LINK_CONF = 03 d3 03
> Device 1-2 port1:
>   LANE_ADP_CS_0 = 0x0cfe01c0   (supported Gen2|Gen3|Gen4)
>   LANE_ADP_CS_1 = 0x4828003e   (target Gen4, current Gen2)
>   PORT_CS_18    = 0x00902f01   (TCM set)
>   SB 0x0c LINK_CONF = 03 f3 1b
> 
> The two LINK_CONF values differ in bit 13. If I map the fields in the USB4
> order (enabling decisions, rsvd, enabling requests, rsvd, bonding, Gen3
> support, RS-FEC Gen2/Gen3, SB channel support, TBT3 speeds, Gen4, asym...),
> the host advertises Gen3 Support = 0 and the device advertises Gen3
> Support = 1. I took the field positions from a protocol-analyser field list
> rather than the spec text, so please correct me if the layout is wrong.
> Under that reading, the host's link characteristics exclude Gen3 even though
> its lane adapter supports and targets Gen3, which would explain Gen2.
> 
> Experiment
> With a thunderbolt.ko built with CONFIG_USB4_DEBUGFS_WRITE:
> - Writing "0x0c 0x03 0xf3 0x03" to 1-0/port2/sb_regs fails with -EIO, and
>   the value is unchanged. So the host router appears to own this register
>   (set by platform/PD firmware).
> - Toggling LANE_ADP_CS_1.LD on 1-0 port2 dropped the link. It did not
>   re-establish when LD was cleared, and recovered only after reloading the
>   driver with host_reset=1. Possibly worth handling separately.
> 
> Questions
> 1. Is my reading of SB LINK_CONF correct, i.e. is the host-side Gen3
>    Support bit what limits this link?
> 2. On AMD USB4 hosts, is there a CM-visible way (router operation, port
>    config, or reset sequence) to make the host re-evaluate Gen3 support, or
>    is this purely platform PD/USB4 firmware (cable/partner VDO handling with
>    TB5 cables)?
> 3. Is this a known issue with Phoenix/Hawk Point hosts and USB4 v2 / TB5
>    devices or cables? (Bugzilla 221822 and 221319 look related but describe
>    different symptoms.)
> 
> I can provide full debugfs dumps, dmesg with thunderbolt.dyndbg, or test
> patches.

Please use tbdump from tbtools [1]. It knows the registers. Something like
this:

https://github.com/intel/tbtools/wiki/Useful-Commands#dump-lane-adapter-capability-for-current-link-capabilities-and-status

Also please provide full dmesg with dynamic debugging enabled.

[1] https://github.com/intel/tbtools

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
  2026-11-09 11:18 ` Mika Westerberg
@ 2026-11-09 11:25   ` James Taylor
  2026-11-09 14:20     ` Mika Westerberg
  0 siblings, 1 reply; 9+ messages in thread
From: James Taylor @ 2026-11-09 11:25 UTC (permalink / raw)
  To: mika.westerberg; +Cc: linux-usb

[-- Attachment #1: Type: text/plain, Size: 7509 bytes --]

Hi Mika,

On Mon, Nov 09, 2026 at 12:18:52PM +0100, Mika Westerberg wrote:
> Please use tbdump from tbtools [1]. It knows the registers. Something like
> this:
>
> https://github.com/intel/tbtools/wiki/Useful-Commands#dump-lane-adapter-capability-for-current-link-capabilities-and-status

Thanks, here it is (tbtools 0.8.0). Domain 1 route 0 is the AMD host
router, route 2 is the DEG2 (JHL9480). Both lane adapters on each side
are included, followed by tbadapters for reference.

    tbtools 0.8.0, kernel 7.2.15, BIOS 1.06, 2026-11-09 11:23 UTC

    # tblist -A
    Domain 0
    Domain 0 Route 0: 0000:0000
    Domain 1
    Domain 1 Route 0: 0000:0000
    Domain 1 Route 0 Adapter 2 Index 1: 7fea:1032
    Domain 1 Route 2: 041f:d002 Micro Computer (HK) Tech. Ltd. TBGAA

    # tbdump -d 1 -r 0 -a 2 -N 2 -vv LANE_ADP_CS_0
    0x0080 0x003c01c0 0b00000000 00111100 00000001 11000000 .<.. LANE_ADP_CS_0
      [00:07]       0xc0 Next Capability Pointer
      [08:15]        0x1 Capability ID
      [16:19]        0xc Supported Link Speeds
      [20:21]        0x3 Supported Link Widths (SLW)
      [22:23]        0x0 Gen 4 Asymmetric Support (G4AS)
      [26:26]        0x0 CL0s Support
      [27:27]        0x0 CL1 Support
      [28:28]        0x0 CL2 Support
    0x0081 0x4828003c 0b01001000 00101000 00000000 00111100 H(.< LANE_ADP_CS_1
      [00:03]        0xc Target Link Speed → Router shall attempt Gen 3 speed
      [04:05]        0x3 Target Link Width → Establish a Symmetric Link
      [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
      [10:10]        0x0 CL0s Enable
      [11:11]        0x0 CL1 Enable
      [12:12]        0x0 CL2 Enable
      [14:14]        0x0 Lane Disable (LD)
      [15:15]        0x0 Lane Bonding (LB)
      [16:19]        0x8 Current Link Speed → Gen 2
      [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
      [26:29]        0x2 Adapter State → CL0
      [30:30]        0x1 PM Secondary (PMS)

    # tbdump -d 1 -r 0 -a 3 -N 2 -vv LANE_ADP_CS_0
    0x0080 0x003c0100 0b00000000 00111100 00000001 00000000 .<.. LANE_ADP_CS_0
      [00:07]        0x0 Next Capability Pointer
      [08:15]        0x1 Capability ID
      [16:19]        0xc Supported Link Speeds
      [20:21]        0x3 Supported Link Widths (SLW)
      [22:23]        0x0 Gen 4 Asymmetric Support (G4AS)
      [26:26]        0x0 CL0s Support
      [27:27]        0x0 CL1 Support
      [28:28]        0x0 CL2 Support
    0x0081 0x4828003c 0b01001000 00101000 00000000 00111100 H(.< LANE_ADP_CS_1
      [00:03]        0xc Target Link Speed → Router shall attempt Gen 3 speed
      [04:05]        0x3 Target Link Width → Establish a Symmetric Link
      [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
      [10:10]        0x0 CL0s Enable
      [11:11]        0x0 CL1 Enable
      [12:12]        0x0 CL2 Enable
      [14:14]        0x0 Lane Disable (LD)
      [15:15]        0x0 Lane Bonding (LB)
      [16:19]        0x8 Current Link Speed → Gen 2
      [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
      [26:29]        0x2 Adapter State → CL0
      [30:30]        0x1 PM Secondary (PMS)

    # tbdump -d 1 -r 2 -a 1 -N 2 -vv LANE_ADP_CS_0
    0x0036 0x0cfe01c0 0b00001100 11111110 00000001 11000000 .... LANE_ADP_CS_0
      [00:07]       0xc0 Next Capability Pointer
      [08:15]        0x1 Capability ID
      [16:19]        0xe Supported Link Speeds
      [20:21]        0x3 Supported Link Widths (SLW)
      [22:23]        0x3 Gen 4 Asymmetric Support (G4AS)
      [26:26]        0x1 CL0s Support
      [27:27]        0x1 CL1 Support
      [28:28]        0x0 CL2 Support
    0x0037 0x4828003e 0b01001000 00101000 00000000 00111110 H(.> LANE_ADP_CS_1
      [00:03]        0xe Target Link Speed → Router shall attempt Gen 4 speed
      [04:05]        0x3 Target Link Width → Establish a Symmetric Link
      [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
      [10:10]        0x0 CL0s Enable
      [11:11]        0x0 CL1 Enable
      [12:12]        0x0 CL2 Enable
      [14:14]        0x0 Lane Disable (LD)
      [15:15]        0x0 Lane Bonding (LB)
      [16:19]        0x8 Current Link Speed → Gen 2
      [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
      [26:29]        0x2 Adapter State → CL0
      [30:30]        0x1 PM Secondary (PMS)

    # tbdump -d 1 -r 2 -a 2 -N 2 -vv LANE_ADP_CS_0
    0x0036 0x0cfe0100 0b00001100 11111110 00000001 00000000 .... LANE_ADP_CS_0
      [00:07]        0x0 Next Capability Pointer
      [08:15]        0x1 Capability ID
      [16:19]        0xe Supported Link Speeds
      [20:21]        0x3 Supported Link Widths (SLW)
      [22:23]        0x3 Gen 4 Asymmetric Support (G4AS)
      [26:26]        0x1 CL0s Support
      [27:27]        0x1 CL1 Support
      [28:28]        0x0 CL2 Support
    0x0037 0x4828003e 0b01001000 00101000 00000000 00111110 H(.> LANE_ADP_CS_1
      [00:03]        0xe Target Link Speed → Router shall attempt Gen 4 speed
      [04:05]        0x3 Target Link Width → Establish a Symmetric Link
      [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
      [10:10]        0x0 CL0s Enable
      [11:11]        0x0 CL1 Enable
      [12:12]        0x0 CL2 Enable
      [14:14]        0x0 Lane Disable (LD)
      [15:15]        0x0 Lane Bonding (LB)
      [16:19]        0x8 Current Link Speed → Gen 2
      [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
      [26:29]        0x2 Adapter State → CL0
      [30:30]        0x1 PM Secondary (PMS)

    # tbadapters -d 1 -r 0
     1: Host Interface (upstream)     Enabled
     2: Lane 0                        CL0
     3: Lane 0                        CL0
     4: USB 3 Down                    Disabled
     5: PCIe Down                     L0
     6: DisplayPort IN                Disabled
     7: DisplayPort IN                Disabled

    # tbadapters -d 1 -r 2
     1: Lane 0 (upstream)             CL0
     2: Lane 1                        CL0
     3: Lane 0                        CLd
     4: Lane 1                        CLd
     5: Lane 0                        CLd
     6: Lane 1                        CLd
     7: Lane 0                        CLd
     8: Lane 1                        CLd
     9: PCIe Up                       L0
    10: PCIe Down                     Disabled
    11: DisplayPort OUT               Disabled
    12: DisplayPort OUT               Disabled
    13: Not implemented
    14: Not implemented
    15: Not implemented
    16: Not implemented
    17: PCIe Down                     Disabled
    18: PCIe Down                     Disabled
    19: DisplayPort OUT               Disabled
    20: USB 3 Up                      Disabled
    21: USB 3 Down                    Disabled
    22: USB 3 Down                    Disabled
    23: USB 3 Down                    Disabled

> Also please provide full dmesg with dynamic debugging enabled.

Attached (dmesg-tb-dyndbg-20261109.txt.gz, gzipped to stay under the
list size limit). It is the full log since boot; at 68136.012005 I
reloaded the driver with "modprobe thunderbolt host_reset=0 dyndbg=+p"
so the whole enumeration of the host routers, the retimer and the DEG2
is captured with debug output. The link came up the same way again,
2 x Gen2 ("current link speed 10.0 Gb/s", "link: TBT"). The only edits
to the log are masked MAC and IP addresses.

Happy to run anything else that would help.

Thanks,
James

[-- Attachment #2: dmesg-tb-dyndbg-20261109.txt.gz --]
[-- Type: application/gzip, Size: 36429 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
  2026-11-09 11:25   ` James Taylor
@ 2026-11-09 14:20     ` Mika Westerberg
  2026-11-09 14:39       ` James R Taylor
  0 siblings, 1 reply; 9+ messages in thread
From: Mika Westerberg @ 2026-11-09 14:20 UTC (permalink / raw)
  To: James Taylor; +Cc: linux-usb

Hi,

On Mon, Nov 09, 2026 at 11:25:45AM +0000, James Taylor wrote:
> Hi Mika,
> 
> On Mon, Nov 09, 2026 at 12:18:52PM +0100, Mika Westerberg wrote:
> > Please use tbdump from tbtools [1]. It knows the registers. Something like
> > this:
> >
> > https://github.com/intel/tbtools/wiki/Useful-Commands#dump-lane-adapter-capability-for-current-link-capabilities-and-status
> 
> Thanks, here it is (tbtools 0.8.0). Domain 1 route 0 is the AMD host
> router, route 2 is the DEG2 (JHL9480). Both lane adapters on each side
> are included, followed by tbadapters for reference.

In your command line:

[    0.000000] Command line: initrd=\EFI\nixos\c18phgd1m2qpc2g72pz14fg9h9i38j6w-initrd-linux-7.2.15-initrd.efi init=/nix/store/2m5ckvjrfdbcxrfpklc7rg16jwi11spa-nixos-system-nyx-26.11.20261106.4fe25e1/init usb-storage.quirks=0bc2:3343:u thunderbolt.host_reset=0 pcie_aspm=off nohibernate root=fstab loglevel=4 lsm=landlock,yama,bpf

Please drop thunderbolt.host_reset=0 and pcie_aspm=off. The later disables
much more than just ASPM so it may affect everything. Once you have done
that please take another dmesg (and check also the link registers via
tbdump).

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
  2026-11-09 14:20     ` Mika Westerberg
@ 2026-11-09 14:39       ` James R Taylor
  2026-11-09 15:39         ` Mika Westerberg
  0 siblings, 1 reply; 9+ messages in thread
From: James R Taylor @ 2026-11-09 14:39 UTC (permalink / raw)
  To: mika.westerberg; +Cc: linux-usb

[-- Attachment #1: Type: text/plain, Size: 6303 bytes --]

Hi Mika,

On Mon, Nov 09, 2026 at 03:20:41PM +0100, Mika Westerberg wrote:
> Please drop thunderbolt.host_reset=0 and pcie_aspm=off. The later disables
> much more than just ASPM so it may affect everything. Once you have done
> that please take another dmesg (and check also the link registers via
> tbdump).

Done. I rebooted with both parameters removed. The only addition is
thunderbolt.dyndbg=+p so the full debug output is in the log:

  nohibernate root=fstab loglevel=4 lsm=landlock,yama,bpf usb-storage.quirks=0bc2:3343:u thunderbolt.dyndbg=+p

The result is the same as before: the link still comes up as TBT at
10 Gb/s x2 (the dmesg has "2: link: TBT" and "current link speed
10.0 Gb/s"), and the lane adapter registers are identical to my
previous dump. The host lane adapter targets Gen 3, the DEG2 targets
Gen 4, and both report Current Link Speed = Gen 2, x2.

The full dmesg from this boot is attached (gzipped). The tbdump output
is below.

    # cmdline: initrd=\EFI\nixos\c18phgd1m2qpc2g72pz14fg9h9i38j6w-initrd-linux-7.2.15-initrd.efi init=/nix/store/x1jyvpbgdhl6a91iysmbr5wisgi0sghd-nixos-system-nyx-26.11.20261106.4fe25e1/init usb-storage.quirks=0bc2:3343:u nohibernate root=fstab loglevel=4 lsm=landlock,yama,bpf thunderbolt.dyndbg=+p
    # 1-2 rx=10.0 Gb/s x2 tx=10.0 Gb/s x2
    # usb4_port link: none tbt tbt none none none

    $ tbdump -d 1 -r 0 -a 2 -N 2 -vv LANE_ADP_CS_0
    0x0080 0x003c01c0 0b00000000 00111100 00000001 11000000 .<.. LANE_ADP_CS_0
      [00:07]       0xc0 Next Capability Pointer
      [08:15]        0x1 Capability ID
      [16:19]        0xc Supported Link Speeds
      [20:21]        0x3 Supported Link Widths (SLW)
      [22:23]        0x0 Gen 4 Asymmetric Support (G4AS)
      [26:26]        0x0 CL0s Support
      [27:27]        0x0 CL1 Support
      [28:28]        0x0 CL2 Support
    0x0081 0x4828003c 0b01001000 00101000 00000000 00111100 H(.< LANE_ADP_CS_1
      [00:03]        0xc Target Link Speed → Router shall attempt Gen 3 speed
      [04:05]        0x3 Target Link Width → Establish a Symmetric Link
      [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
      [10:10]        0x0 CL0s Enable
      [11:11]        0x0 CL1 Enable
      [12:12]        0x0 CL2 Enable
      [14:14]        0x0 Lane Disable (LD)
      [15:15]        0x0 Lane Bonding (LB)
      [16:19]        0x8 Current Link Speed → Gen 2
      [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
      [26:29]        0x2 Adapter State → CL0
      [30:30]        0x1 PM Secondary (PMS)

    $ tbdump -d 1 -r 2 -a 1 -N 2 -vv LANE_ADP_CS_0
    0x0036 0x0cfe01c0 0b00001100 11111110 00000001 11000000 .... LANE_ADP_CS_0
      [00:07]       0xc0 Next Capability Pointer
      [08:15]        0x1 Capability ID
      [16:19]        0xe Supported Link Speeds
      [20:21]        0x3 Supported Link Widths (SLW)
      [22:23]        0x3 Gen 4 Asymmetric Support (G4AS)
      [26:26]        0x1 CL0s Support
      [27:27]        0x1 CL1 Support
      [28:28]        0x0 CL2 Support
    0x0037 0x4828003e 0b01001000 00101000 00000000 00111110 H(.> LANE_ADP_CS_1
      [00:03]        0xe Target Link Speed → Router shall attempt Gen 4 speed
      [04:05]        0x3 Target Link Width → Establish a Symmetric Link
      [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
      [10:10]        0x0 CL0s Enable
      [11:11]        0x0 CL1 Enable
      [12:12]        0x0 CL2 Enable
      [14:14]        0x0 Lane Disable (LD)
      [15:15]        0x0 Lane Bonding (LB)
      [16:19]        0x8 Current Link Speed → Gen 2
      [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
      [26:29]        0x2 Adapter State → CL0
      [30:30]        0x1 PM Secondary (PMS)

    $ tbdump -d 1 -r 2 -a 2 -N 2 -vv LANE_ADP_CS_0
    0x0036 0x0cfe0100 0b00001100 11111110 00000001 00000000 .... LANE_ADP_CS_0
      [00:07]        0x0 Next Capability Pointer
      [08:15]        0x1 Capability ID
      [16:19]        0xe Supported Link Speeds
      [20:21]        0x3 Supported Link Widths (SLW)
      [22:23]        0x3 Gen 4 Asymmetric Support (G4AS)
      [26:26]        0x1 CL0s Support
      [27:27]        0x1 CL1 Support
      [28:28]        0x0 CL2 Support
    0x0037 0x4828003e 0b01001000 00101000 00000000 00111110 H(.> LANE_ADP_CS_1
      [00:03]        0xe Target Link Speed → Router shall attempt Gen 4 speed
      [04:05]        0x3 Target Link Width → Establish a Symmetric Link
      [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
      [10:10]        0x0 CL0s Enable
      [11:11]        0x0 CL1 Enable
      [12:12]        0x0 CL2 Enable
      [14:14]        0x0 Lane Disable (LD)
      [15:15]        0x0 Lane Bonding (LB)
      [16:19]        0x8 Current Link Speed → Gen 2
      [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
      [26:29]        0x2 Adapter State → CL0
      [30:30]        0x1 PM Secondary (PMS)

    $ tbadapters -d 1 -r 0
     1: Host Interface (upstream)     Enabled
     2: Lane 0                        CL0
     3: Lane 0                        CL0
     4: USB 3 Down                    Disabled
     5: PCIe Down                     L0
     6: DisplayPort IN                Disabled
     7: DisplayPort IN                Disabled

    $ tbadapters -d 1 -r 2
     1: Lane 0 (upstream)             CL0
     2: Lane 1                        CL0
     3: Lane 0                        CLd
     4: Lane 1                        CLd
     5: Lane 0                        CLd
     6: Lane 1                        CLd
     7: Lane 0                        CLd
     8: Lane 1                        CLd
     9: PCIe Up                       L0
    10: PCIe Down                     Disabled
    11: DisplayPort OUT               Disabled
    12: DisplayPort OUT               Disabled
    13: Not implemented
    14: Not implemented
    15: Not implemented
    16: Not implemented
    17: PCIe Down                     Disabled
    18: PCIe Down                     Disabled
    19: DisplayPort OUT               Disabled
    20: USB 3 Up                      Disabled
    21: USB 3 Down                    Disabled
    22: USB 3 Down                    Disabled
    23: USB 3 Down                    Disabled

Thanks,
James

[-- Attachment #2: dmesg-cleanboot-20261109-1439.txt.gz --]
[-- Type: application/gzip, Size: 37417 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
  2026-11-09 14:39       ` James R Taylor
@ 2026-11-09 15:39         ` Mika Westerberg
  2026-11-09 15:41           ` James R Taylor
  0 siblings, 1 reply; 9+ messages in thread
From: Mika Westerberg @ 2026-11-09 15:39 UTC (permalink / raw)
  To: James R Taylor; +Cc: linux-usb

Hi,

On Mon, Nov 09, 2026 at 02:39:27PM +0000, James R Taylor wrote:
> Hi Mika,
> 
> On Mon, Nov 09, 2026 at 03:20:41PM +0100, Mika Westerberg wrote:
> > Please drop thunderbolt.host_reset=0 and pcie_aspm=off. The later disables
> > much more than just ASPM so it may affect everything. Once you have done
> > that please take another dmesg (and check also the link registers via
> > tbdump).
> 
> Done. I rebooted with both parameters removed. The only addition is
> thunderbolt.dyndbg=+p so the full debug output is in the log:
> 
>   nohibernate root=fstab loglevel=4 lsm=landlock,yama,bpf usb-storage.quirks=0bc2:3343:u thunderbolt.dyndbg=+p
> 
> The result is the same as before: the link still comes up as TBT at
> 10 Gb/s x2 (the dmesg has "2: link: TBT" and "current link speed
> 10.0 Gb/s"), and the lane adapter registers are identical to my
> previous dump. The host lane adapter targets Gen 3, the DEG2 targets
> Gen 4, and both report Current Link Speed = Gen 2, x2.
> 
> The full dmesg from this boot is attached (gzipped). The tbdump output
> is below.
> 
>     # cmdline: initrd=\EFI\nixos\c18phgd1m2qpc2g72pz14fg9h9i38j6w-initrd-linux-7.2.15-initrd.efi init=/nix/store/x1jyvpbgdhl6a91iysmbr5wisgi0sghd-nixos-system-nyx-26.11.20261106.4fe25e1/init usb-storage.quirks=0bc2:3343:u nohibernate root=fstab loglevel=4 lsm=landlock,yama,bpf thunderbolt.dyndbg=+p

Yeah now this is better :)

>     # 1-2 rx=10.0 Gb/s x2 tx=10.0 Gb/s x2
>     # usb4_port link: none tbt tbt none none none
> 
>     $ tbdump -d 1 -r 0 -a 2 -N 2 -vv LANE_ADP_CS_0
>     0x0080 0x003c01c0 0b00000000 00111100 00000001 11000000 .<.. LANE_ADP_CS_0
>       [00:07]       0xc0 Next Capability Pointer
>       [08:15]        0x1 Capability ID
>       [16:19]        0xc Supported Link Speeds
>       [20:21]        0x3 Supported Link Widths (SLW)
>       [22:23]        0x0 Gen 4 Asymmetric Support (G4AS)
>       [26:26]        0x0 CL0s Support
>       [27:27]        0x0 CL1 Support
>       [28:28]        0x0 CL2 Support
>     0x0081 0x4828003c 0b01001000 00101000 00000000 00111100 H(.< LANE_ADP_CS_1
>       [00:03]        0xc Target Link Speed → Router shall attempt Gen 3 speed
>       [04:05]        0x3 Target Link Width → Establish a Symmetric Link
>       [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
>       [10:10]        0x0 CL0s Enable
>       [11:11]        0x0 CL1 Enable
>       [12:12]        0x0 CL2 Enable
>       [14:14]        0x0 Lane Disable (LD)
>       [15:15]        0x0 Lane Bonding (LB)
>       [16:19]        0x8 Current Link Speed → Gen 2
>       [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
>       [26:29]        0x2 Adapter State → CL0
>       [30:30]        0x1 PM Secondary (PMS)
> 
>     $ tbdump -d 1 -r 2 -a 1 -N 2 -vv LANE_ADP_CS_0
>     0x0036 0x0cfe01c0 0b00001100 11111110 00000001 11000000 .... LANE_ADP_CS_0
>       [00:07]       0xc0 Next Capability Pointer
>       [08:15]        0x1 Capability ID
>       [16:19]        0xe Supported Link Speeds
>       [20:21]        0x3 Supported Link Widths (SLW)
>       [22:23]        0x3 Gen 4 Asymmetric Support (G4AS)
>       [26:26]        0x1 CL0s Support
>       [27:27]        0x1 CL1 Support
>       [28:28]        0x0 CL2 Support
>     0x0037 0x4828003e 0b01001000 00101000 00000000 00111110 H(.> LANE_ADP_CS_1
>       [00:03]        0xe Target Link Speed → Router shall attempt Gen 4 speed
>       [04:05]        0x3 Target Link Width → Establish a Symmetric Link
>       [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
>       [10:10]        0x0 CL0s Enable
>       [11:11]        0x0 CL1 Enable
>       [12:12]        0x0 CL2 Enable
>       [14:14]        0x0 Lane Disable (LD)
>       [15:15]        0x0 Lane Bonding (LB)
>       [16:19]        0x8 Current Link Speed → Gen 2
>       [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
>       [26:29]        0x2 Adapter State → CL0
>       [30:30]        0x1 PM Secondary (PMS)
> 
>     $ tbdump -d 1 -r 2 -a 2 -N 2 -vv LANE_ADP_CS_0
>     0x0036 0x0cfe0100 0b00001100 11111110 00000001 00000000 .... LANE_ADP_CS_0
>       [00:07]        0x0 Next Capability Pointer
>       [08:15]        0x1 Capability ID
>       [16:19]        0xe Supported Link Speeds
>       [20:21]        0x3 Supported Link Widths (SLW)
>       [22:23]        0x3 Gen 4 Asymmetric Support (G4AS)
>       [26:26]        0x1 CL0s Support
>       [27:27]        0x1 CL1 Support
>       [28:28]        0x0 CL2 Support
>     0x0037 0x4828003e 0b01001000 00101000 00000000 00111110 H(.> LANE_ADP_CS_1
>       [00:03]        0xe Target Link Speed → Router shall attempt Gen 4 speed
>       [04:05]        0x3 Target Link Width → Establish a Symmetric Link
>       [06:07]        0x0 Target Asymmetric Link → Establish Symmetric Link
>       [10:10]        0x0 CL0s Enable
>       [11:11]        0x0 CL1 Enable
>       [12:12]        0x0 CL2 Enable
>       [14:14]        0x0 Lane Disable (LD)
>       [15:15]        0x0 Lane Bonding (LB)
>       [16:19]        0x8 Current Link Speed → Gen 2
>       [20:25]        0x2 Negotiated Link Width → Symmetric Link (x2)
>       [26:29]        0x2 Adapter State → CL0
>       [30:30]        0x1 PM Secondary (PMS)

We could still look at the PORT_CS_18 but the driver log already tells that
it is in TBT3 mode. What kind of cable you are using? Is it short TB4/5
cable or something else?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
  2026-11-09 15:39         ` Mika Westerberg
@ 2026-11-09 15:41           ` James R Taylor
  2026-11-09 15:50             ` Mika Westerberg
  0 siblings, 1 reply; 9+ messages in thread
From: James R Taylor @ 2026-11-09 15:41 UTC (permalink / raw)
  To: Mika Westerberg; +Cc: linux-usb

Hi Mika,

On Mon, Nov 09, 2026 at 04:39:55PM +0100, Mika Westerberg wrote:
> We could still look at the PORT_CS_18 but the driver log already tells that
> it is in TBT3 mode. What kind of cable you are using? Is it short TB4/5
> cable or something else?

It is a short Thunderbolt 5 cable: StarTech TBLT5MM50CM240W, 0.5 m.

One retimer enumerates on the link, 1-0:2.1 (vendor 0x7fea, device
0x1032, "retimer NVM format of vendor 0x7fea unknown"), and it goes
away when the dock is unplugged. I haven't been able to tell from
Linux whether it sits in the cable or on the DEG2 board.

In case it is useful, here is PORT_CS_18 from both ends, read just now
(same boot as my last mail):

    $ tbdump -d 1 -r 0 -vv -a 2 -N 1 PORT_CS_18
    0x00d2 0x00002f00 0b00000000 00000000 00101111 00000000 ../. PORT_CS_18
      [00:07]        0x0 Cable USB4 Version
      [08:08]        0x1 Bonding Enabled (BE)
      [09:09]        0x1 TBT3-Compatible Mode (TCM)
      [10:10]        0x1 CLx Protocol Support (CPS)
      [11:11]        0x1 RS-FEC Enabled (Gen 2) (RE2)
      [12:12]        0x0 RS-FEC Enabled (Gen 3) (RE3)
      [13:13]        0x1 Router Detected (RD)
      [20:20]        0x0 Cable Gen 3 Support (CG3)
      [21:21]        0x0 Cable Gen 4 Support (CG4)
      [22:22]        0x0 Cable Asymmetric Support (CSA)
      [23:23]        0x0 Cable CLx Support (CSC)

    $ tbdump -d 1 -r 2 -vv -a 1 -N 1 PORT_CS_18
    0x00d2 0x00902f01 0b00000000 10010000 00101111 00000001 ../. PORT_CS_18
      [00:07]        0x1 Cable USB4 Version
      [08:08]        0x1 Bonding Enabled (BE)
      [09:09]        0x1 TBT3-Compatible Mode (TCM)
      [10:10]        0x1 CLx Protocol Support (CPS)
      [11:11]        0x1 RS-FEC Enabled (Gen 2) (RE2)
      [12:12]        0x0 RS-FEC Enabled (Gen 3) (RE3)
      [13:13]        0x1 Router Detected (RD)
      [20:20]        0x1 Cable Gen 3 Support (CG3)
      [21:21]        0x0 Cable Gen 4 Support (CG4)
      [22:22]        0x0 Cable Asymmetric Support (CSA)
      [23:23]        0x1 Cable CLx Support (CSC)

(The wake status bits and TIP, 16-19 and 24, are 0 on both sides.)

So both ends are in TBT3-compatible mode, but the host side reports
Cable USB4 Version 0 and Cable Gen 3 Support 0, while the DEG2 side
reports Cable USB4 Version 1 and Cable Gen 3 Support 1 for the same
cable.

Thanks again for your help with this.

James


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
  2026-11-09 15:41           ` James R Taylor
@ 2026-11-09 15:50             ` Mika Westerberg
  2026-11-09 15:53               ` James R Taylor
  0 siblings, 1 reply; 9+ messages in thread
From: Mika Westerberg @ 2026-11-09 15:50 UTC (permalink / raw)
  To: James R Taylor; +Cc: linux-usb, Mario Limonciello, Sanath S, Basavaraj Natikar

Hi,

On Mon, Nov 09, 2026 at 07:41:13AM -0800, James R Taylor wrote:
> Hi Mika,
> 
> On Mon, Nov 09, 2026 at 04:39:55PM +0100, Mika Westerberg wrote:
> > We could still look at the PORT_CS_18 but the driver log already tells that
> > it is in TBT3 mode. What kind of cable you are using? Is it short TB4/5
> > cable or something else?
> 
> It is a short Thunderbolt 5 cable: StarTech TBLT5MM50CM240W, 0.5 m.

Okay so definitely it should enter USB4 mode.

> One retimer enumerates on the link, 1-0:2.1 (vendor 0x7fea, device
> 0x1032, "retimer NVM format of vendor 0x7fea unknown"), and it goes
> away when the dock is unplugged. I haven't been able to tell from
> Linux whether it sits in the cable or on the DEG2 board.

That's the host side retimer.

> In case it is useful, here is PORT_CS_18 from both ends, read just now
> (same boot as my last mail):
> 
>     $ tbdump -d 1 -r 0 -vv -a 2 -N 1 PORT_CS_18
>     0x00d2 0x00002f00 0b00000000 00000000 00101111 00000000 ../. PORT_CS_18
>       [00:07]        0x0 Cable USB4 Version
>       [08:08]        0x1 Bonding Enabled (BE)
>       [09:09]        0x1 TBT3-Compatible Mode (TCM)
>       [10:10]        0x1 CLx Protocol Support (CPS)
>       [11:11]        0x1 RS-FEC Enabled (Gen 2) (RE2)
>       [12:12]        0x0 RS-FEC Enabled (Gen 3) (RE3)
>       [13:13]        0x1 Router Detected (RD)
>       [20:20]        0x0 Cable Gen 3 Support (CG3)
>       [21:21]        0x0 Cable Gen 4 Support (CG4)
>       [22:22]        0x0 Cable Asymmetric Support (CSA)
>       [23:23]        0x0 Cable CLx Support (CSC)
> 
>     $ tbdump -d 1 -r 2 -vv -a 1 -N 1 PORT_CS_18
>     0x00d2 0x00902f01 0b00000000 10010000 00101111 00000001 ../. PORT_CS_18
>       [00:07]        0x1 Cable USB4 Version
>       [08:08]        0x1 Bonding Enabled (BE)
>       [09:09]        0x1 TBT3-Compatible Mode (TCM)
>       [10:10]        0x1 CLx Protocol Support (CPS)
>       [11:11]        0x1 RS-FEC Enabled (Gen 2) (RE2)
>       [12:12]        0x0 RS-FEC Enabled (Gen 3) (RE3)
>       [13:13]        0x1 Router Detected (RD)
>       [20:20]        0x1 Cable Gen 3 Support (CG3)
>       [21:21]        0x0 Cable Gen 4 Support (CG4)
>       [22:22]        0x0 Cable Asymmetric Support (CSA)
>       [23:23]        0x1 Cable CLx Support (CSC)
> 
> (The wake status bits and TIP, 16-19 and 24, are 0 on both sides.)
> 
> So both ends are in TBT3-compatible mode, but the host side reports
> Cable USB4 Version 0 and Cable Gen 3 Support 0, while the DEG2 side
> reports Cable USB4 Version 1 and Cable Gen 3 Support 1 for the same
> cable.

Agree it looks like the AMD host only gets the link up Gen2 for some
reason. It could be retimer/PD firmware issue. Anyways I'm adding the AMD
experts if they have any ideas.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2
  2026-11-09 15:50             ` Mika Westerberg
@ 2026-11-09 15:53               ` James R Taylor
  0 siblings, 0 replies; 9+ messages in thread
From: James R Taylor @ 2026-11-09 15:53 UTC (permalink / raw)
  To: Mika Westerberg; +Cc: linux-usb, Mario Limonciello, Sanath S, Basavaraj Natikar

Hi Mika,

On Mon, Nov 09, 2026 at 04:50:07PM +0100, Mika Westerberg wrote:
> That's the host side retimer.

Thanks, that clears it up.

> Agree it looks like the AMD host only gets the link up Gen2 for some
> reason. It could be retimer/PD firmware issue. Anyways I'm adding the AMD
> experts if they have any ideas.

Thank you very much for looking at this and for adding them.

For Mario, Sanath and Basavaraj, a short summary of the setup and
what has been measured so far (the full logs and tbdump output are
earlier in this thread):

  - Host: Minisforum UM890 Pro (AMD Phoenix), BIOS 1.06
    (11/10/2025), AGESA PhoenixPI-FP8-FP7 1.2.0.0a, kernel 7.2.15.
  - Device: Minisforum DEG2 (TB5 eGPU dock, NVM 62.42), StarTech
    TBLT5MM50CM240W 0.5 m TB5 cable.
  - Host-side retimer 1-0:2.1, vendor 0x7fea device 0x1032.
  - Link comes up as TBT, 10.0 Gb/s x2. Host PORT_CS_18 reports
    Cable USB4 Version 0 and CG3=0; the DEG2 side reports Version 1
    and CG3=1.
  - Sideband LINK_CONFIGURATION (0x0c): host 03 d3 03 (Gen3 bit not
    set), DEG2 03 f3 1b (Gen3 bit set). Writing the Gen3 bit on the
    host side from Linux fails with -EIO.
  - Same result with thunderbolt.host_reset=0 and =1, and on a clean
    boot without host_reset/pcie_aspm=off.
  - The firmware exposes no UCSI device (no USBC000/PNP0CA0 in ACPI),
    so /sys/class/typec is absent and I can't see from Linux which
    mode the PD controller chose.

I'm happy to collect any other register reads or logs that would
help.

Thanks again,
James


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-11-09 15:53 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-08 13:15 thunderbolt: AMD Phoenix USB4 host advertises Gen3 Support=0 in SB LINK_CONF with TB5 device, link stuck at Gen2 James Taylor
2026-11-09 11:18 ` Mika Westerberg
2026-11-09 11:25   ` James Taylor
2026-11-09 14:20     ` Mika Westerberg
2026-11-09 14:39       ` James R Taylor
2026-11-09 15:39         ` Mika Westerberg
2026-11-09 15:41           ` James R Taylor
2026-11-09 15:50             ` Mika Westerberg
2026-11-09 15:53               ` James R Taylor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox