USB error -110 & Oops on USB2 audio card and PCIe USB3 hub

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I've looked up multiple MLs & forums for this issue but nothing comes close to the symptoms I get.

I am running Linux 4.13.11[1] on a Super Micro X10SRM-F[2] motherboard. Nothing is plugged on the integrated USB hubs except a USB2 keyboard that works fine.

== Symptom #1
I boot Linux normally (works fine) then plug an USB2 audio card[3] on the USB2 integrated hub. I get the following errors (complete log[4]):

  usb 3-1: new high-speed USB device number 23 using xhci_hcd
  usb 3-1: 1:1: cannot set freq 96000 (v2): err -110
  usb 3-1: parse_audio_format_rates_v2(): unable to find clock source (clock -110)
  usb 3-1: cannot get ctl value: req = 0x83, wValue = 0x201, wIndex = 0xa00, type = 4
  usb 3-1: 10:0: cannot get min/max values for control 2 (id 10)
  usb 3-1: cannot get ctl value: req = 0x83, wValue = 0x200, wIndex = 0xa00, type = 4
  usb 3-1: 10:0: cannot get min/max values for control 2 (id 10)
  usb 3-1: cannot get ctl value: req = 0x83, wValue = 0x201, wIndex = 0xb00, type = 4
  usb 3-1: 11:0: cannot get min/max values for control 2 (id 11)
  usb 3-1: cannot get ctl value: req = 0x83, wValue = 0x200, wIndex = 0xb00, type = 4
  usb 3-1: 11:0: cannot get min/max values for control 2 (id 11)
  usb 3-1: USB disconnect, device number 23
  (repeats a few times)

Note the -110 code (ETIMEDOUT). These lines appear instantly the first time, then the USB self-resets and the lines reappear very slowly (see [4] timestamps). Eventually after multiple self-resets, usbcore (via snd_usb_audio) gets really mad while trying to usb_disconnect():

  BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
  IP: close_pdeo+0x47/0xf0
  PGD 0 
  P4D 0 
  Oops: 0000 [#1] PREEMPT SMP
  Modules linked in: <snip>
  CPU: 0 PID: 103 Comm: kworker/0:2 Not tainted 4.13.11-1-ARCH #1
  Hardware name: Supermicro Super Server/X10SRM-F, BIOS 2.0b 04/05/2017
  Workqueue: usb_hub_wq hub_event [usbcore]
  task: ffff88f577ee4b00 task.stack: ffffb3e446668000
  RIP: 0010:close_pdeo+0x47/0xf0
  RSP: 0018:ffffb3e44666b9b0 EFLAGS: 00010286
  RAX: ffffffff8383a940 RBX: ffff88f575005ba8 RCX: 0000000000000000
  RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff88f575ce5bc0
  RBP: ffffb3e44666b9f0 R08: 0000000000000000 R09: 000000018015000d
  R10: ffffb3e44666b9e8 R11: 0000000000000000 R12: ffff88f575ce5bc0
  R13: ffff88f575ce5b40 R14: ffff88f54c756508 R15: ffff88f575ce5b78
  FS:  0000000000000000(0000) GS:ffff88f57f200000(0000) knlGS:0000000000000000
  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  CR2: 0000000000000020 CR3: 0000000cdda09000 CR4: 00000000001406f0
  Call Trace:
   ? pde_put+0x3f/0x50
   proc_entry_rundown+0x80/0xc0
   remove_proc_subtree+0xc1/0x150
   proc_remove+0x1e/0x30
   snd_info_disconnect+0x5c/0x70 [snd]
   snd_info_disconnect+0x3c/0x70 [snd]
   snd_info_disconnect+0x3c/0x70 [snd]
   snd_info_card_disconnect+0x46/0x60 [snd]
   snd_card_disconnect+0x152/0x1c0 [snd]
   usb_audio_disconnect+0x69/0x210 [snd_usb_audio]
   ? usb_disable_endpoint+0x8c/0xa0 [usbcore]
   ? usb_disable_interface+0x45/0x60 [usbcore]
   usb_unbind_interface+0x72/0x280 [usbcore]
   device_release_driver_internal+0x158/0x210
   device_release_driver+0x12/0x20
   bus_remove_device+0xe9/0x160
   device_del+0x1d2/0x350
   usb_disable_device+0x9f/0x270 [usbcore]
   usb_disconnect+0xc6/0x2b0 [usbcore]
   hub_event+0x510/0x1590 [usbcore]
   process_one_work+0x1de/0x430
   worker_thread+0x248/0x400
   kthread+0x125/0x140
   ? process_one_work+0x430/0x430
   ? kthread_create_on_node+0x70/0x70
   ret_from_fork+0x25/0x30
  Code: 65 48 8b 04 25 28 00 00 00 48 89 45 e0 31 c0 80 7e 18 00 75 7c 49 89 fd c6 46 18 01 4c 89 e7 e8 70 de 3d 00 48 8b 33 49 8b 45 28 <48> 8b 7e 20 ff 50 70 4c 89 e7 e8 9a e3 3d 00 48 8b 43 10 48 8b 
  RIP: close_pdeo+0x47/0xf0 RSP: ffffb3e44666b9b0
  CR2: 0000000000000020
  ---[ end trace a2ed08162d6e9d16 ]---

Note that lsusb is able to show this line between two self-resets:
  ID 194f:0101 PreSonus Audio Electronics, Inc. AudioBox 22 VSL

But if I try to $ lsusb -vd 194f:0101, it hangs for >30s. I was once able to get the full output but forgot to save it. If you need it, I can try reproducing, please ask.

Notes:
1. This sound card *works* perfectly well on the same kernel+distrib but other hardware (CLEVO W150ER motherboard, Intel Corp. Integrated Rate Matching Hub). It is registered instantly as a snd_usb_audio device. Working setup $ lsusb -v output is at [5].
2. I was *once* able to get the sound card actually work on the faulty setup (recognized by ALSA/pulse and sound playing) but as soon I as unpluged/repluged it crashed again.
3. Other USB 2 and 3 hardware *works* fine: no issue with a USB2 drive, a USB3 drive, an M-AUDIO midi keyboard, an Android phone (via adb).
4. This is very reproductible, I've rebooted a dozen times with the same crashes.
5. Same errors on both the USB2 and USB3 integrated hubs.

Things I saw on other threads, tried, but did not change anything:
1. add usbcore.autosuspend=-1 to cmdline
2. add intel_iommu=off to cmdline

Being out of ideas, I thought I would try connecting the audio card to an *external* PCI hub.

== Symptom #2
So I acquired a PCI-e USB3 hub[6] and plugged it. I get the following errors just after boot (complete boot log[7], $ lspci -vvnn[8]):

  usb 5-1: device descriptor read/64, error -110
  usb 5-1: device descriptor read/64, error -110
  usb 5-1: device descriptor read/64, error -110
  usb 5-1: device descriptor read/64, error -110
  usb 5-1: new high-speed USB device number 4 using xhci_hcd
  xhci_hcd 0000:02:00.0: Abort failed to stop command ring: -110
  xhci_hcd 0000:02:00.0: Host halt failed, -110
  xhci_hcd 0000:02:00.0: xHCI host controller not responding, assume dead
  xhci_hcd 0000:02:00.0: HC died; cleaning up
  xhci_hcd 0000:02:00.0: Timeout while waiting for setup device command
  usb 5-1: device not accepting address 4, error -108
  usb usb5-port1: couldn't allocate usb_device

Note the -110 error code again. Same errors with or without the external power supply. Nothing is plugged on the faulty hub.
So I have *very similar errors* on two vastly different pieces of USB-related hardware (a PCI-e hub and an audio card) but cannot for the life of me figure out what's the root cause.

I am now out of ideas/things to try, so I hope you might provide insight on what could be wrong.

Thanks,

-- 
Alex

[1] on Archlinux; also tested, with the exact same results, on 4.9.0/Debian
[2] http://www.supermicro.com/manuals/motherboard/C600/MNL-1845.pdf
[3] https://www.presonus.com/produits/fr/AudioBox-22VSL/caract-tech
[4] http://ix.io/Cef (boot log with USB2 sound card)
[5] http://ix.io/Cej (lsusb -vd 194f:0101, working machine)
[6] http://www.raidsonic.de/products/accessories/ac_controller/IB-AC614a/pdf/datasheet_ib-ac614a_e.pdf
[7] http://ix.io/Cea (boot log with USB3 hub)
[8] http://ix.io/Ceb (lspci -vvnn)
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux