Điều gì đã thay đổi với trình điều khiển USB trong 4.0 và các nhân Linux sau này?


8

Với các hạt nhân lên tới 3.19, tất cả các thiết bị USB của tôi hoạt động hoàn hảo.

Khi nâng cấp lên 4.0 trở lên, một số thiết bị USB của tôi ngừng hoạt động và kernel tạo ra các lỗi như thế này:

[    3.369436] usb 9-1: device descriptor read/64, error -62
[    3.593543] usb 9-1: new full-speed USB device number 4 using ohci-pci
[    3.997572] usb 9-1: device not accepting address 4, error -62
[    4.120602] usb 9-1: new full-speed USB device number 5 using ohci-pci
[    4.524792] usb 9-1: device not accepting address 5, error -62
[    4.524911] usb usb9-port1: unable to enumerate USB device
[   15.402105] usb 9-1: new full-speed USB device number 6 using ohci-pci
[   15.530135] usb 9-1: device descriptor read/64, error -62
[   15.759224] usb 9-1: device descriptor read/64, error -62
[   15.983312] usb 9-1: new full-speed USB device number 7 using ohci-pci
[   16.111309] usb 9-1: device descriptor read/64, error -62
[   16.340398] usb 9-1: device descriptor read/64, error -62
[   16.564378] usb 9-1: new full-speed USB device number 8 using ohci-pci
[   16.968454] usb 9-1: device not accepting address 8, error -62
[   17.091555] usb 9-1: new full-speed USB device number 9 using ohci-pci
[   17.495570] usb 9-1: device not accepting address 9, error -62
[   17.495603] usb usb9-port1: unable to enumerate USB device
[   17.673702] usb 9-1: new full-speed USB device number 10 using ohci-pci
[   17.801758] usb 9-1: device descriptor read/64, error -62
[   18.030814] usb 9-1: device descriptor read/64, error -62
[   18.254834] usb 9-1: new full-speed USB device number 11 using ohci-pci
[   18.382858] usb 9-1: device descriptor read/64, error -62
[   18.611902] usb 9-1: device descriptor read/64, error -62
[   18.835977] usb 9-1: new full-speed USB device number 12 using ohci-pci
[   19.240034] usb 9-1: device not accepting address 12, error -62
[   19.363101] usb 9-1: new full-speed USB device number 13 using ohci-pci
[   19.767182] usb 9-1: device not accepting address 13, error -62
[   19.767226] usb usb9-port1: unable to enumerate USB device

Ví dụ cụ thể đó chỉ là một đầu đọc thẻ nhớ USB giá rẻ .... Tôi không thực sự quan tâm đến nó.

Vấn đề quan trọng hơn với tôi là bộ thu Quad DVB-T trên hộp phụ trợ huyền thoại của tôi cũng gặp vấn đề tương tự, vì vậy tôi không thể nâng cấp máy đó qua 3.19 vào lúc này. Đây là thẻ PCI-e, trông giống như một loại cầu nối pci-e với usb và bộ điều chỉnh DVB được gắn qua usb. Tôi không hoàn toàn chắc chắn nhưng tôi nghĩ nó thực sự có thể là thẻ PCIe -> PCI -> USB.

Dưới đây là chi tiết của thẻ trên kernel 3.19 đang hoạt động:

# lsusb | grep Leadtek
Bus 010 Device 005: ID 0413:6680 Leadtek Research, Inc. 
Bus 010 Device 004: ID 0413:6680 Leadtek Research, Inc. 
Bus 010 Device 003: ID 0413:6680 Leadtek Research, Inc. 
Bus 010 Device 002: ID 0413:6680 Leadtek Research, Inc. 

# dmesg | grep -i DigitalNow| grep pci
[    9.405568] input: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-1/rc/rc1/input17
[    9.405687] rc1: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-1/rc/rc1
[    9.475939] input: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-2/rc/rc2/input22
[    9.476049] rc2: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-2/rc/rc2
[    9.542441] input: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-3/rc/rc3/input24
[    9.542617] rc3: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-3/rc/rc3
[    9.609134] input: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-4/rc/rc4/input26
[    9.609289] rc4: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-4/rc/rc4

