On 2/28/22 10:19, Ruslan Bukin wrote:
On Sun, Feb 27, 2022 at 09:34:42PM +0100, Hans Petter Selasky wrote:
On 2/27/22 20:48, Ruslan Bukin wrote:
Hi,

I've an xhci issue with this change on my ARM Morello Board.
I've attached boot log. Can you look?

Thanks.

Ruslan

Hi,

The "xhci0: Resetting controller" indicates that the XHCI hardware
halted. If you just need this device working, then just load
usb_quirk.ko in /boot/loader.conf and add the same quirk there!

man usb_quirk

Maybe you can enable hw.usb.xhci.debug=17 from the loader during boot.
If there is only one device it shouldn't spam the console too much.

Sorry for the breakage. Seems to be related to xhci.c and probably its
handling of the unconfigure command.


Here is the output with xhcidebug = 17:
https://people.freebsd.org/~br/usb_issue_debug_17.txt
Can you look? I've unplugged mouse and keyboard, but left USB storage device.


Hi Ruslan,

First this happens:

xhci_check_transfer: TD is last
xhci_generic_done: xfer=0xffff00012a7a7180 endpoint=0xffffa00006d55128 transfer 
done
xhci_generic_done_sub: xfer=0xffff00012a7a7180[0/2] rem=0/8 status=1
xhci_generic_done_sub: xfer=0xffff00012a7a7180[1/2] rem=0/1 status=1
^^^ the device returns 1 byte worth of data, and status=1 means success.

xhci_generic_done_sub: xfer=0xffff00012a7a7180[2/2] rem=0/0 status=1
xhci_device_done: xfer=0xffff00012a7a7180, endpoint=0xffffa00006d55128, error=0
xhci_interrupt_poll: event[86] = 32 (0x0000000086a77310 0x01000000 0x01018001)
^^^ 0x01 -> XHCI_TRB_ERROR_SUCCESS
xhci_check_transfer: slot=1 epno=1 remainder=0 status=1

This quirk gets set because the byte returned is zero, most likely.
usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device SanDisk 
Extreme (0x0781:0x5580)
xhci_device_generic_open:

I suspect a CPU cache sync issue in busdma_dmamap_sync on your platform, as invoked by usb_pc_cpu_xxx(). Maybe you should print all the parameters for the intial usb_pc_cpu_xxx() calls?

The LUN byte should be non-zero!

Then comes the next problem:

xhci_cmd_set_tr_dequeue_ptr: xhci_do_command: command[10] = 16 (0x0000000086a84001, 0x00000000, 0x01044000)
xhci_interrupt: real interrupt (status=0x00000008)
xhci_interrupt_poll: event[87] = 33 (0x000000008508ffa0 0x13000000 0x01008401)
xhci_check_command: Received command event
xhci_configure_reset_endpoint: Could not set dequeue ptr for endpoint 4
xhci_cmd_configure_ep:

0x13 = XHCI_TRB_ERROR_CONTEXT_STATE as found in sys/dev/usb/controller/xhci*.h (Refer to xHCI_Specification_for_USB.pdf for more details)

--HPS

Reply via email to