LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Phil Elwell <phil@raspberrypi.com>
To: Mathias Nyman <mathias.nyman@linux.intel.com>,
Mathias Nyman <mathias.nyman@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jonathan Bell <jonathan@raspberrypi.com>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] xhci: guard accesses to ep_state in xhci_endpoint_reset()
Date: Wed, 1 Sep 2021 14:15:14 +0100 [thread overview]
Message-ID: <f2fa6738-29f1-3434-70f2-7fba0b1b2567@raspberrypi.com> (raw)
In-Reply-To: <3830571c-566c-ef13-bc08-60206a634253@linux.intel.com>
Hi Mathias,
On 01/09/2021 10:21, Mathias Nyman wrote:
> On 31.8.2021 19.02, Phil Elwell wrote:
>> From: Jonathan Bell <jonathan@raspberrypi.com>
>>
>> See https://github.com/raspberrypi/linux/issues/3981
>
> Thanks, so in a nutshell the issue looks something like:
>
> [827586.220071] xhci_hcd 0000:01:00.0: WARN Cannot submit Set TR Deq Ptr
> [827586.220087] xhci_hcd 0000:01:00.0: A Set TR Deq Ptr command is pending.
> [827723.160680] INFO: task usb-storage:93 blocked for more than 122 seconds.
>
> The blocked task is probably because xhci driver failed to give back the
> URB after failing to submit a "Set TR Deq Ptr" command. This part should
> be fixed in:
> https://lore.kernel.org/r/20210820123503.2605901-4-mathias.nyman@linux.intel.com
> which is currently in usb-next, and should be in 5.15-rc1 and future 5.12+ stable.
>
>>
>> Two read-modify-write cycles on ep->ep_state are not guarded by
>> xhci->lock. Fix these.
>>
>
> This is probably one cause for the "Warn Cannot submit Set TR Deq Ptr A Set TR
> Deq Ptr command is pending" message.
> Another possibility is that with UAS and streams we have several transfer rings
> per endpoint, meaning that if two TDs on separate stream rings on the same
> endpoint both stall, or are cancelled we could see this message.
>
> The SET_DEQ_PENDING flag in ep->ep_state should probably be per ring, not per
> endpoint. Then we also need a "rings_with_pending_set_deq" counter per endpoint
> to keep track when all set_tr_deq commands complete, and we can restart the endpoint
Jonathan, the author of the patch, may give some detailed feedback on these
statements when he has a moment - "Well, sort of... it's complicated" was the
summary.
> Anyway, my patch linked above together with this patch should make these errors
> a lot more harmless.
Yes, I think that's true. We have a downstream patch to warn about a pending
Set TR Deq Ptr command but proceed anyway, allowing systems to recover, but with
the additional spin lock usage our users are reporting no failures _and_ no
warnings.
> Let me know if you can trigger the issue with both these patches applied.
We've not tried your patch yet.
> I'll add your patch to the queue as well.
Many thanks,
Phil
next prev parent reply other threads:[~2021-09-01 13:15 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-31 16:02 Phil Elwell
2021-09-01 9:21 ` Mathias Nyman
2021-09-01 13:15 ` Phil Elwell [this message]
2021-09-01 18:51 ` Jonathan Bell
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=f2fa6738-29f1-3434-70f2-7fba0b1b2567@raspberrypi.com \
--to=phil@raspberrypi.com \
--cc=gregkh@linuxfoundation.org \
--cc=jonathan@raspberrypi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
--cc=mathias.nyman@linux.intel.com \
--subject='Re: [PATCH] xhci: guard accesses to ep_state in xhci_endpoint_reset()' \
/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
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).