From: Ole Salscheider <ole@salscheider.org>
To: Mathias Nyman <mathias.nyman@linux.intel.com>, linux-usb@vger.kernel.org
Cc: Mathias Nyman <mathias.nyman@intel.com>
Subject: Re: [PATCH] [RFC] xhci: Add Link TRB sync quirk for ASM3142
Date: Fri, 16 Apr 2021 17:18:57 +0200 [thread overview]
Message-ID: <5c92dd8c-c8b0-40b5-addb-2df360673462@salscheider.org> (raw)
In-Reply-To: <9bf0060c-3427-a261-531c-c075054ae094@linux.intel.com>
Hi Mathias.
On 16.04.21 14:09, Mathias Nyman wrote:
> Hi Ole
>
> On 16.4.2021 12.37, Ole Salscheider wrote:
>> This patch adds a quirk to the xhci driver so that link TRBs are only
>> given to the host controller once it has processed all previous TRBs on
>> this segment.
>>
>> This quirk is necessary for me on an ASMedia ASM3142 host controller.
>> Without it, I get the following errors when accessing a SuperSpeed UVC
>> camera:
>>
>> Transfer event TRB DMA ptr not part of current TD ep_index XX
comp_code XX
>>
>> You can find more details in my previous mail about the problem:
>> https://lkml.org/lkml/2021/3/31/355
>>
>> This patch fixes my problem, but it is probably terribly wrong. I am not
>> even sure if I can rely on handle_tx_event being called before each link
>> TRB in the segment. Some feedback would be very welcome.
>
> I think we need to look at the cause more closely.
>
> We normally only get events for the last TRB of a TD, or for short
transfers like in your case.
> So not every transfer TRB generates events.
>
> There are several things going on here that combined could cause this.
>
> Last transfer TRB of a segment has some alignment requirements which
might not be handled in the isoc case.
> The amount of untransferred data is large, (16388 bytes) so the TRB
causing the short packet
> could be far from the last TRB we expect the event on.
> Due to new segment and link trb maybe the stored last_trb for this TD
is just set wrong
>
> Anyway, more detailed traces together with dynamic debug show us more:
>
> mount -t debugfs none /sys/kernel/debug
> echo 'module xhci_hcd =p' >/sys/kernel/debug/dynamic_debug/control
> echo 'module usbcore =p' >/sys/kernel/debug/dynamic_debug/control
> echo 81920 > /sys/kernel/debug/tracing/buffer_size_kb
> echo 1 > /sys/kernel/debug/tracing/events/xhci-hcd/enable
> < trigger the issue >
> Send output of dmesg
> Send content of /sys/kernel/debug/tracing/trace
>
> trace accumulates pretty fast so try to copy it as soon as the issue
is seen.
I have uploaded the dmesg output to
https://stuff.salscheider.org/dmesg_out
and the trace to
https://stuff.salscheider.org/trace_out
With the trace enabled, I did not get the DMA errors. Maybe it slowed
down the computer enough. But still the camera stream froze after ~3 frames.
The log contains a recording with ffmpeg that gave a few frames (at
second 83), then some where it hung completely. Then I re-plugged the
camera and got a few more frames (at second 179) before it hung again.
I hope this is helpful. If you need a different log please tell me.
Best regards,
Ole
next prev parent reply other threads:[~2021-04-16 15:19 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-16 9:37 [PATCH] [RFC] xhci: Add Link TRB sync quirk for ASM3142 Ole Salscheider
2021-04-16 9:56 ` Greg KH
2021-04-16 12:09 ` Mathias Nyman
2021-04-16 15:18 ` Ole Salscheider [this message]
2021-04-19 10:52 ` Ole Salscheider
2021-04-19 14:43 ` Mathias Nyman
2021-04-19 19:05 ` Ole Salscheider
2021-04-21 7:28 ` Mathias Nyman
2021-04-21 8:45 ` Ole Salscheider
2021-05-05 7:56 ` Ole Salscheider
2021-05-06 9:08 ` Mathias Nyman
2021-05-09 0:01 ` Forest Crossman
2021-05-09 7:31 ` Ole Salscheider
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5c92dd8c-c8b0-40b5-addb-2df360673462@salscheider.org \
--to=ole@salscheider.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
--cc=mathias.nyman@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).