Bug in split transactions on Raspberry Pi

Doug Anderson dianders at chromium.org
Tue Jan 26 10:27:34 PST 2016


Hi,

On Tue, Jan 26, 2016 at 10:26 AM, Doug Anderson <dianders at chromium.org> wrote:
> Hi,
>
> On Tue, Jan 26, 2016 at 10:22 AM, Alan Stern <stern at rowland.harvard.edu> wrote:
>> On Tue, 26 Jan 2016, Noralf Trønnes wrote:
>>
>>> > I installed the rpi-4.4.y branch from the
>>> > https://github.com/raspberrypi/linux repository.  As is, it generated a
>>> > working kernel.  Then I tried editing the config; I removed
>>> > CONFIG_USB_DWCOTG and added CONFIG_USB_DWC2 and CONFIG_USB_DWC2_HOST.
>>> > However, when I booted the resulting kernel it didn't seem to detect
>>> > the host controller at all.  No USB devices were probed, which meant no
>>> > working ethernet or keyboard.
>>> >
>>> > Then I tried enabling both drivers in the config.  That worked, but the
>>> > controller was bound to dwc_otg, not to dwc2.
>>> >
>>> > I get the feeling that some magic DT incantation is missing, although I
>>> > have no idea what.  The base bcm2709-rpi-2-b.dtb wasn't affected by the
>>> > config change, nor was the overlays/dwc2-overlay.dtb file.
>>> >
>>> > Any suggestions?
>>>
>>> Have you enabled the dwc2 overlay?
>>> Add to /boot/config.txt:
>>> dtoverlay=dwc2
>>
>> That did it!  Thank you.
>>
>> The dwc2 driver seems to do a better job than dwc_otg -- at least, it
>> sends Clear-TT-Buffer requests after each failure.
>>
>> Doug, do you have a list of patches you'd like me to try on top of the
>> rpi-4.4.y branch?
>
> Nice!  You can give this series a try.  It aims to improve SPLIT
> scheduling quite a bit:
>
> 8091691 New          [v5,01/21] usb: dwc2: rockchip: Make the
> max_transfer_size automatic
> 8091701 New          [v5,02/21] usb: dwc2: host: Get aligned DMA in a
> more supported way
> 8092101 New          [v5,03/21] usb: dwc2: host: Set host_rx_fifo_size
> to 528 for rk3066
> 8092091 New          [v5,04/21] usb: dwc2: host: Set
> host_perio_tx_fifo_size to 304 for rk3066
> 8092081 New          [v5,05/21] usb: dwc2: host: Avoid use of chan->qh
> after qh freed
> 8092071 New          [v5,06/21] usb: dwc2: host: Always add to the
> tail of queues
> 8092061 New          [v5,07/21] usb: dwc2: hcd: fix split transfer
> schedule sequence
> 8091761 New          [v5,08/21] usb: dwc2: host: Add scheduler tracing
> 8092051 New          [v5,09/21] usb: dwc2: host: Add a delay before
> releasing periodic bandwidth
> 8092041 New          [v5,10/21] usb: dwc2: host: Giveback URB in tasklet context
> 8092031 New          [v5,11/21] usb: dwc2: host: Use periodic
> interrupt even with DMA
> 8092021 New          [v5,12/21] usb: dwc2: host: Rename some fields in
> struct dwc2_qh
> 8092011 New          [v5,13/21] usb: dwc2: host: Reorder things in hcd_queue.c
> 8092001 New          [v5,14/21] usb: dwc2: host: Split code out to
> make dwc2_do_reserve()
> 8091991 New          [v5,15/21] usb: dwc2: host: Add scheduler logging
> for missed SOFs
> 8091821 New          [v5,16/21] usb: dwc2: host: Manage frame nums
> better in scheduler
> 8091831 New          [v5,17/21] usb: dwc2: host: Schedule periodic
> right away if it's time
> 8091971 New          [v5,18/21] usb: dwc2: host: Add
> dwc2_hcd_get_future_frame_number() call
> 8091961 New          [v5,19/21] usb: dwc2: host: Properly set even/odd frame
> 8091981 New          [v5,20/21] usb: dwc2: host: Totally redo the
> microframe scheduler
> 8091951 New          [v5,21/21] usb: dwc2: host: If using uframe
> scheduler, end splits better
>
> Plus grab:
>
> 8094921 New          usb: dwc2: host: Properly set the HFIR
>
> You could ignore the two rk3066 patches, though they won't hurt you.
> Hopefully you also saw the note that you should pick the two patches:
>
> http://marc.info/?l=linux-usb&m=145255851516121&w=2

Oh, and above IDs are patchwork.kernel.org IDs.  So the HFIR patch can
be found at <https://patchwork.kernel.org/patch/8094921/> (or applied
via the pwclient command line tool).

-Doug



More information about the linux-rpi-kernel mailing list