Patch "xhci: Limit USB2 port wake support for AMD Promontory hosts" has been added to the 4.11-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
xhci: Limit USB2 port wake support for AMD Promontory hosts
to the 4.11-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
xhci-limit-usb2-port-wake-support-for-amd-promontory-hosts.patch
and it can be found in the queue-4.11 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
dec08194ffeccfa1cf085906b53d301930eae18fMon Sep 17 00:00:00 2001
From: Jiahau Chang <[email protected]>
Date: Mon, 19 Jun 2017 13:08:30 +0300
Subject: xhci: Limit USB2 port wake support for AMD Promontory hosts
From: Jiahau Chang <[email protected]>
commit dec08194ffeccfa1cf085906b53d301930eae18f upstream.
For AMD Promontory xHCI host, although you can disable USB 2.0 ports in BIOS settings, those ports will be enabled anyway after you remove a device on that port and re-plug it in again. It's a known limitation of the chip. As a workaround we can clear the PORT_WAKE_BITS.
This will disable wake on connect, disconnect and overcurrent on AMD Promontory USB2 ports
--- drivers/usb/host/xhci-hub.c | 3 +++ drivers/usb/host/xhci-pci.c | 12 ++++++++++++ drivers/usb/host/xhci.h | 1 + 3 files changed, 16 insertions(+)
drivers/usb/host/xhci-hub.c +3 -0
@@ -1350,6 +1350,9 @@ int xhci_bus_suspend(struct usb_hcd *hcd t2 |=PORT_WKOC_E |PORT_WKCONN_E ; t2 &= ~PORT_WKDISC_E ; } +if ((xhci->quirks &XHCI_U2_DISABLE_WAKE ) && + (hcd->speed <HCD_USB3 )) + t2 &= ~PORT_WAKE_BITS ; }else t2 &= ~PORT_WAKE_BITS ;
drivers/usb/host/xhci-pci.c +12 -0
@@ -54,6 +54,11 @@#define PCI_DEVICE_ID_INTEL_APL_XHCI 0x5aa8#define PCI_DEVICE_ID_INTEL_DNV_XHCI 0x19d0 +#define PCI_DEVICE_ID_AMD_PROMONTORYA_4 0x43b9 +#define PCI_DEVICE_ID_AMD_PROMONTORYA_3 0x43ba +#define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb +#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc +static const char hcd_name[] ="xhci_hcd" ;static struct hc_driver __read_mostly xhci_pci_hc_driver;
@@ -135,6 +140,13 @@ static void xhci_pci_quirks(struct devicif (pdev->vendor ==PCI_VENDOR_ID_AMD ) xhci->quirks |=XHCI_TRUST_TX_LENGTH ; +if ((pdev->vendor ==PCI_VENDOR_ID_AMD ) && + ((pdev->device ==PCI_DEVICE_ID_AMD_PROMONTORYA_4 ) || + (pdev->device ==PCI_DEVICE_ID_AMD_PROMONTORYA_3 ) || + (pdev->device ==PCI_DEVICE_ID_AMD_PROMONTORYA_2 ) || + (pdev->device ==PCI_DEVICE_ID_AMD_PROMONTORYA_1 ))) + xhci->quirks |=XHCI_U2_DISABLE_WAKE ; +if (pdev->vendor ==PCI_VENDOR_ID_INTEL ) { xhci->quirks |=XHCI_LPM_SUPPORT ; xhci->quirks |=XHCI_INTEL_HOST ;
drivers/usb/host/xhci.h +1 -0
@@ -1819,6 +1819,7 @@ struct xhci_hcd {/* For controller with a broken Port Disable implementation */ #define XHCI_BROKEN_PORT_PED (1 << 25)#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26) +#define XHCI_U2_DISABLE_WAKE (1 << 27)unsigned int num_active_eps;unsigned int limit_active_eps;
Patches currently in stable-queue which might be from [email protected] are
queue-4.11/xhci-limit-usb2-port-wake-support-for-amd-promontory-hosts.patch