Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 May 2018 21:22:30 -0700
From:      Eitan Adler <lists@eitanadler.com>
To:        usb@freebsd.org
Subject:   Re: IRQ storm on xhci0
Message-ID:  <CAF6rxgmdAVEvwC0cgaXE_Oz1Z84TjMPfKJ3MYPYm5KQbKH7E=Q@mail.gmail.com>
In-Reply-To: <CAF6rxgk4u%2B2SrrOO18ceAJOWp1wMdGxAHfGVE40Y0t-=bzJFnQ@mail.gmail.com>
References:  <CAF6rxgk4u%2B2SrrOO18ceAJOWp1wMdGxAHfGVE40Y0t-=bzJFnQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 1 May 2018 at 20:53, Eitan Adler <lists@eitanadler.com> wrote:
> Hi all,
>
> I am noticing consistently high IRQ rates on xhci0
>
> example from vmstat -i right now:
> irq259: xhci0                    2222153       1876
>
> and this is not the highest I've seen.
>
> My understanding is that a rate of 1876/s is insane for USB devices.
> Any suggestions of what I can do to debug?
>
> Things I've tried:
> - disabling MSI interrupts
> - disabling MSI-X interrupts
> - powering off all usb devices using usbconfig
> - unplugging all USB devices
>
> One thing of note:
> My mobo has a broken USB connector resulting in one of the two front
> USB-3 ports not working. I'm guessing this is related but I'd like
> some confirmation and/or a way to bypass the issue in software.

with insane debugging enabled:

...
[3542] xhci_check_transfer: slot=1 epno=6 stream=256 remainder=0 status=1
[3542] xhci_check_transfer: stream_id=0
[3542] xhci_check_transfer: Checking if 0x0000000099c01480 ==
(0x000000005df39980 .. 0x000000005df39aa0)
[3542] xhci_check_transfer: Checking if 0x0000000099c01480 ==
(0x0000000099c01480 .. 0x0000000099c015a0)
[3542] xhci_check_transfer: New remainder: 0
[3542] xhci_check_transfer: Following next TD
[3542] xhci_interrupt_poll: event[103] = 32 (0x00000001167f8790
0x01000000 0x01078001)
[3542] xhci_check_transfer: slot=1 epno=7 stream=256 remainder=0 status=1
[3542] xhci_check_transfer: stream_id=0
[3542] xhci_check_transfer: Checking if 0x00000001167f8790 ==
(0x000000005df7b980 .. 0x000000005df7baa0)
[3542] xhci_check_transfer: Checking if 0x00000001167f8790 ==
(0x00000001167f8600 .. 0x00000001167f8720)
[3542] xhci_interrupt_poll: event[104] = 32 (0x00000001167f8600
0x0d000031 0x01078001)
[3542] xhci_check_transfer: slot=1 epno=7 stream=3328 remainder=49 status=13
[3542] xhci_check_transfer: stream_id=0
[3542] xhci_check_transfer: Checking if 0x00000001167f8600 ==
(0x000000005df7b980 .. 0x000000005df7baa0)
[3542] xhci_check_transfer: Checking if 0x00000001167f8600 ==
(0x00000001167f8600 .. 0x00000001167f8720)
[3542] xhci_check_transfer: New remainder: 49
[3542] xhci_check_transfer: TD has short pkt
[3542] xhci_interrupt: real interrupt (status=0x00000008)
[3542] xhci_interrupt_poll: event[105] = 32 (0x0000000099c01490
0x01000000 0x01068001)
[3542] xhci_check_transfer: slot=1 epno=6 stream=256 remainder=0 status=1
[3542] xhci_check_transfer: stream_id=0
[3542] xhci_check_transfer: Checking if 0x0000000099c01490 ==
(0x000000005df39980 .. 0x000000005df39aa0)
[3542] xhci_check_transfer: Checking if 0x0000000099c01490 ==
(0x0000000099c01300 .. 0x0000000099c01420)
[3542] xhci_interrupt_poll: event[106] = 32 (0x0000000099c01300
0x01000000 0x01068001)
[3542] xhci_check_transfer: slot=1 epno=6 stream=256 remainder=0 status=1
[3542] xhci_check_transfer: stream_id=0
[3542] xhci_check_transfer: Checking if 0x0000000099c01300 ==
(0x000000005df39980 .. 0x000000005df39aa0)
[3542] xhci_check_transfer: Checking if 0x0000000099c01300 ==
(0x0000000099c01300 .. 0x0000000099c01420)
[3542] xhci_check_transfer: New remainder: 0
[3542] xhci_check_transfer: Following next TD
[3542] xhci_interrupt_poll: event[107] = 32 (0x00000001167f8610
0x01000000 0x01078001)
[3542] xhci_check_transfer: slot=1 epno=7 stream=256 remainder=0 status=1
[3542] xhci_check_transfer: stream_id=0
[3542] xhci_check_transfer: Checking if 0x00000001167f8610 ==
(0x000000005df7b980 .. 0x000000005df7baa0)
[3542] xhci_check_transfer: Checking if 0x00000001167f8610 ==
(0x00000001167f8480 .. 0x00000001167f85a0)
[3542] xhci_interrupt_poll: event[108] = 32 (0x00000001167f8480
0x0d000031 0x01078001)
[3542] xhci_check_transfer: slot=1 epno=7 stream=3328 remainder=49 status=13
[3542] xhci_check_transfer: stream_id=0
[3542] xhci_check_transfer: Checking if 0x00000001167f8480 ==
(0x000000005df7b980 .. 0x000000005df7baa0)
[3542] xhci_check_transfer: Checking if 0x00000001167f8480 ==
(0x00000001167f8480 .. 0x00000001167f85a0)
[3542] xhci_check_transfer: New remainder: 49
[3542] xhci_check_transfer: TD has short pkt
....


-- 
Eitan Adler



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAF6rxgmdAVEvwC0cgaXE_Oz1Z84TjMPfKJ3MYPYm5KQbKH7E=Q>