linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
@ 2016-10-21 22:25 Babu Moger
  2016-10-24  9:57 ` Mathias Nyman
  0 siblings, 1 reply; 6+ messages in thread
From: Babu Moger @ 2016-10-21 22:25 UTC (permalink / raw)
  To: mathias.nyman, gregkh; +Cc: linux-usb, linux-kernel, babu.moger

Never seen XHCI auto handoff working on TI and RENESAS cards.
Eventually, we force handoff. This code forces the handoff
unconditionally. It saves 5 seconds boot time for each card.

Signed-off-by: Babu Moger <babu.moger@oracle.com>
---
v2: 
 Made changes per comments from Greg KH.
 Extra space removal in assignment
 Added both vendor and device id checks.
 Resending the patch. Original discussion here.
 https://marc.info/?t=145221162000007&r=1&w=4

 drivers/usb/host/pci-quirks.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index 35af362..31c9502 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -996,6 +996,14 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
 	}
 	val = readl(base + ext_cap_offset);
 
+	/* Auto handoff never worked for these devices. Force it and continue */
+	if ((pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) ||
+			(pdev->vendor == PCI_VENDOR_ID_RENESAS
+			 && pdev->device == 0x0014)) {
+		val = (val | XHCI_HC_OS_OWNED) & ~XHCI_HC_BIOS_OWNED;
+		writel(val, base + ext_cap_offset);
+	}
+
 	/* If the BIOS owns the HC, signal that the OS wants it, and wait */
 	if (val & XHCI_HC_BIOS_OWNED) {
 		writel(val | XHCI_HC_OS_OWNED, base + ext_cap_offset);
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
  2016-10-21 22:25 [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers Babu Moger
@ 2016-10-24  9:57 ` Mathias Nyman
  2016-10-24 10:54   ` Yoshihiro Shimoda
  0 siblings, 1 reply; 6+ messages in thread
From: Mathias Nyman @ 2016-10-24  9:57 UTC (permalink / raw)
  To: Babu Moger, mathias.nyman, gregkh
  Cc: linux-usb, linux-kernel, Yoshihiro Shimoda

On 22.10.2016 01:25, Babu Moger wrote:
> Never seen XHCI auto handoff working on TI and RENESAS cards.
> Eventually, we force handoff. This code forces the handoff
> unconditionally. It saves 5 seconds boot time for each card.
>
> Signed-off-by: Babu Moger <babu.moger@oracle.com>

Do the Renesas and TI controllers still advertise the extended capability
for the handoff? (XHCI_EXT_CAPS_LEGACY)

Is this some known issue with these vendors controllers? Is there some documentation
about this, errata or anything?

Adding Yoshihiro Shimoda, he might know about the Renesas controller.

-Mathias

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
  2016-10-24  9:57 ` Mathias Nyman
@ 2016-10-24 10:54   ` Yoshihiro Shimoda
  2016-10-24 14:52     ` Babu Moger
  0 siblings, 1 reply; 6+ messages in thread
From: Yoshihiro Shimoda @ 2016-10-24 10:54 UTC (permalink / raw)
  To: Mathias Nyman, Babu Moger, mathias.nyman, gregkh; +Cc: linux-usb, linux-kernel

Hi,

> From: Mathias Nyman
> Sent: Monday, October 24, 2016 6:58 PM
> 
> On 22.10.2016 01:25, Babu Moger wrote:
> > Never seen XHCI auto handoff working on TI and RENESAS cards.
> > Eventually, we force handoff. This code forces the handoff
> > unconditionally. It saves 5 seconds boot time for each card.
> >
> > Signed-off-by: Babu Moger <babu.moger@oracle.com>
> 
> Do the Renesas and TI controllers still advertise the extended capability
> for the handoff? (XHCI_EXT_CAPS_LEGACY)
> 
> Is this some known issue with these vendors controllers? Is there some documentation
> about this, errata or anything?
> 
> Adding Yoshihiro Shimoda, he might know about the Renesas controller.

Thank you for adding me on this email.
However, unfortunately I don't know the detail about Renesas PCIe xHCI controllers.
(I know the xHCI controller of R-Car SoCs for now.)

Best regards,
Yoshihiro Shimoda

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
  2016-10-24 10:54   ` Yoshihiro Shimoda
@ 2016-10-24 14:52     ` Babu Moger
  2016-10-25  6:51       ` Mathias Nyman
  0 siblings, 1 reply; 6+ messages in thread
From: Babu Moger @ 2016-10-24 14:52 UTC (permalink / raw)
  To: Yoshihiro Shimoda, Mathias Nyman, mathias.nyman, gregkh
  Cc: linux-usb, linux-kernel


On 10/24/2016 5:54 AM, Yoshihiro Shimoda wrote:
> Hi,
>
>> From: Mathias Nyman
>> Sent: Monday, October 24, 2016 6:58 PM
>>
>> On 22.10.2016 01:25, Babu Moger wrote:
>>> Never seen XHCI auto handoff working on TI and RENESAS cards.
>>> Eventually, we force handoff. This code forces the handoff
>>> unconditionally. It saves 5 seconds boot time for each card.
>>>
>>> Signed-off-by: Babu Moger <babu.moger@oracle.com>
>> Do the Renesas and TI controllers still advertise the extended capability
>> for the handoff? (XHCI_EXT_CAPS_LEGACY)
I don't see this capability.  Here is lspci output.

# lspci -s 0009:01:00.0 -vvv
0009:01:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 
3.0 xHCI Host Controller (rev 02) (prog-if 30 [XHCI])
         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 0000000e
         Region 0: Memory at 100000000 (64-bit, non-prefetchable) [size=64K]
         Region 2: Memory at 100010000 (64-bit, non-prefetchable) [size=8K]
         Region 4: [virtual] Memory at fffdfdc000000000 (32-bit, 
non-prefetchable)
         Region 5: [virtual] Memory at fffdfdc000000000 (32-bit, 
non-prefetchable)
         [virtual] Expansion ROM at fffdfdc000000000 [disabled]
         Capabilities: [40] Power Management version 3
                 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA 
PME(D0+,D1+,D2+,D3hot+,D3cold-)
                 Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
         Capabilities: [48] MSI: Enable- Count=1/8 Maskable- 64bit+
                 Address: 0000000000000000  Data: 0000
         Capabilities: [70] Express (v2) Endpoint, MSI 00
                 DevCap: MaxPayload 1024 bytes, PhantFunc 0, Latency L0s 
unlimited, L1 unlimited
                         ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                 DevCtl: Report errors: Correctable- Non-Fatal- Fatal- 
Unsupported-
                         RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
                         MaxPayload 256 bytes, MaxReadReq 512 bytes
                 DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ 
AuxPwr- TransPend-
                 LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, 
Latency L0 <2us, L1 <64us
                         ClockPM+ Surprise- LLActRep- BwNot-
                 LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- 
CommClk-
                         ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                 LnkSta: Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ 
DLActive- BWMgmt- ABWMgmt-
                 DevCap2: Completion Timeout: Not Supported, 
TimeoutDis+, LTR-, OBFF Not Supported
                 DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, 
LTR-, OBFF Disabled
                 LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- 
SpeedDis-
                          Transmit Margin: Normal Operating Range, 
EnterModifiedCompliance- ComplianceSOS-
                          Compliance De-emphasis: -6dB
                 LnkSta2: Current De-emphasis Level: -3.5dB, 
EqualizationComplete-, EqualizationPhase1-
                          EqualizationPhase2-, EqualizationPhase3-, 
LinkEqualizationRequest-
         Capabilities: [c0] MSI-X: Enable+ Count=8 Masked-
                 Vector table: BAR=2 offset=00000000
                 PBA: BAR=2 offset=00001000
         Capabilities: [100 v2] Advanced Error Reporting
                 UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- 
UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                 UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- 
UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                 UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- 
UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                 CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- 
NonFatalErr+
                 CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- 
NonFatalErr+
                 AERCap: First Error Pointer: 00, GenCap+ CGenEn- 
ChkCap+ ChkEn-
         Capabilities: [150 v1] Device Serial Number 08-00-28-00-00-20-00-00
         Kernel driver in use: xhci_hcd

>>
>> Is this some known issue with these vendors controllers? Is there some documentation
>> about this, errata or anything?
>>
>> Adding Yoshihiro Shimoda, he might know about the Renesas controller.
> Thank you for adding me on this email.
> However, unfortunately I don't know the detail about Renesas PCIe xHCI controllers.
> (I know the xHCI controller of R-Car SoCs for now.)
>
> Best regards,
> Yoshihiro Shimoda
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
  2016-10-24 14:52     ` Babu Moger
@ 2016-10-25  6:51       ` Mathias Nyman
  2016-10-25 13:10         ` Babu Moger
  0 siblings, 1 reply; 6+ messages in thread
From: Mathias Nyman @ 2016-10-25  6:51 UTC (permalink / raw)
  To: Babu Moger, Mathias Nyman, gregkh
  Cc: Yoshihiro Shimoda, linux-usb, linux-kernel

On 24.10.2016 17:52, Babu Moger wrote:
>
> On 10/24/2016 5:54 AM, Yoshihiro Shimoda wrote:
>> Hi,
>>
>>> From: Mathias Nyman
>>> Sent: Monday, October 24, 2016 6:58 PM
>>>
>>> On 22.10.2016 01:25, Babu Moger wrote:
>>>> Never seen XHCI auto handoff working on TI and RENESAS cards.
>>>> Eventually, we force handoff. This code forces the handoff
>>>> unconditionally. It saves 5 seconds boot time for each card.
>>>>
>>>> Signed-off-by: Babu Moger <babu.moger@oracle.com>
>>> Do the Renesas and TI controllers still advertise the extended capability
>>> for the handoff? (XHCI_EXT_CAPS_LEGACY)
> I don't see this capability.  Here is lspci output.
>

It's not a PCI capability, it's a xhci Extended Capability.

If the capability is supported, and handoff fail, then quirk_usb_handoff_xhci() will print
"xHCI BIOS handoff failed (BIOS bug ?)"

Further on in the same function we wait for the "controller not ready" bit in the status
register to clear. If that times it prints out:

"xHCI HW not ready after 5 sec (HC bug?) status"

Do you see any of these two messages in the log?

-Mathias

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
  2016-10-25  6:51       ` Mathias Nyman
@ 2016-10-25 13:10         ` Babu Moger
  0 siblings, 0 replies; 6+ messages in thread
From: Babu Moger @ 2016-10-25 13:10 UTC (permalink / raw)
  To: Mathias Nyman, Mathias Nyman, gregkh
  Cc: Yoshihiro Shimoda, linux-usb, linux-kernel


On 10/25/2016 1:51 AM, Mathias Nyman wrote:
> On 24.10.2016 17:52, Babu Moger wrote:
>>
>> On 10/24/2016 5:54 AM, Yoshihiro Shimoda wrote:
>>> Hi,
>>>
>>>> From: Mathias Nyman
>>>> Sent: Monday, October 24, 2016 6:58 PM
>>>>
>>>> On 22.10.2016 01:25, Babu Moger wrote:
>>>>> Never seen XHCI auto handoff working on TI and RENESAS cards.
>>>>> Eventually, we force handoff. This code forces the handoff
>>>>> unconditionally. It saves 5 seconds boot time for each card.
>>>>>
>>>>> Signed-off-by: Babu Moger <babu.moger@oracle.com>
>>>> Do the Renesas and TI controllers still advertise the extended 
>>>> capability
>>>> for the handoff? (XHCI_EXT_CAPS_LEGACY)
>> I don't see this capability.  Here is lspci output.
>>
>
> It's not a PCI capability, it's a xhci Extended Capability.
>
> If the capability is supported, and handoff fail, then 
> quirk_usb_handoff_xhci() will print
> "xHCI BIOS handoff failed (BIOS bug ?)"
>

   Yes. I see these messages. After this patch I don't see these messages.

> Further on in the same function we wait for the "controller not ready" 
> bit in the status
> register to clear. If that times it prints out:
>
> "xHCI HW not ready after 5 sec (HC bug?) status"

       No. I didn't see this messages.

>
> Do you see any of these two messages in the log?
>
> -Mathias

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-10-25 13:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-21 22:25 [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers Babu Moger
2016-10-24  9:57 ` Mathias Nyman
2016-10-24 10:54   ` Yoshihiro Shimoda
2016-10-24 14:52     ` Babu Moger
2016-10-25  6:51       ` Mathias Nyman
2016-10-25 13:10         ` Babu Moger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).