diff mbox series

[v2,1/2] xhci-pci: Set runtime PM as default policy on all xHC 1.2 or later devices

Message ID 20221006211529.1858-2-mario.limonciello@amd.com (mailing list archive)
State New, archived
Headers show
Series Enable runtime PM more broadly | expand

Commit Message

Mario Limonciello Oct. 6, 2022, 9:15 p.m. UTC
For optimal power consumption of USB4 routers the XHCI PCIe endpoint
used for tunneling must be in D3.  Historically this is accomplished
by a long list of PCIe IDs that correspond to these endpoints because
the xhci_hcd driver will not default to allowing runtime PM for all
devices.

As both AMD and Intel have released new products with new XHCI controllers
this list continues to grow. In reviewing the XHCI specification v1.2 on
page 607 there is already a requirement that the PCI power management
states D3hot and D3cold must be supported.

In the quirk list, use this to indicate that runtime PM should be allowed
on XHCI controllers.

Suggested-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/usb/host/xhci-pci.c | 18 +-----------------
 1 file changed, 1 insertion(+), 17 deletions(-)

Comments

Mika Westerberg Oct. 7, 2022, 9:55 a.m. UTC | #1
On Thu, Oct 06, 2022 at 04:15:28PM -0500, Mario Limonciello wrote:
> -	if (pdev->vendor == PCI_VENDOR_ID_AMD &&
> -	    (pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_1 ||
> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_2 ||
> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_3 ||
> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_4 ||
> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_5 ||
> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_6 ||
> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_7 ||
> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_8))

Can you add a comment here explaining why this is OK? I think it is
easier that way to find out why this is here in the future instead of
going through the git blame history.

> +	if (xhci->hci_version >= 0x102)
>  		xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;
Mario Limonciello Oct. 7, 2022, 4:42 p.m. UTC | #2
[Public]



> -----Original Message-----
> From: Mika Westerberg <mika.westerberg@linux.intel.com>
> Sent: Friday, October 7, 2022 04:55
> To: Limonciello, Mario <Mario.Limonciello@amd.com>
> Cc: Mathias Nyman <mathias.nyman@intel.com>; Mehta, Sanju
> <Sanju.Mehta@amd.com>; Mathias Nyman
> <mathias.nyman@linux.intel.com>; Greg Kroah-Hartman
> <gregkh@linuxfoundation.org>; linux-usb@vger.kernel.org; linux-
> kernel@vger.kernel.org
> Subject: Re: [PATCH v2 1/2] xhci-pci: Set runtime PM as default policy on all
> xHC 1.2 or later devices
> 
> On Thu, Oct 06, 2022 at 04:15:28PM -0500, Mario Limonciello wrote:
> > -	if (pdev->vendor == PCI_VENDOR_ID_AMD &&
> > -	    (pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_1 ||
> > -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_2 ||
> > -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_3 ||
> > -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_4 ||
> > -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_5 ||
> > -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_6 ||
> > -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_7 ||
> > -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_8))
> 
> Can you add a comment here explaining why this is OK? I think it is
> easier that way to find out why this is here in the future instead of
> going through the git blame history.

Sure, no problem.

I'll hold off sending a v3 though until you and Mathias can double check
everything in patch 2/2 is OK to take out and agree with that secondary logic
change.

> 
> > +	if (xhci->hci_version >= 0x102)
> >  		xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;
Mathias Nyman Oct. 10, 2022, 1:45 p.m. UTC | #3
On 7.10.2022 19.42, Limonciello, Mario wrote:
> [Public]
> 
> 
> 
>> -----Original Message-----
>> From: Mika Westerberg <mika.westerberg@linux.intel.com>
>> Sent: Friday, October 7, 2022 04:55
>> To: Limonciello, Mario <Mario.Limonciello@amd.com>
>> Cc: Mathias Nyman <mathias.nyman@intel.com>; Mehta, Sanju
>> <Sanju.Mehta@amd.com>; Mathias Nyman
>> <mathias.nyman@linux.intel.com>; Greg Kroah-Hartman
>> <gregkh@linuxfoundation.org>; linux-usb@vger.kernel.org; linux-
>> kernel@vger.kernel.org
>> Subject: Re: [PATCH v2 1/2] xhci-pci: Set runtime PM as default policy on all
>> xHC 1.2 or later devices
>>
>> On Thu, Oct 06, 2022 at 04:15:28PM -0500, Mario Limonciello wrote:
>>> -	if (pdev->vendor == PCI_VENDOR_ID_AMD &&
>>> -	    (pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_1 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_2 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_3 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_4 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_5 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_6 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_7 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_8))
>>
>> Can you add a comment here explaining why this is OK? I think it is
>> easier that way to find out why this is here in the future instead of
>> going through the git blame history.
> 
> Sure, no problem.
> 
> I'll hold off sending a v3 though until you and Mathias can double check
> everything in patch 2/2 is OK to take out and agree with that secondary logic
> change.

Lets only enable it for xHCI 1.2 and controllers for now.
Avoiding unnecessary regressions.

So on Intel side the ALDER_LAKE*, RAPTOR_LAKE and METEOR_LAKE can be removed.
I'll double check other Intel hosts before submitting it forward

Thanks
-Mathias
Mathias Nyman Oct. 10, 2022, 1:57 p.m. UTC | #4
On 7.10.2022 19.42, Limonciello, Mario wrote:
> [Public]
> 
> 
> 
>> -----Original Message-----
>> From: Mika Westerberg <mika.westerberg@linux.intel.com>
>> Sent: Friday, October 7, 2022 04:55
>> To: Limonciello, Mario <Mario.Limonciello@amd.com>
>> Cc: Mathias Nyman <mathias.nyman@intel.com>; Mehta, Sanju
>> <Sanju.Mehta@amd.com>; Mathias Nyman
>> <mathias.nyman@linux.intel.com>; Greg Kroah-Hartman
>> <gregkh@linuxfoundation.org>; linux-usb@vger.kernel.org; linux-
>> kernel@vger.kernel.org
>> Subject: Re: [PATCH v2 1/2] xhci-pci: Set runtime PM as default policy on all
>> xHC 1.2 or later devices
>>
>> On Thu, Oct 06, 2022 at 04:15:28PM -0500, Mario Limonciello wrote:
>>> -	if (pdev->vendor == PCI_VENDOR_ID_AMD &&
>>> -	    (pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_1 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_2 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_3 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_4 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_5 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_6 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_7 ||
>>> -	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_8))
>>
>> Can you add a comment here explaining why this is OK? I think it is
>> easier that way to find out why this is here in the future instead of
>> going through the git blame history.
> 
> Sure, no problem.
> 
> I'll hold off sending a v3 though until you and Mathias can double check
> everything in patch 2/2 is OK to take out and agree with that secondary logic
> change.
> 
>>
>>> +	if (xhci->hci_version >= 0x102)

Shouldn't this be ">= 0x120"

Thanks
Mathias
diff mbox series

Patch

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index dce6c0ec8d340..0d2d1cea94a4f 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -69,14 +69,6 @@ 
 #define PCI_DEVICE_ID_AMD_PROMONTORYA_3			0x43ba
 #define PCI_DEVICE_ID_AMD_PROMONTORYA_2			0x43bb
 #define PCI_DEVICE_ID_AMD_PROMONTORYA_1			0x43bc
-#define PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_1		0x161a
-#define PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_2		0x161b
-#define PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_3		0x161d
-#define PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_4		0x161e
-#define PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_5		0x15d6
-#define PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_6		0x15d7
-#define PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_7		0x161c
-#define PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_8		0x161f
 
 #define PCI_DEVICE_ID_ASMEDIA_1042_XHCI			0x1042
 #define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI		0x1142
@@ -336,15 +328,7 @@  static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
 	     pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_4))
 		xhci->quirks |= XHCI_NO_SOFT_RETRY;
 
-	if (pdev->vendor == PCI_VENDOR_ID_AMD &&
-	    (pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_1 ||
-	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_2 ||
-	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_3 ||
-	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_4 ||
-	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_5 ||
-	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_6 ||
-	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_7 ||
-	    pdev->device == PCI_DEVICE_ID_AMD_YELLOW_CARP_XHCI_8))
+	if (xhci->hci_version >= 0x102)
 		xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;
 
 	if (xhci->quirks & XHCI_RESET_ON_RESUME)