ASM3142 controller ERROR Transfer event TRB DMA ptr not part of current TD

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

 



Hi!

I'm experiencing an issue with combination of ASMedia ASM3142
controller
(http://www.asmedia.com.tw/eng/e_show_products.php?cate_index=175&item=179)
and specific USB3 device type - industrial camera. After few seconds
from the start of image acquisition USB transfer hangs (device reports
that streaming endpoint has stalled) with the following messages
repeated several times in kernel log:
[  137.337248] xhci_hcd 0000:02:00.0: ERROR Transfer event TRB DMA ptr not part of current TD ep_index 2 comp_code 1
[  137.337259] xhci_hcd 0000:02:00.0: Looking for event-dma 00000004841d9000 trb-start 00000004841dabf0 trb-end 00000004841dafe0 seg-start 00000004841da000 seg-end 00000004841daff0
.....
[  137.346576] xhci_hcd 0000:02:00.0: ERROR Transfer event TRB DMA ptr not part of current TD ep_index 2 comp_code 13
[  137.346585] xhci_hcd 0000:02:00.0: Looking for event-dma 00000004841d9b60 trb-start 00000004841dabf0 trb-end 00000004841dafe0 seg-start 00000004841da000 seg-end 00000004841daff0
.....

Endpoint 2 (OUT) is used for control commands (with 0x82 IN endpoint for
ACKs) and image data is streamed through IN endpoint 0x81. The fact
that 2 bulk endpoints are used in parallel is most likely what triggers
this bug. Other devices work fine with this controller, e.g. USB3
storage, but they don't have such USB endpoints configuration. Also the
camera works fine with this controller on Windows, but only with
drivers from ASMedia, not with Microsoft's.

I've tried several Linux kernel versions including latest kernel.org
release 4.18.3.

Here is lspci -vvv -s 0000:02:00.0 output:
02:00.0 USB controller: ASMedia Technology Inc. Device 2142 (prog-if 30 [XHCI])
        Subsystem: ASMedia Technology Inc. Device 2142
        Physical Slot: 6
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 24
        NUMA node: 0
        Region 0: Memory at fb300000 (64-bit, non-prefetchable) [size=32K]
        Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [68] MSI-X: Enable+ Count=8 Masked-
                Vector table: BAR=0 offset=00002000
                PBA: BAR=0 offset=00002080
        Capabilities: [78] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] Express (v2) Legacy Endpoint, MSI 00
                DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, L1 <2us
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                        RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 8GT/s, Width x2, ASPM L0s L1, Exit Latency L0s <2us, L1 unlimited
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 8GT/s, Width x2, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR+, OBFF Not Supported
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
                LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+
                         EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap- ChkEn-
        Capabilities: [200 v1] #19
        Capabilities: [300 v1] Latency Tolerance Reporting
                Max snoop latency: 0ns
                Max no snoop latency: 0ns
        Kernel driver in use: xhci_hcd

Here is excerpt from dmesg before running test application:
[    1.605211] xhci_hcd 0000:02:00.0: xHCI Host Controller
[    1.605217] xhci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 5
[    1.660014] xhci_hcd 0000:02:00.0: hcc params 0x0200ef81 hci version 0x110 quirks 0x0000000000000010
[    1.660263] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.18
[    1.660266] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.660268] usb usb5: Product: xHCI Host Controller
[    1.660269] usb usb5: Manufacturer: Linux 4.18.3-041803-generic xhci-hcd
[    1.660271] usb usb5: SerialNumber: 0000:02:00.0
[    1.660406] hub 5-0:1.0: USB hub found
[    1.660414] hub 5-0:1.0: 2 ports detected
[    1.660526] xhci_hcd 0000:02:00.0: xHCI Host Controller
[    1.660531] xhci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 6
[    1.660535] xhci_hcd 0000:02:00.0: Host supports USB 3.1 Enhanced SuperSpeed
[    1.660570] usb usb6: We don't know the algorithms for LPM for this host, disabling LPM.
[    1.660594] usb usb6: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 4.18
[    1.660596] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.660598] usb usb6: Product: xHCI Host Controller
[    1.660599] usb usb6: Manufacturer: Linux 4.18.3-041803-generic xhci-hcd
[    1.660601] usb usb6: SerialNumber: 0000:02:00.0
[    1.660723] hub 6-0:1.0: USB hub found
[    1.660731] hub 6-0:1.0: 2 ports detected
[    2.000611] usb 6-2: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
[    2.022542] usb 6-2: LPM exit latency is zeroed, disabling LPM.
[    2.025524] usb 6-2: New USB device found, idVendor=20f7, idProduct=30b3, bcdDevice= 0.00
[    2.025527] usb 6-2: New USB device strings: Mfr=1, Product=2, SerialNumber=10
[    2.025529] usb 6-2: Product: xiC
[    2.025531] usb 6-2: Manufacturer: XIMEA
[    2.025533] usb 6-2: SerialNumber: CIMAU1633001

And from lsusb -t:
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
    |__ Port 2: Dev 2, If 0, Class=Miscellaneous Device, Driver=, 5000M
    |__ Port 2: Dev 2, If 1, Class=Miscellaneous Device, Driver=, 5000M
    |__ Port 2: Dev 2, If 2, Class=Miscellaneous Device, Driver=, 5000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M

lsusb -v -s 6:2 output:
Bus 006 Device 002: ID 20f7:30b3 XIMEA MQ in U3V mode or MC camera
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.20
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0         9
  idVendor           0x20f7 XIMEA
  idProduct          0x30b3 MQ in U3V mode or MC camera
  bcdDevice            0.00
  iManufacturer           1 XIMEA
  iProduct                2 xiC
  iSerial                10 CIMAU1633001
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          116
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         3
      bFunctionClass        239 Miscellaneous Device
      bFunctionSubClass       5 USB3 Vision
      bFunctionProtocol       0 
      iFunction               3 USB3 Vision Device
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       239 Miscellaneous Device
      bInterfaceSubClass      5 USB3 Vision
      bInterfaceProtocol      0 
      iInterface              0 
      ** UNRECOGNIZED:  14 24 01 00 00 01 00 00 00 01 00 04 05 06 07 08 09 0a 0b 0c
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       239 Miscellaneous Device
      bInterfaceSubClass      5 USB3 Vision
      bInterfaceProtocol      2 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       239 Miscellaneous Device
      bInterfaceSubClass      5 USB3 Vision
      bInterfaceProtocol      1 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               0
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           22
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000c
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   3
      Lowest fully-functional device speed is SuperSpeed (5Gbps)
    bU1DevExitLat           0 micro seconds
    bU2DevExitLat           0 micro seconds
Device Status:     0x0000
  (Bus Powered)

Test application uses libusb, so I can provide libusb debug log and of
course any further debug information kernel can produce. Also I have
access to USB protocol analyzer. What can I do to debug this issue?

Regards,
Igor.



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

  Powered by Linux