From: "Michał Pecio" <michal.pecio@gmail.com>
To: Mathias Nyman <mathias.nyman@linux.intel.com>
Cc: Kuangyi Chiang <ki.chiang65@gmail.com>,
gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-usb@vger.kernel.org, mathias.nyman@intel.com,
stable@vger.kernel.org
Subject: Re: [PATCH] usb: xhci: Handle quirky SuperSpeed isoc error reporting by Etron HCs
Date: Fri, 28 Feb 2025 18:11:46 +0100 [thread overview]
Message-ID: <20250228181146.5188fcdb@foxbook> (raw)
In-Reply-To: <41847336-9111-4aaa-b3dc-f3c18bb03508@linux.intel.com>
On Fri, 28 Feb 2025 18:13:50 +0200, Mathias Nyman wrote:
> On 12.2.2025 10.12, Michał Pecio wrote:
> > Maybe I will seriously look into decoupling giveback and dequeue ptr
> > tracking, not only for those spurious Etron events but everywhere.
> >
> > Mathias is right that HW has no sensible reason to touch DMA buffers
> > after an error, I will look if the spec is very explicit about it.
> > If so, we could give back TDs after the first event and merely keep
> > enough information to recognize and silently ignore further events.
> >
>
> This issue was left hanging, I'll clean up my proposal and send it as
> a proper RFT PATCH.
I think it would be more pragmatic to have 'next_comp_code' instead of
'last_comp_code', because then you don't need this new helper function
which basically duplicates the switch statement from process_isoc_td().
And as long as Success is the only 'next_comp_code' supported, it can
be a simple boolean flag. So, basically, rename 'last_td_was_short' to
'expect_success_event', set it in process_isoc_td() and that's all.
What are your thoughts about killing error_mid_td completely and using
a similar mechanism to deal with those final events?
1. The events would be taken care of.
2. It should be OK wrt DMA, because the HC has no reason to touch data
buffers after an error. Short Packet is done this way and it works.
3. A remaining problem is that dequeue is advanced to end_trb too soon
and "tail" of the TD could be overwritten. Already a problem with Short
Packet and I think it can be solved by replacing most xhci_dequeue_td()
calls with xhci_td_cleanup() and adding to handle_tx_event():
ep_ring->dequeue = ep_trb;
ep_ring->deq_seg = ep_seg;
Regards,
Michal
next prev parent reply other threads:[~2025-02-28 17:11 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-05 5:37 [PATCH v4 0/1] xhci: Some improvement for Etron xHCI host Kuangyi Chiang
2025-02-05 5:37 ` [PATCH v4 1/1] xhci: Correctly handle last TRB of isoc TD on " Kuangyi Chiang
2025-02-05 14:17 ` Mathias Nyman
2025-02-05 15:17 ` Mathias Nyman
2025-02-07 1:38 ` Kuangyi Chiang
2025-02-10 6:09 ` Kuangyi Chiang
2025-02-05 22:42 ` Michał Pecio
2025-02-07 12:06 ` Mathias Nyman
2025-02-10 8:57 ` Michał Pecio
2025-02-11 12:36 ` [PATCH] usb: xhci: Handle quirky SuperSpeed isoc error reporting by Etron HCs Michal Pecio
2025-02-12 5:59 ` Kuangyi Chiang
2025-02-12 8:12 ` Michał Pecio
2025-02-28 16:13 ` Mathias Nyman
2025-02-28 16:18 ` [RFT PATCH] xhci: Handle spurious events on Etron host isoc enpoints Mathias Nyman
2025-02-28 19:57 ` kernel test robot
2025-02-28 20:07 ` kernel test robot
2025-03-01 2:05 ` Kuangyi Chiang
2025-03-03 3:29 ` Kuangyi Chiang
2025-03-03 8:28 ` Mathias Nyman
2025-03-03 10:34 ` Michał Pecio
2025-03-03 15:08 ` Mathias Nyman
2025-03-06 8:50 ` Michał Pecio
2025-02-28 17:11 ` Michał Pecio [this message]
2025-02-28 17:14 ` [PATCH] usb: xhci: Handle quirky SuperSpeed isoc error reporting by Etron HCs Michał Pecio
2025-02-07 1:28 ` [PATCH v4 1/1] xhci: Correctly handle last TRB of isoc TD on Etron xHCI host Kuangyi Chiang
2025-02-05 21:45 ` Michał Pecio
2025-02-07 6:59 ` Kuangyi Chiang
2025-02-07 9:51 ` Michał Pecio
2025-02-10 6:18 ` Kuangyi Chiang
2025-03-17 10:12 ` [PATCH v4 0/1] xhci: Some improvement for " Michał Pecio
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=20250228181146.5188fcdb@foxbook \
--to=michal.pecio@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=ki.chiang65@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
--cc=mathias.nyman@linux.intel.com \
--cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox