Linux USB
 help / color / mirror / Atom feed
From: Bart Nagel <bart@tremby.net>
To: Michal Pecio <michal.pecio@gmail.com>
Cc: linux-usb@vger.kernel.org, mathias.nyman@intel.com
Subject: Re: Regression: webcam freezing since Linux 6.15
Date: Wed, 29 Jul 2026 12:37:01 -0700	[thread overview]
Message-ID: <ampPGn-3C9PSEZQz@spiral> (raw)
In-Reply-To: <20260728003131.085171ee.michal.pecio@gmail.com>

At 2026-07-28 00:31:31 +0200, Michal Pecio wrote:
> Let's see if the attached patch fixes it, it will print BAILING OUT each
> time the failure would otherwise happen and it should prevent failures.
> 
> I think the problem occurs when a Short Packet event is generated for
> the first TRB of a two-TRB TD. The TD is completed and later a Missed
> Service Error event erronously points to the second TRB of the same TD.
> The driver can't identify this TD (it's gone) and goes nuts.
> 
> I can't explain why we aren't getting a second Short Packet for the
> second TRB before we get MSE. Your HW does generate Short Packet for
> both TRBs in other similar cases visible in this event ring dump.
> 
> I suspect that all those non-zero ep_trb_dma in MSE events are more or
> less bogus on your hardware, although obviously not all of them are
> instances of the aforementioned bug, because then the driver would
> malfunction on every such event, and we have seen that it doesn't. But
> let's start with testing if my guess is anywhere close to correct...

I think it is!

I didn't seem to have the "before" blobs your patch indicates in my
repo and it didn't want to apply where I was (at the first failing
commit) so I went to 6.18.28 and applied your patch there.

I just tested for 8 or 9 minutes with heavy load and got the "bailing
out" message 5 times, but capture was still continuing.

The log around the first "bailing out" is like this (it's more noisy
on these later commits; lots of "spurious event" messages):

    [  340.406954] uvcvideo 2-6.1:1.0: Frame complete (EOF found)
    [  340.420612] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7110, comp_code 13 after 13
    [  340.420860] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7140, comp_code 13 after 13
    [  340.421110] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7170, comp_code 13 after 13
    [  340.421360] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea71a0, comp_code 13 after 13
    [  340.422956] uvcvideo 2-6.1:1.0: Frame complete (EOF found)
    [  340.437113] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7d70, comp_code 13 after 13
    [  340.437359] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7da0, comp_code 13 after 13
    [  340.437610] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7dd0, comp_code 13 after 13
    [  340.437860] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7e00, comp_code 13 after 13
    [  340.438110] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7e30, comp_code 13 after 13
    [  340.438359] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7e60, comp_code 13 after 13
    [  340.438609] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7e90, comp_code 13 after 13
    [  340.438861] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7ec0, comp_code 13 after 13
    [  340.438881] uvcvideo 2-6.1:1.0: Frame complete (EOF found)
    [  340.443735] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 10aea6260 td_dma 10aea6270, set skip flag
    [  340.443740] xhci_hcd 0000:00:14.0: Event 23 for old TD end DMA 10aea6260 after 7us
    [  340.443743] xhci_hcd 0000:00:14.0: BAILING OUT
    [  340.443858] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea6270, set skip flag
    [  340.443861] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea6270, set skip flag
    [  340.444110] xhci_hcd 0000:00:14.0: Found td. Clear skip flag for slot 7 ep 2.
    [  340.444113] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea62c0, comp_code 13 after 13
    [  340.444360] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea62f0, comp_code 13 after 13
    [  340.444609] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6320, comp_code 13 after 13
    [  340.444860] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6350, comp_code 13 after 13
    [  340.446954] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  340.446957] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  340.454953] uvcvideo 2-6.1:1.0: Frame complete (EOF found)
    [  340.455109] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6b00, comp_code 13 after 13
    [  340.455359] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6b30, comp_code 13 after 13
    [  340.455609] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6b60, comp_code 13 after 13
    [  340.455860] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6b90, comp_code 13 after 13
    [  340.471423] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7740, comp_code 13 after 13
    [  340.471609] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7770, comp_code 13 after 13
    [  340.471860] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea77a0, comp_code 13 after 13
    [  340.472110] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea77d0, comp_code 13 after 13
    [  340.472360] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7800, comp_code 13 after 13
    [  340.474951] uvcvideo 2-6.1:1.0: Frame complete (EOF found)

Missed service interval messages do not always lead to a "bailing out"
message, like this example:

    [  183.316597] uvcvideo 2-6.1:1.0: Frame complete (EOF found)
    [  183.316821] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7dd0, comp_code 13 after 13
    [  183.317073] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7e00, comp_code 13 after 13
    [  183.331200] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea6880, set skip flag
    [  183.331206] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea6880, set skip flag
    [  183.331208] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea6880, set skip flag
    [  183.331447] xhci_hcd 0000:00:14.0: Found td. Clear skip flag for slot 7 ep 2.
    [  183.331449] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea68f0, comp_code 13 after 13
    [  183.331697] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6920, comp_code 13 after 13
    [  183.331946] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6950, comp_code 13 after 13
    [  183.332198] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6980, comp_code 13 after 13
    [  183.332552] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  183.332555] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  183.332556] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  183.333198] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6a40, comp_code 13 after 13
    [  183.333448] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6a70, comp_code 13 after 13
    [  183.333697] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6aa0, comp_code 13 after 13
    [  183.333948] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6ad0, comp_code 13 after 13
    [  183.334197] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6b00, comp_code 13 after 13
    [  183.336539] uvcvideo 2-6.1:1.0: Frame complete (EOF found)

Or this much longer one:

    [  199.936170] uvcvideo 2-6.1:1.0: Frame complete (EOF found)
    [  199.949829] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea69e0, comp_code 13 after 13
    [  199.950076] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6a10, comp_code 13 after 13
    [  199.950326] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6a40, comp_code 13 after 13
    [  199.950575] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6a70, comp_code 13 after 13
    [  199.950825] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6aa0, comp_code 13 after 13
    [  199.951076] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6ad0, comp_code 13 after 13
    [  199.951326] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6b00, comp_code 13 after 13
    [  199.951575] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea6b30, comp_code 13 after 13
    [  199.952170] uvcvideo 2-6.1:1.0: Frame complete (EOF found)
    [  199.965952] xhci_hcd 0000:00:14.0: Transfer error for slot 7 ep 2 on endpoint
    [  199.966075] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966078] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966080] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966082] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966083] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966085] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966087] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966089] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966090] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966092] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966094] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966096] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966097] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966099] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966101] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966102] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966104] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966106] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966107] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966109] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966111] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966112] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966114] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966116] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966117] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966119] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966121] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966122] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966124] xhci_hcd 0000:00:14.0: Miss service interval error for slot 7 ep 2 ep_trb_dma 0 td_dma 10aea7370, set skip flag
    [  199.966327] xhci_hcd 0000:00:14.0: Found td. Clear skip flag for slot 7 ep 2.
    [  199.966329] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7650, comp_code 13 after 13
    [  199.966348] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-71)
    [  199.966350] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966352] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966353] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966354] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966355] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966357] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966358] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966359] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966360] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966362] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966363] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966364] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966365] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.966576] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7680, comp_code 13 after 13
    [  199.966825] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea76b0, comp_code 13 after 13
    [  199.967075] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea76e0, comp_code 13 after 13
    [  199.968161] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968163] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968164] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968165] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968167] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968168] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968169] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968170] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968172] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968173] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968174] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968176] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968177] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968178] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968179] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.968181] uvcvideo 2-6.1:1.0: USB isochronous frame lost (-18)
    [  199.971079] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea79e0, comp_code 13 after 13
    [  199.971325] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7a10, comp_code 13 after 13
    [  199.971575] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7a40, comp_code 13 after 13
    [  199.971825] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7a70, comp_code 13 after 13
    [  199.972076] xhci_hcd 0000:00:14.0: Spurious event dma 0x000000010aea7aa0, comp_code 13 after 13
    [  199.972102] uvcvideo 2-6.1:1.0: Frame complete (EOF found)

But if I understand correctly these are the same as the cases I had
before which did *not* freeze the camera, and the patch hasn't touched
cases like those.

If the full log would be useful I can provide it, but it's much larger
this time with all the "spurious event" messages. If you do want it
please tell me whether it's OK to gzip and attach (a little over a
megabyte) or if there's some other preferred way to send it.

Would those moments where it reports "bailing out" have been freezes
before? Or not necessarily -- should I be running the test for longer?

If this indicates a fix (looks like it to me but I don't pretend to
fully understand all your explanation; sorry!) then thank you very
much, and I'll be interested in following a patch on its journey to
being merged into the kernel; please do CC me on that when the time
comes!

Otherwise, please let me know how I can help further.

Thanks.

  reply	other threads:[~2026-07-29 19:37 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-21 22:10 Regression: webcam freezing since Linux 6.15 Bart Nagel
2026-07-22 22:22 ` Michal Pecio
2026-07-22 23:23   ` Bart Nagel
2026-07-23  6:14     ` Michal Pecio
2026-07-23  6:19       ` Michal Pecio
2026-07-23 21:02       ` Bart Nagel
2026-07-23 22:45         ` Bart Nagel
2026-07-25  9:59           ` Michal Pecio
2026-07-27 20:23             ` Bart Nagel
2026-07-27 22:31               ` Michal Pecio
2026-07-29 19:37                 ` Bart Nagel [this message]
2026-07-22 23:30   ` Bart Nagel

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=ampPGn-3C9PSEZQz@spiral \
    --to=bart@tremby.net \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=michal.pecio@gmail.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