[PATCH v1] usb: xhci: Check return value of wait for TRB_TRANSFER event

Marek Vasut marex at denx.de
Wed Oct 18 04:35:22 CEST 2023


On 10/18/23 03:22, Minda Chen wrote:
> 
> 
> On 2023/10/17 19:20, Marek Vasut wrote:
>> On 10/17/23 08:20, Minda Chen wrote:
>>> xhci_wait_for_event() waiting TRB_TRANSFER event may return
>>> NULL. Checking the return value to avoid crash.
>>>
>>> Signed-off-by: Minda Chen <minda.chen at starfivetech.com>
>>
>> How did you trigger this error ? Is there a reproducer ? Details please ...
> 
> While Scanning a lenovo usb2.0 udisk, not 100 % reproduce

Can you include Linux

lsusb -vvv

output for this device and include that information in the commit 
message ? (or the U-Boot info below, that works too, just please add it 
into the commit message, it is important for future reference).

> This is log.
> 
> StarFive # usb reset
> resetting USB...
> Bus xhci_pci: Register 5000420 NbrPorts 5
> Starting the controller
> USB XHCI 1.00
> scanning bus xhci_pci for devices... WARN halted endpoint, queueing URB anyway.
> Unexpected XHCI event TRB, skipping... (f77141f0 00000000 13000000 02008401)
> Unhandled exception: Load access fault
> EPC: 00000000f7f563c6 RA: 00000000f7f563c6 TVAL: 000000000000000c
> EPC: 000000004024a3c6 RA: 000000004024a3c6 reloc adjusted

Where does the crash point to in code, can you disassemble the PC 
pointer ? (or maybe you can use scripts/decodecode I think)

> SP:  00000000f76f9a60 GP:  00000000f76fbdd0 TP:  0000000000000001
> T0:  00000000f76fa168 T1:  00000000000000ff T2:  0000000000000016
> S0:  00000000f7712fc0 S1:  00000000f76fb100 A0:  0000000000000000
> A1:  0000000000000000 A2:  00000000f77145d0 A3:  00000000f7714590
> A4:  0000000000000000 A5:  0000000000000020 A6:  000000000000000f
> A7:  0000000000000100 S2:  0000000000000000 S3:  0000000000000000
> S4:  00000000f7717050 S5:  00000000f7717050 S6:  0000000080000383
> S7:  00000000f76f9dc0 S8:  00000000000000ff S9:  0000000000000001
> S10: 00000000f76f9ba0 S11: 0000000000010c04 T3:  0000000000000010
> T4:  0000000000000006 T5:  0000000000000080 T6:  00000000f76fa231

[...]

> 3: Mass Storage,  USB Revision 2.0
>   - Generic Mass Storage 31097778XB15113405
>   - Class: (from Interface) Mass Storage
>   - PacketSize: 64  Configurations: 1
>   - Vendor: 0x17ef  Product 0x38ac Version 1.0
>     Configuration: 1
>     - Interfaces: 1 Bus Powered 200mA
>       Interface: 0
>       - Alternate Setting 0, Endpoints: 2
>       - Class Mass Storage, Transp. SCSI, Bulk only
>       - Endpoint 1 Out Bulk MaxPacket 512
>       - Endpoint 2 In Bulk MaxPacket 512
> 
> StarFive # usb storage
>    Device 0: Vendor:          Rev: 8.07 Prod: Lenovo SX1 64G
>              Type: Removable Hard Disk
>              Capacity: 60000.0 MB = 58.5 GB (122880000 x 512)

[...]


More information about the U-Boot mailing list