All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathias Nyman <mathias.nyman@linux.intel.com>
To: Ole Salscheider <ole@salscheider.org>, 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 15:09:46 +0300	[thread overview]
Message-ID: <9bf0060c-3427-a261-531c-c075054ae094@linux.intel.com> (raw)
In-Reply-To: <20210416093729.41865-1-ole@salscheider.org>

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.

Thanks
-Mathias


  parent reply	other threads:[~2021-04-16 12:07 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 [this message]
2021-04-16 15:18   ` Ole Salscheider
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=9bf0060c-3427-a261-531c-c075054ae094@linux.intel.com \
    --to=mathias.nyman@linux.intel.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=ole@salscheider.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.