Re: patch 8466489ef5ba48272ba4fa4ea9f8f403306de4c7 breaks Renesas USB3 controller functionality

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 15 February 2018 at 19:29, Marc Zyngier <marc.zyngier@xxxxxxx> wrote:
> [+ Ard, who helped me chasing the initial issue]
>
> On 15/02/18 06:43, Bockholdt Arne wrote:
>> Hi all,
>>
>> on our Intel Atom C2578 server with a SuperMicro A1SAi board and a
>> Renesas uPD720201 USB 3.0 host controller the controller has stopped
>> working since kernel 4.13.x. Before that kernel the dmesg messages from
>> XHCI were:
>>
>> dmesg-4.12.1-serverv4.log:xhci_hcd 0000:03:00.0: xHCI Host Controller
>> dmesg-4.12.1-serverv4.log:xhci_hcd 0000:03:00.0: new USB bus registered,
>> assigned bus number 2
>> dmesg-4.12.1-serverv4.log:xhci_hcd 0000:03:00.0: hcc params 0x014051cf
>> hci version 0x100 quirks 0x00000010
>> dmesg-4.12.1-serverv4.log:usb usb2: Manufacturer: Linux 4.12.1-serverv4
>> xhci-hcd
>> dmesg-4.12.1-serverv4.log:xhci_hcd 0000:03:00.0: xHCI Host Controller
>> dmesg-4.12.1-serverv4.log:xhci_hcd 0000:03:00.0: new USB bus registered,
>> assigned bus number 3
>> dmesg-4.12.1-serverv4.log:usb usb3: Manufacturer: Linux 4.12.1-serverv4
>> xhci-hcd
>>
>> After that the message look like that:
>>
>> dmesg-4.13.1-serverv4.log:xhci_hcd 0000:03:00.0: Resetting
>> dmesg-4.13.1-serverv4.log:xhci_hcd 0000:03:00.0: Refused to change power
>> state, currently in D3
>> dmesg-4.13.1-serverv4.log:xhci_hcd 0000:03:00.0: xHCI Host Controller
>> dmesg-4.13.1-serverv4.log:xhci_hcd 0000:03:00.0: new USB bus registered,
>> assigned bus number 2
>> dmesg-4.13.1-serverv4.log:xhci_hcd 0000:03:00.0: Host halt failed, -19
>> dmesg-4.13.1-serverv4.log:xhci_hcd 0000:03:00.0: can't setup: -19
>> dmesg-4.13.1-serverv4.log:xhci_hcd 0000:03:00.0: USB bus 2 deregistered
>> dmesg-4.13.1-serverv4.log:xhci_hcd 0000:03:00.0: init 0000:03:00.0 fail, -19
>>
>> I've tested it with 4.15.3 too, it's still the same. I've narrowed it
>> down to the following patch:
>>
>> commit 8466489ef5ba48272ba4fa4ea9f8f403306de4c7
>> Author: Marc Zyngier <marc.zyngier@xxxxxxx <mailto:marc.zyngier@xxxxxxx>>
>> Date:   Tue Aug 1 20:11:08 2017 -0500
>>
>>     xhci: Reset Renesas uPD72020x USB controller for 32-bit DMA issue
>>
>> Reverting the patch on top of 4.15.3 restores the USB3 functionality on
>> our server. Please let me know if there is anything I can do to fix the
>> problem. Thank you.
> Hi Arne,
>
> This looks pretty bad. I suspect that once reset, the firmware is lost.
> I'll try to write a patch dumping some information about it.
>
> Ard: Do you know if the Cello board has a SPI flash connected to the
> Renesas chip, from which it would load the firmware?
>

No. The system firmware includes a firmware image for the Renesas, and
uploads it via the PCIe config space before attaching the ordinary
xhci pci driver.

https://lists.01.org/pipermail/edk2-devel/2017-April/010013.html

This is actually rather annoying, because we cannot distribute the
firmware image itself, so rebuilding the firmware from source involves
finding your own copy.

> Another possibility is that power management kicks in, and that the
> endpoint is stuck there. Could also be firmware related, but not only.
> I'd welcome any idea on the subject, as I cannot reproduce this issue on
> the HW I have.
>
> It we cannot work out what exactly is causing this, we may have to
> default to not resetting the part and rely on a command-line option to
> do it... I can't say I'm a fan.
>

Given that the Cello implementation does not have non-volatile storage
either, and the fact that the firmware upload occurs only once, my
suspicion is that something else is going on here.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux