Kernel panic on ASMedia ASM1042 controller

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

 



Hello.

My 3.16.7 panicked yesterday when I was working with a Thorlabs DCC1545M camera (inside it's actually an IDS UI-154x/UI-554x sensor, if that matters).
>From USB point of view, it's a simple USB 2.0 device with 1 config, 1 IF and 2 bulk EPs.
As long as I was working with it using my USB 2.0 port (Intel C600/X79 EHCI), everything was fine.
But when I tried to plug it into USB 3.0 port (ASMedia ASM1042) I've got a kernel panic. I just had enough time to take a picture of the screen with my phone before the computer automatically rebooted. (I attach the photo to this mail). Also CupsLock and ScrollLock indicators were blinking synchronously.

After reboot I tried to the same again, and got another error: the system just hung (even SysRq didn't work). I used the reset button and decided that I'm done testing the tensile strength of my system. I did, however, try to reproduce the error with another USB 3.0 controller of my MB (Texas Instruments TUSB73x0) and everything worked fine. So I guess it's an ASMedia problem.

I tried to debug the xhci-hcd.ko with GDB, but it showed me wrong lines in the source code:

RIP: 0010:[<ffffffffa00ea006>]  [<ffffffffa00ea006>] handle_tx_event+0x2e6/0x12f0 [xhci_hcd]
0x000000000000fd50 + 0x2e6 = 0x10036
0x10036 is in handle_tx_event (../include/uapi/linux/usb/ch9.h:487).
482 * Returns true if the endpoint is of type control, otherwise it returns false.
483 */
484 static inline int usb_endpoint_xfer_control(
485 const struct usb_endpoint_descriptor *epd)
486 {
487 return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
488 USB_ENDPOINT_XFER_CONTROL);
489 }
490
491 /**

actually handle_tx_event is in (drivers/usb/host/xhci-ring.c:2244).

[<ffffffffa00eb2c6>] xhci_irq+0x2b6/0xa10 [xhci_hcd]
0x0000000000011040 + 0x2b6 = 0x112F6
0x112f6 is in xhci_irq (../drivers/usb/host/xhci-ring.c:2626).
2621 handle_port_status(xhci, event);
2622 update_ptrs = 0;
2623 break;
2624 case TRB_TYPE(TRB_TRANSFER):
2625 ret = handle_tx_event(xhci, &event->trans_event);
2626 if (ret < 0)
2627 xhci->error_bitmask |= 1 << 9;
2628 else
2629 update_ptrs = 0;
2630 break;

actually (xhci-ring.c:2626) is not xhci_irq but xhci_handle_event.

I'm a GDB virgin, so maybe you'll get more accurate info. My guess is that some instruction in handle_tx_event (xhci-ring.c:2244) dereferenced a null pointer.

I'm using OpenSuSE 13.2 x64. Uname -a looks like this:
Linux Hyperon-SuSE 3.16.7-7-desktop #1 SMP PREEMPT Wed Dec 17 18:00:44 UTC 2014 (762f27a) x86_64 x86_64 x86_64 GNU/Linux
I attach these files to this e-mail:

17-45-32.crash
17-45-32.verbose.crash
17-55-42.crash
17-55-42.verbose.crash
Output of 'journalctl' and 'journalctl -o verbose' for first crash (panic) and second crash (hang).

lsusb.txt
lsusb_3.txt
Output of lsusb with camera attached to USB 2.0 and 3.0 port, respectively.

hwinfo.txt
lscpu.txt
lsmod.txt
lspci.txt
lspci_v.txt
lspci_vv.txt
lspci_vvv.txt
hardinfo_report.html
Dumps of corresponding utilities.


Relevant files:
https://yadi.sk/i/fgCGsHwlebwRN
Screen photo

https://yadi.sk/d/QsrZkUKnebwRr
Tarball with logs



Cheers,
Daniil




--
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