From: Mark Kettenis Subject: Re: xhci(4): Fix broken CSS on AMD 17h/6xh To: Stefan Sperling Cc: moosetek4@gmail.com, tech@openbsd.org Date: Thu, 19 Jun 2025 15:55:31 +0200 > Date: Thu, 19 Jun 2025 15:36:49 +0200 > From: Stefan Sperling > > On Mon, Jun 16, 2025 at 07:37:10PM +0200, Mark Kettenis wrote: > > > From: James Hastings > > > Date: Mon, 16 Jun 2025 08:34:39 -0400 (EDT) > > > > > > The xHCI controller save state (CSS/CRS) is broken on AMD 17h/6xh > > > and hangs the system during resume. > > > > > > ok? > > > > ok kettenis@ > > 19h/x4 XHCI controllers in the Z13 also need the XHCI_NOCSS quirk. > > 99:0:3: AMD 19h/4xh xHCI > 0x0000: Vendor ID: 1022, Product ID: 161d > 99:0:4: AMD 19h/4xh xHCI > 0x0000: Vendor ID: 1022, Product ID: 161e > 100:0:0: AMD 19h/4xh xHCI > 0x0000: Vendor ID: 1022, Product ID: 161f > 100:0:3: AMD 19h/4xh xHCI > 0x0000: Vendor ID: 1022, Product ID: 15d6 > 100:0:4: AMD 19h/4xh xHCI > 0x0000: Vendor ID: 1022, Product ID: 15d7 > > During resume I was seeing lines such as: > > uhub0: device problem, disabling port 4 > uhub1: device problem, disabling port 2 > uhub1: device problem, disabling port 3 > uhub2: device problem, disabling port 1 > > After a couple of suspend/resume cycles all internal USB devices and > the two external USB ports become unusable. > > With the patch below, all USB devices reattach as expected, every time. > > acpi0: S3 unavailable, using S0 > video0 detached > uvideo0 detached > ugen0 detached > uhub0 detached > ugen1 detached > ugen2 detached > uhub1 detached > video1 detached > uvideo1 detached > uhub2 detached > uhub3 detached > uhub4 detached > uhub0 at usb0 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1 > uhub1 at usb1 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1 > uhub2 at usb2 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1 > uhub3 at usb3 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1 > uhub4 at usb4 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1 > wakeups: 1 2 > wakeup event: GPE 0x7 > uvideo0 at uhub0 port 4 configuration 1 interface 0 "SunplusIT Inc Integrated Camera" rev 2.01/50.12 addr 2 > video0 at uvideo0 > ugen0 at uhub0 port 4 configuration 1 "SunplusIT Inc Integrated Camera" rev 2.01/50.12 addr 2 > system resumed from sleep > battery status: high. external power status: not connected. estimated battery life 56% (275 minutes life time estimate) > ugen1 at uhub1 port 2 "USI product 0x9309" rev 1.10/0.01 addr 2 > ugen2 at uhub1 port 3 "Synaptics product 0x0123" rev 2.00/0.00 addr 3 > uvideo1 at uhub2 port 1 configuration 1 interface 0 "SunplusIT Inc Integrated IR Camera" rev 2.01/51.19 addr 2 > video1 at uvideo1 > uhidev0 at uhub4 port 1 configuration 1 interface 0 "Yubico YubiKey FIDO" rev 2.00/5.43 addr 2 > uhidev0: iclass 3/0 > fido0 at uhidev0: input=64, output=64, feature=0 > > > ok? Sure. I'm wondering at what point we decide that all AMD XHCI controllers have this issue... > Skip CSS on AMD 19h/4x > > M sys/dev/pci/xhci_pci.c | 6+ 1- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > commit - 9dd6953e617d51634dc519eca58a663916a949bd > commit + a4d1a2eb5ce8157070972265496ff5ffe1be3181 > blob - 28df38fd0a62f9c8fd2d8d540ab77f2d2b9c0078 > blob + 4610ee9bdc352a9defc2cedd226bb1da9cef23cf > --- sys/dev/pci/xhci_pci.c > +++ sys/dev/pci/xhci_pci.c > @@ -154,7 +154,12 @@ xhci_pci_attach(struct device *parent, struct device * > case PCI_VENDOR_AMD: > if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_17_1X_XHCI_1 || > PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_17_1X_XHCI_2 || > - PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_17_6X_XHCI) > + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_17_6X_XHCI || > + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_19_4X_XHCI_1 || > + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_19_4X_XHCI_2 || > + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_19_4X_XHCI_3 || > + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_19_4X_XHCI_4 || > + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AMD_19_4X_XHCI_5) > psc->sc.sc_flags |= XHCI_NOCSS; > break; > } > >