[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230215075855.46204-1-acelan.kao@canonical.com>
Date: Wed, 15 Feb 2023 15:58:55 +0800
From: AceLan Kao <acelan.kao@...onical.com>
To: Mathias Nyman <mathias.nyman@...el.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH] usb: xhci: Workaround for runpm issue on AMD xHC
From: "Chia-Lin Kao (AceLan)" <acelan.kao@...onical.com>
When the xHC host is runtime suspended, the device connects to it will be
disconnected while trying to use it.
The quirk in commit 2a632815683d ("usb: xhci: Workaround for S3 issue on
AMD SNPS 3.0 xHC") also works for this issue, so added its ID to the
quirk, too.
05:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:1505] (prog-if 30 [XHCI])
Subsystem: Dell Device [1028:0c3f]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 60
IOMMU group: 21
Region 0: Memory at c0000000 (64-bit, non-prefetchable) [size=1M]
Capabilities: <access denied>
Kernel driver in use: xhci_hcd
Kernel modules: xhci_pci
[ 20.769275] xhci_hcd 0000:05:00.0: xHCI host not responding to stop endpoint command
[ 20.771429] xhci_hcd 0000:05:00.0: xHCI host controller not responding, assume dead
[ 20.771444] xhci_hcd 0000:05:00.0: HC died; cleaning up
[ 20.771733] usb 5-1: USB disconnect, device number 2
Cc: stable@...r.kernel.org #v4.19+
Signed-off-by: Chia-Lin Kao (AceLan) <acelan.kao@...onical.com>
---
drivers/usb/host/xhci-pci.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index fb988e4ea924..b8f6843a8cd1 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -177,7 +177,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
(pdev->device == 0x15e0 || pdev->device == 0x15e1))
xhci->quirks |= XHCI_SNPS_BROKEN_SUSPEND;
- if (pdev->vendor == PCI_VENDOR_ID_AMD && pdev->device == 0x15e5) {
+ if (pdev->vendor == PCI_VENDOR_ID_AMD &&
+ (pdev->device == 0x15e5 ||
+ pdev->device == 0x1505)) {
xhci->quirks |= XHCI_DISABLE_SPARSE;
xhci->quirks |= XHCI_RESET_ON_RESUME;
}
--
2.34.1
Powered by blists - more mailing lists