NetBSD Problem Report #54592

From wiz@yt.nih.at  Wed Oct  2 10:51:23 2019
Return-Path: <wiz@yt.nih.at>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 754A07A156
	for <gnats-bugs@gnats.NetBSD.org>; Wed,  2 Oct 2019 10:51:23 +0000 (UTC)
Message-Id: <20191002105118.5658F2AC16B@yt.nih.at>
Date: Wed,  2 Oct 2019 12:51:18 +0200 (CEST)
From: Thomas Klausner <wiz@NetBSD.org>
Reply-To: Thomas Klausner <wiz@NetBSD.org>
To: gnats-bugs@NetBSD.org
Subject: uhub error when nvme is using msi(x) interrupts
X-Send-Pr-Version: 3.95

>Number:         54592
>Category:       kern
>Synopsis:       uhub error when nvme is using msi(x) interrupts
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 02 10:55:00 +0000 2019
>Last-Modified:  Thu Oct 17 11:35:00 +0000 2019
>Originator:     Thomas Klausner
>Release:        NetBSD 9.99.15
>Organization:
Curiosity is the very basis of education and if you tell me that
curiosity killed the cat, I say only that the cat died nobly.
- Arnold Edinborough
>Environment:


Architecture: x86_64
Machine: amd64
>Description:
On this system:
[     1.000746] xhci2 at pci13 dev 0 function 3: vendor 1022 product 145f (rev. 0x00)
[     1.000746] allocated pic msix8 type edge pin 0 level 6 to cpu1 slot 2 idt entry 140
[     1.000746] xhci2: interrupting at msix8 vec 0
[     1.000746] xhci2: xHCI version 1.0
[     1.000746] usb4 at xhci2: USB revision 3.0
[     1.000746] usb5 at xhci2: USB revision 2.0
[     1.000746] usb5 at xhci2: USB revision 2.0
[     2.549742] uhub5 at usb5: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 2.00/1.00, addr 0
[     2.549742] uhub5: 4 ports with 4 removable, self powered

I see
[     9.153939] uhub5: autoconfiguration error: device problem, disabling port 2
[    15.047687] uhub5: autoconfiguration error: device problem, disabling port 3

which disables the USB (console) keyboard and mouse.

This diff to the nvme driver:

Index: nvme_pci.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/nvme_pci.c,v
retrieving revision 1.26
diff -u -r1.26 nvme_pci.c
--- nvme_pci.c  23 Jan 2019 06:56:19 -0000      1.26
+++ nvme_pci.c  10 Jun 2019 08:18:33 -0000
@@ -64,7 +64,7 @@
 #include <dev/ic/nvmereg.h>
 #include <dev/ic/nvmevar.h>

-int nvme_pci_force_intx = 0;
+int nvme_pci_force_intx = 1;
 int nvme_pci_mpsafe = 1;
 int nvme_pci_mq = 1;           /* INTx: ioq=1, MSI/MSI-X: ioq=ncpu */

which I needed to make nvme work for some months, makes uhub5 work(!?).
The diff is not necessary any longer since this commit:

Author: nonaka <nonaka@NetBSD.org>
Date:   Fri Sep 20 05:32:42 2019 +0000

    Don't set Phase Tag bit of Completion Queue entry at nvme_poll_done().

    A new completion queue entry check incorrectly determined that there was
    a Completion Queue entry for a command that was not submitted.

    Fix PR kern/54275, PR kern/54503, PR kern/54532.

which made the uhub issue visible.

I've backported the diff to a July 19 (8.99.51) kernel and uhub failed then already.

Here's the dmesg output for nvme:

[     1.000746] nvme0 at pci8 dev 0 function 0: vendor 144d product a808 (rev. 0x00)
[     1.000746] nvme0: NVMe 1.3
[     1.000746] nvme0: for admin queue interrupting at msix3 vec 0
[     1.000746] nvme0: Samsung SSD 970 EVO Plus 1TB, firmware 1B2QEXM7, serial S4EWNF0M404219L
[     1.000746] nvme0: for io queue 1 interrupting at msix3 vec 1 affinity to cpu0
[     1.000746] nvme0: for io queue 2 interrupting at msix3 vec 2 affinity to cpu1
[     1.000746] nvme0: for io queue 3 interrupting at msix3 vec 3 affinity to cpu2
[     1.000746] nvme0: for io queue 4 interrupting at msix3 vec 4 affinity to cpu3
[     1.000746] nvme0: for io queue 5 interrupting at msix3 vec 5 affinity to cpu4
[     1.000746] nvme0: for io queue 6 interrupting at msix3 vec 6 affinity to cpu5
[     1.000746] nvme0: for io queue 7 interrupting at msix3 vec 7 affinity to cpu6
[     1.000746] nvme0: for io queue 8 interrupting at msix3 vec 8 affinity to cpu7
[     1.000746] nvme0: for io queue 9 interrupting at msix3 vec 9 affinity to cpu8
[     1.000746] nvme0: for io queue 10 interrupting at msix3 vec 10 affinity to cpu9
[     1.000746] nvme0: for io queue 11 interrupting at msix3 vec 11 affinity to cpu10
[     1.000746] nvme0: for io queue 12 interrupting at msix3 vec 12 affinity to cpu11
[     1.000746] nvme0: for io queue 13 interrupting at msix3 vec 13 affinity to cpu12
[     1.000746] nvme0: for io queue 14 interrupting at msix3 vec 14 affinity to cpu13
[     1.000746] nvme0: for io queue 15 interrupting at msix3 vec 15 affinity to cpu14
[     1.000746] nvme0: for io queue 16 interrupting at msix3 vec 16 affinity to cpu15
[     1.000746] nvme0: for io queue 17 interrupting at msix3 vec 17 affinity to cpu16
[     1.000746] nvme0: for io queue 18 interrupting at msix3 vec 18 affinity to cpu17
[     1.000746] nvme0: for io queue 19 interrupting at msix3 vec 19 affinity to cpu18
[     1.000746] nvme0: for io queue 20 interrupting at msix3 vec 20 affinity to cpu19
[     1.000746] nvme0: for io queue 21 interrupting at msix3 vec 21 affinity to cpu20
[     1.000746] nvme0: for io queue 22 interrupting at msix3 vec 22 affinity to cpu21
[     1.000746] nvme0: for io queue 23 interrupting at msix3 vec 23 affinity to cpu22
[     1.000746] nvme0: for io queue 24 interrupting at msix3 vec 24 affinity to cpu23
[     1.000746] nvme0: for io queue 25 interrupting at msix3 vec 25 affinity to cpu24
[     1.000746] nvme0: for io queue 26 interrupting at msix3 vec 26 affinity to cpu25
[     1.000746] nvme0: for io queue 27 interrupting at msix3 vec 27 affinity to cpu26
[     1.000746] nvme0: for io queue 28 interrupting at msix3 vec 28 affinity to cpu27
[     1.000746] nvme0: for io queue 29 interrupting at msix3 vec 29 affinity to cpu28
[     1.000746] nvme0: for io queue 30 interrupting at msix3 vec 30 affinity to cpu29
[     1.000746] nvme0: for io queue 31 interrupting at msix3 vec 31 affinity to cpu30
[     1.000746] nvme0: for io queue 32 interrupting at msix3 vec 32 affinity to cpu31
[     1.000746] ld0 at nvme0 nsid 1

>How-To-Repeat:
Boot the system, try pressing a key, look at the logs.
>Fix:
It has been suggested that this is a bug in the MSI(X) code.

>Audit-Trail:
From: Thomas Klausner <wiz@NetBSD.org>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: kern/54592: uhub error when nvme is using msi(x) interrupts
Date: Wed, 2 Oct 2019 13:03:34 +0200

 nick asked for vmstat -i output:

 interrupt       total rate
 TLB shootdown    3147    2
 cpu0 timer     139814   99
 msi1 vec 0        101    0
 msix2 vec 0       423    0
 msix2 vec 1      1008    0
 msix2 vec 2         2    0
 msix3 vec 1       680    0
 msix3 vec 3       292    0
 msix3 vec 8         3    0
 msix3 vec 9         2    0
 msix3 vec 10      166    0
 msix3 vec 12       25    0
 msix3 vec 13      418    0
 msix3 vec 14     1013    0
 msix3 vec 15        7    0
 msix3 vec 16       18    0
 msix3 vec 17       86    0
 msix3 vec 19       22    0
 msix3 vec 20       87    0
 msix3 vec 21        1    0
 msix3 vec 22       92    0
 msix3 vec 24       56    0
 msix3 vec 26        5    0
 msix3 vec 29      234    0
 msix3 vec 30      482    0
 msix3 vec 32      150    0
 msi7 vec 0          1    0
 ioapic2 pin 0   82960   59
 Total          231295  164


 There is no line for msix0, msix4 nor msix8.

 [     1.000746] xhci0 at pci1 dev 0 function 0: vendor 1022 product 43ba (rev. 0x02)
 [     1.000746] xhci0: interrupting at msix0 vec 0
 [     1.000746] xhci0: xHCI version 1.10
 [     1.000746] usb0 at xhci0: USB revision 3.1
 [     1.000746] usb1 at xhci0: USB revision 2.0
 [     1.000746] xhci1 at pci9 dev 0 function 3: vendor 1022 product 145f (rev. 0x00)
 [     1.000746] xhci1: interrupting at msix4 vec 0
 [     1.000746] xhci1: xHCI version 1.0
 [     1.000746] usb2 at xhci1: USB revision 3.0
 [     1.000746] usb3 at xhci1: USB revision 2.0
 [     1.000746] xhci2 at pci13 dev 0 function 3: vendor 1022 product 145f (rev. 0x00)
 [     1.000746] allocated pic msix8 type edge pin 0 level 6 to cpu1 slot 2 idt entry 140
 [     1.000746] xhci2: interrupting at msix8 vec 0
 [     1.000746] xhci2: xHCI version 1.0
 [     1.000746] usb4 at xhci2: USB revision 3.0
 [     1.000746] usb5 at xhci2: USB revision 2.0

  Thomas

From: Thomas Klausner <wiz@NetBSD.org>
To: NetBSD bugtracking <gnats-bugs@NetBSD.org>
Cc: 
Subject: Re: kern/54592: uhub error when nvme is using msi(x) interrupts
Date: Wed, 2 Oct 2019 13:18:29 +0200

 intrctl list/vmstat -vi show the xhci entries though:

 $ intrctl list
 interrupt id  CPU0  CPU1  CPU2  CPU3  CPU4  CPU5  CPU6  CPU7  CPU8  CPU9  CPU10  CPU11  CPU12  CPU13  CPU14  CPU15  CPU16  CPU17  CPU18  CPU19  CPU20  CPU21  CPU22  CPU23  CPU24  CPU25  CPU26  CPU27  CPU28  CPU29  CPU30  CPU31  device name(s)
 ioapic0 pin 9    0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  acpi SCI
 msix0 vec 0      0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  xhci0
 msi1 vec 0      93*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  ahcisata0
 msix2 vec 0      0    44*    0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  wm0TXRX0
 msix2 vec 1      0     0   142*    0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  wm0TXRX1
 msix2 vec 2      1*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  wm0LINK
 msix3 vec 0      0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 adminq
 msix3 vec 1   1158*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq1
 msix3 vec 2      0   693*    0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq2
 msix3 vec 3      0     0    22*    0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq3
 msix3 vec 4      0     0     0    12*    0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq4
 msix3 vec 5      0     0     0     0    27*    0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq5
 msix3 vec 6      0     0     0     0     0     0*    0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq6
 msix3 vec 7      0     0     0     0     0     0   159*    0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq7
 msix3 vec 8      0     0     0     0     0     0     0    48*    0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq8
 msix3 vec 9      0     0     0     0     0     0     0     0     0*    0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq9
 msix3 vec 10     0     0     0     0     0     0     0     0     0     0*     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq10
 msix3 vec 11     0     0     0     0     0     0     0     0     0     0      4*     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq11
 msix3 vec 12     0     0     0     0     0     0     0     0     0     0      0    160*     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq12
 msix3 vec 13     0     0     0     0     0     0     0     0     0     0      0      0      0*     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq13
 msix3 vec 14     0     0     0     0     0     0     0     0     0     0      0      0      0    391*     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq14
 msix3 vec 15     0     0     0     0     0     0     0     0     0     0      0      0      0      0      2*     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq15
 msix3 vec 16     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0     18*     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq16
 msix3 vec 17     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0    337*     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq17
 msix3 vec 18     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0    121*     0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq18
 msix3 vec 19     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0*     0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq19
 msix3 vec 20     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0*     0      0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq20
 msix3 vec 21     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0*     0      0      0      0      0      0      0      0      0      0      0  nvme0 ioq21
 msix3 vec 22     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0     11*     0      0      0      0      0      0      0      0      0      0  nvme0 ioq22
 msix3 vec 23     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0     94*     0      0      0      0      0      0      0      0      0  nvme0 ioq23
 msix3 vec 24     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0     25*     0      0      0      0      0      0      0      0  nvme0 ioq24
 msix3 vec 25     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0*     0      0      0      0      0      0      0  nvme0 ioq25
 msix3 vec 26     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0*     0      0      0      0      0      0  nvme0 ioq26
 msix3 vec 27     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      8*     0      0      0      0      0  nvme0 ioq27
 msix3 vec 28     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0*     0      0      0      0  nvme0 ioq28
 msix3 vec 29     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0*     0      0      0  nvme0 ioq29
 msix3 vec 30     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      4*     0      0  nvme0 ioq30
 msix3 vec 31     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0    205*     0  nvme0 ioq31
 msix3 vec 32     0     0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      2* nvme0 ioq32
 msix4 vec 0      0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  xhci1
 msi5 vec 0       0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  ahcisata1
 msi6 vec 0       0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  hdaudio0
 msi7 vec 0       1*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  hdaudio1
 msix8 vec 0      0     0*    0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  xhci2
 msi9 vec 0       0     0*    0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  ahcisata2
 ioapic2 pin 0 1343*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nouveau0



 $ vmstat -v -i
 interrupt      total rate
 TLB shootdown   3058   41
 cpu0 timer      7236   97
 ioapic0 pin 9      0    0
 msix0 vec 0        0    0
 msi1 vec 0        93    1
 msix2 vec 0       51    0
 msix2 vec 1      188    2
 msix2 vec 2        1    0
 msix3 vec 0        0    0
 msix3 vec 1     1158   15
 msix3 vec 2      693    9
 msix3 vec 3      120    1
 msix3 vec 4       12    0
 msix3 vec 5       31    0
 msix3 vec 6        0    0
 msix3 vec 7      159    2
 msix3 vec 8       48    0
 msix3 vec 9        0    0
 msix3 vec 10       0    0
 msix3 vec 11       4    0
 msix3 vec 12     160    2
 msix3 vec 13       0    0
 msix3 vec 14     391    5
 msix3 vec 15       2    0
 msix3 vec 16      18    0
 msix3 vec 17     337    4
 msix3 vec 18     121    1
 msix3 vec 19       0    0
 msix3 vec 20       0    0
 msix3 vec 21       0    0
 msix3 vec 22      11    0
 msix3 vec 23      94    1
 msix3 vec 24      25    0
 msix3 vec 25       0    0
 msix3 vec 26       0    0
 msix3 vec 27       8    0
 msix3 vec 28       0    0
 msix3 vec 29       0    0
 msix3 vec 30       4    0
 msix3 vec 31     205    2
 msix3 vec 32       2    0
 msix4 vec 0        0    0
 msi5 vec 0         0    0
 msi6 vec 0         0    0
 msi7 vec 0         1    0
 msix8 vec 0        0    0
 msi9 vec 0         0    0
 ioapic2 pin 0   3449   46
 Total          17680  238

From: Thomas Klausner <wiz@NetBSD.org>
To: NetBSD bugtracking <gnats-bugs@NetBSD.org>
Cc: 
Subject: Re: kern/54592: uhub error when nvme is using msi(x) interrupts
Date: Wed, 2 Oct 2019 14:21:52 +0200

 Same system booted with the nvme diff, after plugging in the keyboard
 in all USB ports (xhci is at msix0, 3, 7 in this setup):

 $ intrctl list
 interrupt id   CPU0  CPU1  CPU2  CPU3  CPU4  CPU5  CPU6  CPU7  CPU8  CPU9  CPU10  CPU11  CPU12  CPU13  CPU14  CPU15  CPU16  CPU17  CPU18  CPU19  CPU20  CPU21  CPU22  CPU23  CPU24  CPU25  CPU26  CPU27  CPU28  CPU29  CPU30  CPU31  device name(s)
 ioapic0 pin 9     0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  acpi SCI
 msix0 vec 0      34*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  xhci0
 msi1 vec 0       87*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  ahcisata0
 msix2 vec 0       0    71*    0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  wm0TXRX0
 msix2 vec 1       0     0   316*    0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  wm0TXRX1
 msix2 vec 2       1*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  wm0LINK
 ioapic1 pin 12 5315*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nvme0
 msix3 vec 0      30*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  xhci1
 msi4 vec 0        0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  ahcisata1
 msi5 vec 0        0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  hdaudio0
 msi6 vec 0        1*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  hdaudio1
 msix7 vec 0      75*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  xhci2
 msi8 vec 0        0*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  ahcisata2
 ioapic2 pin 0  7548*    0     0     0     0     0     0     0     0     0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0  nouveau0

 $ vmstat -i
 interrupt       total rate
 TLB shootdown    3140   18
 cpu0 timer      16734   98
 msix0 vec 0        34    0
 msi1 vec 0         87    0
 msix2 vec 0        81    0
 msix2 vec 1       348    2
 msix2 vec 2         1    0
 ioapic1 pin 12   5341   31
 msix3 vec 0        30    0
 msi6 vec 0          1    0
 msix7 vec 0        75    0
 ioapic2 pin 0    9516   55
 Total           35388  208


 dmesg extract:

 [     1.000956] nvme0 at pci8 dev 0 function 0: vendor 144d product a808 (rev. 0x00)
 [     1.000956] nvme0: NVMe 1.3
 [     1.000956] nvme0: interrupting at ioapic1 pin 12
 [     1.000956] nvme0: Samsung SSD 970 EVO Plus 1TB, firmware 1B2QEXM7, serial S4EWNF0M404219L
 [     1.000956] ld0 at nvme0 nsid 1

 [     1.000956] xhci0 at pci1 dev 0 function 0: vendor 1022 product 43ba (rev. 0x02)
 [     1.000956] xhci0: interrupting at msix0 vec 0
 [     1.000956] xhci0: xHCI version 1.10
 [     1.000956] usb0 at xhci0: USB revision 3.1
 [     1.000956] usb1 at xhci0: USB revision 2.0

 [     1.000956] xhci1 at pci9 dev 0 function 3: vendor 1022 product 145f (rev. 0x00)
 [     1.000956] xhci1: interrupting at msix3 vec 0
 [     1.000956] xhci1: xHCI version 1.0
 [     1.000956] usb2 at xhci1: USB revision 3.0
 [     1.000956] usb3 at xhci1: USB revision 2.0

 [     1.000956] xhci2 at pci13 dev 0 function 3: vendor 1022 product 145f (rev. 0x00)
 [     1.000956] xhci2: interrupting at msix7 vec 0
 [     1.000956] xhci2: xHCI version 1.0
 [     1.000956] usb4 at xhci2: USB revision 3.0
 [     1.000956] usb5 at xhci2: USB revision 2.0

From: Thomas Klausner <wiz@NetBSD.org>
To: NetBSD bugtracking <gnats-bugs@NetBSD.org>
Cc: 
Subject: Re: kern/54592: uhub error when nvme is using msi(x) interrupts
Date: Thu, 17 Oct 2019 13:33:27 +0200

 After some more testing - this doesn't affect all USB ports -- I think it only affects

 uhub4 at usb4: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 3.00/1.00, addr 0
 uhub4: 4 ports with 4 removable, self powered
 uhub5 at usb5: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 2.00/1.00, addr 0
 uhub5: 4 ports with 4 removable, self powered

 but

 uhub0 at usb0: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 3.00/1.00, addr 0
 uhub0: 8 ports with 8 removable, self powered
 uhub1 at usb1: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 2.00/1.00, addr 0
 uhub1: 14 ports with 14 removable, self powered
 uhub2 at usb2: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 3.00/1.00, addr 0
 uhub2: 4 ports with 4 removable, self powered
 uhub3 at usb3: NetBSD (0000) xHCI root hub (0000), class 9/0, rev 2.00/1.00, addr 0
 uhub3: 4 ports with 4 removable, self powered

 are fine.
  Thomas

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.