* Re: usb: typec: ucsi: duplicate-altmode filter keeps invalid DP partner VDO on Dell XPS 14 DA14260 [not found] <PR3PR10MB3898251C0136EEFE9DEC84FAA5902@PR3PR10MB3898.EURPRD10.PROD.OUTLOOK.COM> @ 2026-10-26 11:38 ` Heikki Krogerus 2026-10-26 12:21 ` Ville Kivelä 0 siblings, 1 reply; 2+ messages in thread From: Heikki Krogerus @ 2026-10-26 11:38 UTC (permalink / raw) To: Ville Kivelä Cc: linux-usb@vger.kernel.org, gregkh@linuxfoundation.org, acelan.kao@canonical.com Hi Ville, On Sun, Oct 11, 2026 at 07:34:59PM +0000, Ville Kivelä wrote: > Hi, > > The duplicate partner altmode filter added in 67c92c6419ea ("usb: typec: > ucsi: Detect and skip duplicate altmodes from buggy firmware") keeps the > invalid copy of the DisplayPort partner altmode on this machine and drops > the valid one. The DP altmode driver then cannot bind, and the monitor's > USB hub never works. This is why from now on all quirks for this driver are going to be isolated with either DMI match or something similar. > Hardware: > Dell XPS 14 DA14260 (Intel Panther Lake), BIOS 1.8.2 (2026-05-22) > UCSI over ACPI: \_SB_.UBTC (USBC000:00) > Partner: Dell U2720Q monitor (DP alt mode + USB hub + PD source) > Kernel: 7.2.5 (Arch-based distro kernel "7.2.5-3-omarchy") > > The firmware returns the partner's DP altmode (SVID 0xff01) twice on every > attach: > > ucsi_acpi USBC000:00: con3: Firmware bug: duplicate partner altmode SVID 0xff01 at offset 1, ignoring but please contact the BIOS vendor to fix this issue. > ucsi_acpi USBC000:00: con3: VDO mismatch: 0xff01a043 vs 0x00140045 > > The entry at offset 0 is invalid (0xff01a043: SVID in the upper half, > identical whatever the monitor is configured to). The entry at offset 1 > is the real DP capabilities VDO, and it changes with the monitor's > "USB-C Prioritization" setting, as expected: > > High Resolution: 0x00140045 (UFP_D, receptacle, pin assignments C/E) > High Data Speed: 0x001c0045 (UFP_D, receptacle, pin assignments C/D/E) > > The port exposes a single DP altmode (port2.1, svid ff01, vdo 0x001c1c46), > so the per-SVID cap is 1. The filter keeps the first partner entry and > registers port2-partner.0 with vdo 0xff01a043: > > $ cat /sys/class/typec/port2-partner/port2-partner.0/{svid,vdo,active} > ff01 > 0xff01a043 > yes > > typec_displayport does not bind to it (no displayport/ directory under the > partner altmode), so the OS cannot choose a pin assignment. > > Observed result: > - High Resolution: video works, but the monitor's hub never enumerates, > not even at USB 2.0. > - High Data Speed: the hub (0451:8440) enumerates at SuperSpeed on the > TCSS xHCI and disconnects within ~1 s, as DP mode is entered. USB 2.0 > enumeration starts and never completes. There is no video. > > usb 2-3: new SuperSpeed USB device number 2 using xhci_hcd > usb 2-3: New USB device found, idVendor=0451, idProduct=8440, bcdDevice= 1.10 > hub 2-3:1.0: USB hub found > hub 2-3:1.0: 4 ports detected > usb 3-4: new high-speed USB device number 6 using xhci_hcd > usb 2-3: USB disconnect, device number 2 > ucsi_acpi USBC000:00: con3: Firmware bug: duplicate partner altmode SVID 0xff01 at offset 1, ignoring ... > ucsi_acpi USBC000:00: con3: VDO mismatch: 0xff01a043 vs 0x001c0045 > > The same monitor and cable work fully (video and hub) on a MacBook. > Reproduced on two different USB-C ports, after a full power drain, and > with Dell's "Video/Power only on Type-C ports" BIOS option disabled. > > The root cause is the firmware, and it has been reported to Dell. However, > when duplicates disagree, keeping the first entry is arbitrary. Would it > make sense to prefer an entry that passes basic validation? For SVID 0xff01 > that could mean a non-zero pin assignment field, no reserved bits set, and > the upper 16 bits not equal to the SVID. Alternatively, the driver could > prefer the last entry. I'm happy to test patches. I already send a patch where I disable support for the alternate mode reporting for all Dell XPS systems, but it looks like Greg missed that patch - I'll resend it: https://lore.kernel.org/linux-usb/20260911132850.1580669-1-heikki.krogerus@linux.intel.com/ It does not make sense to attempt to add more and more quirks to this driver that fix firmware problems on these systems. Dell really has to fix the PPM. > Also seen once at boot on the same machine (cleared by reloading ucsi_acpi): > > ucsi_acpi USBC000:00: con1: failed to register alt modes > ucsi_acpi USBC000:00: error -ETIMEDOUT: PPM init failed That should get fixed with the above patch as well. Thanks, -- heikki ^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: usb: typec: ucsi: duplicate-altmode filter keeps invalid DP partner VDO on Dell XPS 14 DA14260 2026-10-26 11:38 ` usb: typec: ucsi: duplicate-altmode filter keeps invalid DP partner VDO on Dell XPS 14 DA14260 Heikki Krogerus @ 2026-10-26 12:21 ` Ville Kivelä 0 siblings, 0 replies; 2+ messages in thread From: Ville Kivelä @ 2026-10-26 12:21 UTC (permalink / raw) To: Heikki Krogerus Cc: Ville Kivelä, linux-usb@vger.kernel.org, gregkh@linuxfoundation.org, acelan.kao@canonical.com Hi Heikki, Thanks for the quick reply, and for resending the patch. Understood that this needs to be fixed by Dell. For the DMI match: this machine reports sys_vendor Dell Inc. and product_name XPS 14 DA14260, so it is covered by the quirk. Thanks, Ville On Mon, Oct 26, 2026 at 1:38 PM Heikki Krogerus <heikki.krogerus@linux.intel.com> wrote: > > Hi Ville, > > On Sun, Oct 11, 2026 at 07:34:59PM +0000, Ville Kivelä wrote: > > Hi, > > > > The duplicate partner altmode filter added in 67c92c6419ea ("usb: typec: > > ucsi: Detect and skip duplicate altmodes from buggy firmware") keeps the > > invalid copy of the DisplayPort partner altmode on this machine and drops > > the valid one. The DP altmode driver then cannot bind, and the monitor's > > USB hub never works. > > This is why from now on all quirks for this driver are going to be > isolated with either DMI match or something similar. > > > Hardware: > > Dell XPS 14 DA14260 (Intel Panther Lake), BIOS 1.8.2 (2026-05-22) > > UCSI over ACPI: \_SB_.UBTC (USBC000:00) > > Partner: Dell U2720Q monitor (DP alt mode + USB hub + PD source) > > Kernel: 7.2.5 (Arch-based distro kernel "7.2.5-3-omarchy") > > > > The firmware returns the partner's DP altmode (SVID 0xff01) twice on every > > attach: > > > > ucsi_acpi USBC000:00: con3: Firmware bug: duplicate partner altmode SVID 0xff01 at offset 1, ignoring but please contact the BIOS vendor to fix this issue. > > ucsi_acpi USBC000:00: con3: VDO mismatch: 0xff01a043 vs 0x00140045 > > > > The entry at offset 0 is invalid (0xff01a043: SVID in the upper half, > > identical whatever the monitor is configured to). The entry at offset 1 > > is the real DP capabilities VDO, and it changes with the monitor's > > "USB-C Prioritization" setting, as expected: > > > > High Resolution: 0x00140045 (UFP_D, receptacle, pin assignments C/E) > > High Data Speed: 0x001c0045 (UFP_D, receptacle, pin assignments C/D/E) > > > > The port exposes a single DP altmode (port2.1, svid ff01, vdo 0x001c1c46), > > so the per-SVID cap is 1. The filter keeps the first partner entry and > > registers port2-partner.0 with vdo 0xff01a043: > > > > $ cat /sys/class/typec/port2-partner/port2-partner.0/{svid,vdo,active} > > ff01 > > 0xff01a043 > > yes > > > > typec_displayport does not bind to it (no displayport/ directory under the > > partner altmode), so the OS cannot choose a pin assignment. > > > > Observed result: > > - High Resolution: video works, but the monitor's hub never enumerates, > > not even at USB 2.0. > > - High Data Speed: the hub (0451:8440) enumerates at SuperSpeed on the > > TCSS xHCI and disconnects within ~1 s, as DP mode is entered. USB 2.0 > > enumeration starts and never completes. There is no video. > > > > usb 2-3: new SuperSpeed USB device number 2 using xhci_hcd > > usb 2-3: New USB device found, idVendor=0451, idProduct=8440, bcdDevice= 1.10 > > hub 2-3:1.0: USB hub found > > hub 2-3:1.0: 4 ports detected > > usb 3-4: new high-speed USB device number 6 using xhci_hcd > > usb 2-3: USB disconnect, device number 2 > > ucsi_acpi USBC000:00: con3: Firmware bug: duplicate partner altmode SVID 0xff01 at offset 1, ignoring ... > > ucsi_acpi USBC000:00: con3: VDO mismatch: 0xff01a043 vs 0x001c0045 > > > > The same monitor and cable work fully (video and hub) on a MacBook. > > Reproduced on two different USB-C ports, after a full power drain, and > > with Dell's "Video/Power only on Type-C ports" BIOS option disabled. > > > > The root cause is the firmware, and it has been reported to Dell. However, > > when duplicates disagree, keeping the first entry is arbitrary. Would it > > make sense to prefer an entry that passes basic validation? For SVID 0xff01 > > that could mean a non-zero pin assignment field, no reserved bits set, and > > the upper 16 bits not equal to the SVID. Alternatively, the driver could > > prefer the last entry. I'm happy to test patches. > > I already send a patch where I disable support for the alternate mode > reporting for all Dell XPS systems, but it looks like Greg missed that > patch - I'll resend it: > https://lore.kernel.org/linux-usb/20260911132850.1580669-1-heikki.krogerus@linux.intel.com/ > > It does not make sense to attempt to add more and more quirks to this > driver that fix firmware problems on these systems. Dell really has to > fix the PPM. > > > Also seen once at boot on the same machine (cleared by reloading ucsi_acpi): > > > > ucsi_acpi USBC000:00: con1: failed to register alt modes > > ucsi_acpi USBC000:00: error -ETIMEDOUT: PPM init failed > > That should get fixed with the above patch as well. > > Thanks, > > -- > heikki ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-26 12:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <PR3PR10MB3898251C0136EEFE9DEC84FAA5902@PR3PR10MB3898.EURPRD10.PROD.OUTLOOK.COM>
2026-10-26 11:38 ` usb: typec: ucsi: duplicate-altmode filter keeps invalid DP partner VDO on Dell XPS 14 DA14260 Heikki Krogerus
2026-10-26 12:21 ` Ville Kivelä
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox