[U-Boot] [PATCH] arm64: allwinner: a64: Disable ehci1 and ohci1 for bananapi, nanopi
Andre Przywara
andre.przywara at arm.com
Tue Jul 3 15:22:44 UTC 2018
Hi,
On 02/07/18 22:57, Marek Vasut wrote:
> On 07/02/2018 11:40 PM, Tom Rini wrote:
>> On Mon, Jul 02, 2018 at 11:27:58PM +0200, Marek Vasut wrote:
>>> On 07/02/2018 10:53 PM, Jagan Teki wrote:
>>>> During usb shutdown or 'usb reset' all the necessary clocks
>>>> on the specific controller will disable. Usually this shutdown
>>>> happen during U-Boot proper handoff to Linux.
>>>
>>> No, 'usb reset' can be triggered by the user any time.
>>
>> Yes, and it's also triggered as part of the hand-off, which is the use
>> case in question.
>
> No, that's not true. The USB controllers are torn down when starting the
> OS, which is a different thing from usb reset, which brings them back up
> and rescans the bus too.
>
>>>> There is an issue in Allwinner A64, is during OHCI1 shutdown
>>>> the controller is unable to access the register space
>>>> so the Linux boot hangs at this place.
>>>
>>> This doesn't make any sense, Linux should enable the necessary clock
>>> before accessing any controller registers, unless there is a bug in Linux.
>>
>> Should but doesn't always? So yes, there's possibly / hopefully a bug
>> in the dts files.
>
> How did you reach that conclusion about the DTS files ? There is a bug
> in Linux, but it's likely in the driver which doesn't enable the clock
> before accessing the registers.
>
> But maybe the description here is completely confusing, since the output
> down below would indicate this hang is still in U-Boot.
Yes, it is. There is no bug in Linux.
U-Boot trips over its own feet when bringing down the USB controllers:
It shutdowns one part (EHCI or OHCI) on the register level, then turns
off the clocks and reset gates. But because they are shared between
controllers, this turns off the other controller as well. Then it tries
to bring down the the second part (OHCI or EHCI, respectively) on the
USB register level, which hangs, because the AHB clock is already off.
As this just happens quite late, it looks like U-Boot already said
goodbye, but it actually hasn't completely finished.
So Linux is completely fine and the bug is entirely in U-Boot.
My patch [1] tries to paper^Wsolve this in a different way, though it
isn't perfect either. I think there is a bit more to it than I assumed
yesterday, so I need to go back to the code later tonight to see what's
really going on (I suspect it's about OHCI 0 and 1 sharing a clock, not
about EHCI and OHCI).
Cheers,
Andre.
[1] https://lists.denx.de/pipermail/u-boot/2018-July/333533.html
>>>> This particular condition occur when we enable both the
>>>> controllers, so this patch will disable OHCI1 and EHCI1 for
>>>> bananapi-m64 and nanopi-a64 boards. It will re-enable the same
>>>> once the issue got fixed.
>>>>
>>>> Log:
>>>> => usb reset
>>>> resetting USB...
>>>>
>>>> PHY0: mask = 0x101, usb_clk_cfg = 0x30202
>>>> sunxi_musb_exit: ahb_gate0 = 0x33004540, reset0_cfg = 0x33004540
>>>> EHCI failed to shut down host controller.
>>>> ehci_usb_remove: ahb_gate0 = 0x32004540, reset0_cfg = 0x32004540
>>>> ohci_usb_remove: ahb_gate0 = 0x22004540, reset0_cfg = 0x22004540
>>>> ohci_usb_remove: mask = 0x10000, usb_clk_cfg = 0x20202
>>>>
>>>> PHY1: mask = 0x202, usb_clk_cfg = 0x0
>>>> ehci_usb_remove: ahb_gate0 = 0x20004540, reset0_cfg = 0x20004540
>>>
>>> Why is this usb reset so noisy ?
>>
>> ... I would assume additional debug messages.
>>
>>>> << hang here >>
>>>
>>> Please fix this properly, this patch is pure attempt to hide a bug.
>>> NAK from me.
>>
>> Well, the point of this patch as Jagan says is to hide the bug for the
>> release so that Linux can boot, which is an important case.
>
> But the above implies that Linux can boot and the hang happens while
> still in U-Boot due to some ordering bug between clock and register
> access in the .remove function of some driver (I guess). That is what
> needs to be debugged and fixed.
>
>> Jagan, can you bisect down to when this started happening? I assume
>> it's a recent'ish thing. Thanks!
>>
>
>
More information about the U-Boot
mailing list