# lspci | grep '^0[45]:'
04:00.0 PCI bridge: PLX Technology, Inc. PEX8112 x1 Lane PCI Express-to-PCI Bridge (rev aa)
05:00.0 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62)
05:00.1 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62)
05:00.2 USB controller: VIA Technologies, Inc. USB 2.0 (rev 65)

# lspci -vv -s 05:00
05:00.0 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62) (prog-if 00 [UHCI])
    Subsystem: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller
    Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 32, Cache Line Size: 64 bytes
    Interrupt: pin A routed to IRQ 26
    Region 4: I/O ports at d020 [size=32]
    Capabilities: [80] Power Management version 2
        Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
        Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
    Kernel driver in use: uhci_hcd

    05:00.1 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62) (prog-if 00 [UHCI])
        Subsystem: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 32, Cache Line Size: 64 bytes
        Interrupt: pin B routed to IRQ 41
        Region 4: I/O ports at d000 [size=32]
        Capabilities: [80] Power Management version 2
            Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
            Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: uhci_hcd

    05:00.2 USB controller: VIA Technologies, Inc. USB 2.0 (rev 65) (prog-if 20 [EHCI])
        Subsystem: VIA Technologies, Inc. USB 2.0 Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 32, Cache Line Size: 64 bytes
        Interrupt: pin C routed to IRQ 50
        Region 0: Memory at fe500000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [80] Power Management version 2
            Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
            Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: ehci-pci

Vì vậy, những gì đã thay đổi trong trình điều khiển USB kernel gần đây? Đây có phải là một lỗi, hoặc nó là một vấn đề cấu hình?

Một số phiên bản kernel trước đây (3.8), công cụ USB đã thay đổi để ehci-hcdphải được tải trước đó ehci-pci. initramfs-toolskể từ đó đã được nâng cấp để xử lý việc đó một cách tự động, nhưng tôi vẫn nhận xét được phần còn lại của cách giải quyết trong /etc/modulestệp của mình :

# make sure ehci-pci loads immediately after ehci-hcd for kernel 3.8
# (should be handled automagically by initramfs-tools 0.110 now)
#ehci-hcd
#ehci-pci

Đây có phải là một tình huống tương tự, có thể được xử lý bằng cách tải trình điều khiển theo một thứ tự cụ thể hoặc bằng cách đưa vào danh sách đen các trình điều khiển lỗi thời?


Một số chi tiết phần cứng và phần mềm:

Điều này đã xảy ra trên một số máy bao gồm:

  • Bo mạch chủ Asus M4A89TD PRO USB3 với Bộ xử lý AMD Phenom II X6 1090T (máy trạm)
  • Asus M5A97 với Bộ xử lý AMD Phenom II X6 1090T (huyền thoại)
  • Asus Sabertooth 990FX với Bộ xử lý AMD Phenom II X6 1090T (máy trạm và máy chủ)
  • Asus Sabertooth 990FX với AMD FX (tm) -8150 Bộ xử lý tám lõi (phụ trợ huyền thoại)

Cái cuối cùng, với FX-8150 (đó là những gì tôi đã nằm xung quanh khi bo mạch chủ trước đó chết và tôi phải xây dựng lại nó), là hộp huyền thoại với Bộ thu Quad DVB-T của DigitalNow. Chiếc đầu tiên, M4A89TD Pro, là máy có đầu đọc thẻ nhớ USB giá rẻ.

Tất cả đều có ít nhất 8GB RAM và tất cả đều có GPU nvidia GTX-750 (hộp huyền thoại) hoặc GPU GTX-560 hoặc GTX-560Ti, sử dụng trình điều khiển nvidia độc quyền. Tất cả đều đang chạy sid Debian, với các kernel gần đây (4.2.x trên mọi thứ trừ phần phụ trợ huyền thoại vì đó là thứ duy nhất mà USB quan trọng đối với mọi thứ trừ HID - USB kbd và chuột và thậm chí cả máy tính bảng wacom đều hoạt động tốt, BTW, trên 4.0+ hạt nhân).

Tất cả các máy đều khởi động SSD 128-256GB trong RAID-1 bằng XFS cho / và ext4 cho / boot. Chương trình phụ trợ huyền thoại cũng đang chạy zfsonlinux để lưu trữ số lượng lớn. Như là máy trạm / máy chủ kết hợp.

Tôi đã thử hạt nhân debian, hạt nhân alcoholix và hạt nhân được biên soạn tùy chỉnh. Tất cả đều có cùng kết quả: lên tới 3.19 là ổn. 4.0 và sau đó phá vỡ bộ thu DVB-T và đầu đọc thẻ nhớ của tôi.


Xin lưu ý: Tôi không theo kiến ​​thức chung, hoặc thông tin có thể tìm thấy trong năm phút với google. Tôi đang theo dõi thông tin cụ thể về bất kỳ hồi quy USB (hoặc có thể liên quan nào khác) đã biết trong các nhân 4.0+ và, may mắn thay, một bản vá hoặc cách khắc phục.


Bạn chạy kernel tĩnh hay động? Phương tiện động với các mô-đun. Nếu bạn chạy động, hãy thử khởi động vào một cái gì đó như môi trường tối thiểu (kernel + initramfs cung cấp dấu nhắc shell ngay lập tức) với kernel được biên dịch tĩnh hoàn toàn và thử thiết bị của bạn. Nếu họ vẫn thất bại, hãy gửi một lỗi tại kernel bugzilla.

tôi sử dụng các mô-đun. như là hiển nhiên từ đề cập của tôi về /etc/modules. liên kết các mô-đun vào kernel một cách tĩnh sẽ không có sự khác biệt và có thể sẽ khiến mọi thứ tồi tệ hơn bằng cách cho tôi không có cơ hội để thay đổi thứ tự mà các mô-đun được tải.
cas

Cập nhật: Tôi vừa thử linux kernel 4.3 trên hộp với đầu đọc nhiều thẻ. Không thay đổi, vẫn vỡ.
cas

Nếu nó vẫn bị hỏng vào ngày 4.3, bạn hoàn toàn có thể cho rằng không ai thấy sự cố hoặc báo cáo lỗi. Hầu hết các lỗi được sửa bởi bản phát hành .3 của chu trình nhân chính. Vì vậy, hồi quy được tích hợp và sẽ không biến mất nếu không có ai đó dành thời gian để cung cấp cho người bảo trì trình điều khiển tất cả dữ liệu họ yêu cầu để giải quyết vấn đề, nếu họ có thể giải quyết. Nếu họ không có thiết bị, bạn có thể gặp rắc rối, vì rất khó gỡ lỗi các vấn đề phần cứng khi người gỡ lỗi không có thiết bị.
Lizardx 9/11/2015

cas, bạn thực sự cần phải nâng cấp? Nếu tôi phải đối mặt với một vấn đề khó giải quyết ngay bây giờ , tôi sẽ chỉ bị mắc kẹt với kernel cũ và đang hoạt động. Những vấn đề còn lại thúc đẩy bạn nâng cấp? (ngay sau khi đọc các bình luận dưới câu trả lời của Lizardx)

Câu trả lời:


1

Điều này nghe có vẻ như hồi quy hạt nhân trong 4.x Linux, ít nhất là đối với phần cứng cụ thể của bạn.

http://archlinuxarm.org/forum/viewtopic.php?f=53&t=8798

Có thể trong cam kết này, nhưng thật khó để nói vì bạn không cung cấp thêm thông tin nào về hệ thống của mình.

https://github.com/torvalds/linux/commit/a0b5cd4ac2d6542d524d8063961bf914b5df1efa

Một số hệ thống dường như đang gặp sự cố với ít nhất USB 3: https://lists.debian.org/debian-kernel/2015/08/msg00066.html

Vì vậy, câu hỏi thực sự là, phần cứng của bạn là gì và hạt nhân 4.x mới nhất bạn đã thử. Điều này có thể đã được giải quyết trong một bản phát hành 4.x gần đây. Là vấn đề với usb 2 và 3, hay chỉ 3, hoặc không liên quan đến phiên bản usb? Điều đó sẽ giúp thu hẹp nó xuống. Dữ liệu của bạn trông giống như chỉ là usb2 max trên hệ thống của bạn.

Hồi quy hạt nhân là bình thường.

Như tôi nói với mọi người khi họ hỏi loại câu hỏi này, một nhân linux mới có một số kết quả có thể xảy ra:

  1. một cái gì đó không hoạt động trước khi làm việc bây giờ
  2. mọi thứ vẫn như cũ trên hệ thống của bạn
  3. một cái gì đó đã làm việc trước đây, ngừng hoạt động
  4. một số thứ trở nên tốt hơn và một số thứ ngừng hoạt động

https://bugs.launchpad.net/ubfox/+source/linux/+orms/1455376 Đó là một lỗi Ubuntu với xử lý usb.

Thông thường các lỗi ảnh hưởng đến nhiều thứ mà nhiều người sử dụng sẽ được khắc phục tương đối nhanh chóng, do đó, đáng để kiểm tra bản phát hành mới nhất của hạt nhân ổn định mới nhất, mà tôi nghĩ là ở mức 4.3 vào lúc này.

Nếu bạn sử dụng ubfox, bạn có thể chạy kernel alcoholix, ít nhất là nếu đó là ubfox hiện tại, không phải LTS, tương tự cho debian, các bản phát hành không ổn định.

Xem: inxi -bxxx sẽ hữu ích để hiển thị những điều cơ bản của hệ thống của bạn. inxi có thể cài đặt từ hầu hết các kho distro.

Dưới đây là danh sách các thay đổi USB của Greg KH cho 4.0 / 3.20

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e29876723f7cb7728f0d6a674d23f92673e9f112

  usb: musb: fix device hotplug behind hub
  usb: dwc2: Fix a bug in reading the endpoint directions from reg.
  staging: emxx_udc: fix the build error
  usb: Retry port status check on resume to work around RH bugs
  Revert "usb: Reset USB-3 devices on USB-3 link bounce"
  uhci-hub: use HUB_CHAR_*
  usb: kconfig: replace PPC_OF with PPC
  ehci-pci: disable for Intel MID platforms (update)
  usb: gadget: Kconfig: use bool instead of boolean
  usb: musb: blackfin: remove incorrect __exit_p()
  USB: fix use-after-free bug in usb_hcd_unlink_urb()
  ehci-pci: disable for Intel MID platforms
  usb: host: pci_quirks: joing string literals
  USB: add flag for HCDs that can't receive wakeup requests (isp1760-hcd)
  USB: usbfs: allow URBs to be reaped after disconnection
  cdc-acm: kill unnecessary messages
  cdc-acm: add sanity checks
  usb: phy: phy-generic: Fix USB PHY gpio reset
  usb: dwc2: fix USB core dependencies
  usb: renesas_usbhs: fix NULL pointer dereference in dma_release_channel()

http://kernelnewbies.org/Linux_4.0 hiển thị toàn bộ thay đổi.

https://lkml.org/lkml/2015/6/26/511 đó là những thay đổi trong USB cho 4.2-rc1. Như bạn có thể thấy, hỏi 'những gì đã thay đổi' có lẽ không phải là câu hỏi chính xác, sẽ hữu ích hơn để xác định xem vấn đề đã được giải quyết cho phần cứng của bạn chưa trong các bản phát hành mới nhất.


1
Bạn thực sự không nói cho tôi biết bất cứ điều gì tôi chưa biết, tất cả chỉ là kiến ​​thức chung / công cụ googling cơ bản. Tôi cần thông tin cụ thể về các thay đổi / lỗi / hồi quy trong 4.0 và các hạt nhân mới hơn ... và hy vọng một con trỏ tới một bản vá hoặc ít nhất là một cách giải quyết. Báo cáo lỗi launchpad rõ ràng là về một vấn đề khác vì nó đề cập đến lỗi có mặt trong 3.18 trong khi tôi vẫn ổn với mọi thứ lên tới 3.19 nhưng không phải trên 4.0 trở lên. Hạt nhân gần đây nhất tôi đã thử là 4.2 vào thứ tư ngày 30 tháng 9. Khi tôi có thời gian để khởi động lại hộp huyền thoại của mình, tôi sẽ thử 4.3 nhưng tôi không mong đợi bất kỳ cải thiện nào.
cas

OTOH, việc đề cập đến lỗi PCI-e rất thú vị và đáng theo dõi ... mặc dù nó đã quay trở lại vào tháng 4 và có lẽ đã ở 4.2 (mà tôi đã thử). Theo github.com/ljalves/linux_media/issues/107 nó đã được cố định trong git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/... cho 4.16
cas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.