On Thu, 2019-05-09 at 14:40 +0300, Mathias Nyman wrote: > On 9.5.2019 13.32, Marek Szyprowski wrote: > > Dear All, > > > > On 2019-04-26 15:23, Mathias Nyman wrote: > > > From: Nicolas Saenz Julienne <nsaenzjulienne@xxxxxxx> > > > > > > Immediate data transfers (IDT) allow the HCD to copy small chunks of > > > data (up to 8bytes) directly into its output transfer TRBs. This avoids > > > the somewhat expensive DMA mappings that are performed by default on > > > most URBs submissions. > > > > > > In the case an URB was suitable for IDT. The data is directly copied > > > into the "Data Buffer Pointer" region of the TRB and the IDT flag is > > > set. Instead of triggering memory accesses the HC will use the data > > > directly. > > > > > > The implementation could cover all kind of output endpoints. Yet > > > Isochronous endpoints are bypassed as I was unable to find one that > > > matched IDT's constraints. As we try to bypass the default DMA mappings > > > on URB buffers we'd need to find a Isochronous device with an > > > urb->transfer_buffer_length <= 8 bytes. > > > > > > The implementation takes into account that the 8 byte buffers provided > > > by the URB will never cross a 64KB boundary. > > > > > > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@xxxxxxx> > > > Reviewed-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> > > > Signed-off-by: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx> > > > > I've noticed that this patch causes regression on various Samsung Exynos > > 5420/5422/5800 boards, which have USB3.0 host ports provided by > > DWC3/XHCI hardware module. The regression can be observed with ASIX USB > > 2.0 ethernet dongle, which stops working after applying this patch (eth0 > > interface is registered, but no packets are transmitted/received). I can > > provide more debugging information or do some tests, just let me know > > what do you need. Reverting this commit makes ASIX USB ethernet dongle > > operational again. > > > > Thanks for reporting. > > Would it be possible to check if your ASIX ethernet dongle works on some > desktop/laptop setup with this same IDT patch? > > Also Exynos xhci traces could help, they would show the content of the TRBs > using IDT. > Maybe byte order gets messed up? > > Take traces with: > > mount -t debugfs none /sys/kernel/debug > echo 81920 > /sys/kernel/debug/tracing/buffer_size_kb > echo 1 > /sys/kernel/debug/tracing/events/xhci-hcd/enable > > <connect ASIX eth dongle, try to use it> > > send /sys/kernel/debug/tracing/trace content to me > > If we can't get this fixed I'll revert the IDT patch Hi Matthias, thanks for your help. I'll also be looking into it, so please send me the logs too. Regards, Nicolas
Attachment:
signature.asc
Description: This is a digitally signed message part