Project

General

Profile

Actions

Bug #15270

open

Boot from USB 3.0 HD stops in usb_pipe_xopen with notice "driver scsa2usb attempting to open non-default of a USB 3.0 ..."

Added by Carsten Grzemba 6 months ago. Updated 3 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
driver - device drivers
Start date:
Due date:
% Done:

0%

Estimated time:
(Total: 0.00 h)
Difficulty:
Medium
Tags:
Gerrit CR:
External Bug:

Description

I attempt to install Omnios r151044 on a USB 3.0 connected Harddisk. The installation went fine but booting from USB HD stops with:

NOTICE: driver scsa2usb attempting to open non-default of a USB 3.0 or newer device through usb_pipe_open(). scsa2usb must be updated to use usb_pipe_xopen() to work with USB device Western Digital My Passport 0748.

Booting from install media and import the rpool works without errors.

There is a description of the topic here:
https://github.com/TritonDataCenter/rfd/blob/master/rfd/0066/README.md
But it seems that scsa2usb should have got the modifications already with the commit for https://www.illumos.org/issues/7918

I booted with kmdb and captured a stack trace from the moment where the notice is emitted:

fffffffffbca5d30 usba`usb_pipe_xopen()
fffffffffbca5d70 usba`hubd_check_ports+0xf1(fffffe5861713b00)
fffffffffbca5e10 usba`usba_hubdi_attach+0x554(fffffe5851e87960, 0)
fffffffffbca5ea0 usba`usba_hubdi_bind_root_hub+0x237(fffffe5851e87960, ffffffffc00e3a60, 1f, fffffe5864075020)
fffffffffbca5ed0 xhci`xhci_root_hub_init+0x41(fffffe5864073000)
fffffffffbca5f00 xhci`xhci_attach+0x21c(fffffe5851e87960, 0)
fffffffffbca5f70 devi_attach+0xb1(fffffe5851e87960, 0)
fffffffffbca5fb0 attach_node+0x8b(fffffe5851e87960)
fffffffffbca6000 i_ndi_config_node+0x118(fffffe5851e87960, 6, 0)
fffffffffbca6030 i_ddi_attachchild+0x3e(fffffe5851e87960)
fffffffffbca6070 devi_attach_node+0x64(fffffe5851e87960, 4080)
fffffffffbca6150 devi_config_one+0x3cb(fffffe5851e8d688, fffffe58614dd080, fffffffffbca6220, 4080, 0)
fffffffffbca61d0 ndi_devi_config_one+0xac(fffffe5851e8d688, fffffe58614dd080, fffffffffbca6220, 4080)
fffffffffbca62b0 resolve_pathname+0x12f(fffffffffbc02010, fffffffffbca62d8, fffffffffbca62e0, fffffffffbca62cc)
fffffffffbca6320 ldi_vp_from_name+0x8e(fffffffffbc02010, fffffffffbca6350)
fffffffffbca63a0 ldi_open_by_name+0x69(fffffffffbc02010, 1, fffffe586150ddb0, fffffffffbca63c8, fffffe58640ebeb0)
fffffffffbca6450 zfs`vdev_disk_read_rootlabel+0x71(fffffffffbc02010, fffffe58640eba10, fffffffffbca6468)
fffffffffbca64c0 zfs`spa_generate_rootconf+0x2c(fffffffffbc02010, fffffe58640eba10, fffffffffbca64f0, 8e19e5fbfee6a977)
fffffffffbca6560 zfs`spa_import_rootpool+0x3f(fffffffffbc02010, fffffe58640eba10, 8e19e5fbfee6a977, c8ffdd32e1f6e6cc)
fffffffffbca65b0 zfs`zfs_mountroot+0xb5(fffffffffbcef9a0, 0)
fffffffffbca65d0 fsop_mountroot+0x1d(fffffffffbcef9a0, 0)
fffffffffbca6610 rootconf+0x14d()
fffffffffbca6650 vfs_mountroot+0x6e()
fffffffffbca6690 main+0x137()
fffffffffbca66a0 _locore_start+0x88()


Subtasks 1 (1 open0 closed)

Bug #15502: 'Device is gone' error when booting from USB3.0+ disksNew

Actions
Actions #1

Updated by Carsten Grzemba 5 months ago

I did some further investigation. At boot usb_pipe_xopen is passes twice in total.
The first time ep_xdescr = NULL, so the function will pass without notice.

The second time ep_xdescr is set.

I add an additional notice with the partial values of the compare expression. The expression:

(ep_xdesc != NULL && 
ep_xdesc->uex_flags == 0 &&
bcmp(&ep_xdesc->uex_ep, &usba_default_ep_descr, sizeof (usb_ep_descr_t)) != 0 &&
usba_device->usb_port_status >= USBA_SUPER_SPEED_DEV)

ep_xdesc is set,
ep_xdesc->uex_flags == 0
bcmp() = 1
usba_device->usb_port_status = 4

So I get the notice. The notice is embedded in "Device is gone ... Reinserted device is accessible again"

WARNING: /pci@0,0/pci1028,a19@14/storage@11/disk@0,0 (sd0):
        Command failed to complete...Device is gone

WARNING: Pool 'rpool' has encountered an uncorrectable I/O failure and has been suspended; `zpool clear` will be required before the pool can be written to.
WARNING: Pool 'rpool' has encountered an uncorrectable I/O failure and has been suspended; `zpool clear` will be required before the pool can be written to.
NOTICE: driver scsa2usb attempting to open non-default of a USB 3.0 or newer device through usb_pipe_open(). scsa2usb must be updated to use usb_pipe_xopen() to work with USB device Western Digital My Passport 0748. usba_device fffffe5930807580 ep_xdesc fffffe0078f8e8d0
NOTICE: descriptor: flags 0, cmp 1, status 4
WARNING: /pci@0,0/pci1028,a19@14/storage@11 (scsa2usb0): Reinserted device is accessible again.
NOTICE: driver scsa2usb attempting to open non-default of a USB 3.0 or newer device through usb_pipe_open(). scsa2usb must be updated to use usb_pipe_xopen() to work with USB device Western Digital My Passport 0748. usba_device fffffe5930807580 ep_xdesc fffffe0078f8e8d0
NOTICE: descriptor: flags 0, cmp 1, status 4
WARNING: /pci@0,0/pci1028,a19@14/storage@11 (scsa2usb0): Reinserted device is accessible again.
WARNING: Pool 'rpool' has encountered an uncorrectable I/O failure and has been suspended; `zpool clear` will be required before the pool can be written to.
WARNING: Pool 'rpool' has encountered an uncorrectable I/O failure and has been suspended; `zpool clear` will be required before the pool can be written to.

Boot from install media and import rpool, there is no notification related 'I/O failure and recommended `zpool clear`'

I guess the problem is related to the "Device is gone ... Reinserted device is accessible again" events, where no physical disconnect/reconect actions was done.

Actions #2

Updated by Carsten Grzemba 5 months ago

I attempt to investigate the reason for device gone ... reconnect actions. I enabled USB debug with

[0]> ::bp scsa2usb`scsa2usb_attach
[0]> :c
...
[0]> scsa2usb_instance_debug/W 5
[0]> scsa2usb_errmask/W 2e           #  (1+4+8+0x20)
[0]> scsa2usb_disconnect_event_cb:b
[0]> scsa2usb_reconnect_event_cb:b
[0]> usb_pipe_xopen:b
[0]> ::usba_clear_debug_buf
[0]> :c

here a part of the usb_debug_buf

[12]> ::usba_debug_buf
scsa2usb_ugen0: usb_ugen_disconnect_ev_cb:
usbai:  usb_serialize_access: tok=0xfffffe59718df080 dip=0xfffffe59616e22f0 cnt=0 thr=0x0, flg=0x0, abs_tmo=0x0
usbai:  usb_serialize_access exit: tok=0xfffffe59718df080 thr=0xfffffe007977cc20
scsa2usb_ugen0: ugen_ds_change:
scsa2usb_ugen0: ugen_ds_poll_wakeup:
usbai:  usb_release_access: tok=0xfffffe59718df080 dip=0xfffffe59616e22f0 count=1 thr=0xfffffe007977cc20
usbai:  usba_persistent_pipe_close: usba_device=0xfffffe5972baf580
usbai:  usb_pipe_close: ph=0xfffffe5972baf960
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972baf960 state=1 ref=1
usbai:  usba_pipe_setup_func_call: ph_impl=0xfffffe5972baf960, func=0xfffffffff7f018a0
usbai:  usba_pipe_sync_close: dip=0xfffffe59616e22f0 ph_data=0xfffffe5972a9dda0 state=1 ref=1
usbai:  usba_destroy_pipe_handle: ph_data=0xfffffe5972a9dda0
usbai:  usba_destroy_pipe_handle: destroying ph_data=0xfffffe5972a9dda0
usbai:  usb_pipe_close: ph=0xfffffe5972baf618
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972baf618 state=1 ref=1
usbai:  usba_pipe_setup_func_call: ph_impl=0xfffffe5972baf618, func=0xfffffffff7f018a0
usbai:  usba_pipe_sync_close: dip=0xfffffe59616e22f0 ph_data=0xfffffe5972a9de98 state=1 ref=1
usbai:  usba_destroy_pipe_handle: ph_data=0xfffffe5972a9de98
usbai:  usba_destroy_pipe_handle: destroying ph_data=0xfffffe5972a9de98
usbai:  usb_pipe_close: ph=0xfffffe5972baf5a8
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972baf5a8 state=1 ref=1
usbai:  usba_pipe_setup_func_call: ph_impl=0xfffffe5972baf5a8, func=0xfffffffff7f018a0
usbai:  usba_pipe_sync_close: dip=0xfffffe59616e22f0 ph_data=0xfffffe5957dd1008 state=1 ref=1
usbai:  usba_destroy_pipe_handle: ph_data=0xfffffe5957dd1008
usbai:  usba_destroy_pipe_handle: destroying ph_data=0xfffffe5957dd1008
xusb0:  resetting port18, retry=0
xusb0:  hubd_reset_port: port=18
usbai:  usb_pipe_sync_ctrl_xfer: ph=0xfffffe5972bad5a8
        setup = 0x23 0x3 0x4 0x12 0x0 uf = 0x0
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usb_alloc_ctrl_req: dip=0xfffffe5957e072e8, wlen=0x0, flags=0x100
usba:   usba_add_to_list: head=0xfffffe5972badde8 element=0xfffffe59815c9cf0 count=1
usbai:  usba_req_wrapper_alloc: wrp = 0xfffffe59815c9cc0
usbai:  usb_alloc_ctrl_req: ctrl_req = 0xfffffe59815c9d50
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usb_pipe_ctrl_xfer: req=0xfffffe59815c9d50, wrp=0xfffffe59815c9cc0
        setup = 0x23 0x3 0x4 0x12 0x0 uf=0x100
usbai:  usba_check_req: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9d50 flags=0x100
usbai:  usba_check_req: attrs = 0x12 flags=0x101
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<idle> new=<active> ref=2 req=1
xhci0:  usba_hcdi_cb: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9d50 state=2 ref=2 cnt=1 cr=0
usba:   usba_add_to_list: head=0xfffffe5957dd1488 element=0xfffffe59815c9cc0 count=1
usbai:  usba_async_ph_req: ph_data=0xfffffe5957dd13e8 func=0xfffffffff7ee9d10, arg=0xfffffe5957dd13e8 flag=0x0
xhci0:  hcdi_cb_thread: ph_data=0xfffffe5957dd13e8 ref=3
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0xfffffe59815c9cc0 cnt=0
xhci0:  hcdi_do_cb: wrp=0xfffffe59815c9cc0 cr=0x0
usbai:  usba_req_normal_cb: ph_data=0xfffffe5957dd13e8 state=2 wrp=0xfffffe59815c9cc0 ref=3 req=1
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<active> new=<idle> ref=3 req=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd13f0 el=0x0 cnt=0
usbai:  usba_start_next_req done: ph_data=0xfffffe5957dd13e8 state=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0x0 cnt=0
xhci0:  hcdi_cb_thread done: ph_data=0xfffffe5957dd13e8
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=3
usbai:  usba_release_ph_data: req_count=0
usbai:  usba_pipe_sync_wait: ph_data=0xfffffe5957dd13e8 cr=0x0
usbai:  usb_pipe_ctrl_xfer: rval=0x0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usba_release_ph_data: req_count=0
usbai:  req=0xfffffe59815c9d50, cr=<no errors detected> cb_flags=<callback processed> data=0x0 rval=<success>
usbai:  usb_free_ctrl_req: req = 0xfffffe59815c9d50
usbai:  usba_req_wrapper_free: wrp=0xfffffe59815c9cc0
usba:   usba_rm_from_list: head=0xfffffe5957dd13f0 element=0xfffffe59815c9cc0 count=0
usba:   usba_rm_from_list: head=0xfffffe5972badde8 element=0xfffffe59815c9cf0 count=1
usba:   usba_rm_from_list success: head=0xfffffe5972badde8 element=0xfffffe59815c9cf0 cnt=0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usba_release_ph_data: req_count=0
xusb0:  waiting on cv for reset completion
xusb0:  start polling: always=1 dev_state=1 pipe_state=2
        thread=1 ep1_ph=0xfffffe5972bad960
xusb0:  start polling requested
usbai:  usb_alloc_intr_req: dip=0xfffffe5957e072e8, len=0x0, flags=0x100
usba:   usba_add_to_list: head=0xfffffe5972badde8 element=0xfffffe59815c9cf0 count=1
usbai:  usba_req_wrapper_alloc: wrp = 0xfffffe59815c9cc0
usbai:  usb_alloc_intr_req: intr_req=0xfffffe59815c9d50
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad960 state=1 ref=1
usbai:  usb_pipe_intr_req: req=0xfffffe59815c9d50 uf=0x100
usbai:  usba_check_req: ph_data=0xfffffe5957dd1100 req=0xfffffe59815c9d50 flags=0x100
usbai:  usba_check_req: attrs = 0x13 flags=0x100
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd1100 old=<idle> new=<active> ref=1 req=0
usbai:  usb_alloc_intr_req: dip=0xfffffe5957e072e8, len=0x4, flags=0x0
usba:   usba_add_to_list: head=0xfffffe5972badde8 element=0xfffffe59815c9b00 count=2
usbai:  usba_req_wrapper_alloc: wrp = 0xfffffe59815c9ad0
usbai:  usb_alloc_intr_req: intr_req=0xfffffe59815c9b60
xhci0:  usba_hcdi_cb: ph_data=0xfffffe5957dd1100 req=0xfffffe59815c9b60 state=2 ref=1 cnt=2 cr=0
usba:   usba_add_to_list: head=0xfffffe5957dd11a0 element=0xfffffe59815c9ad0 count=1
usbai:  usba_async_ph_req: ph_data=0xfffffe5957dd1100 func=0xfffffffff7ee9d10, arg=0xfffffe5957dd1100 flag=0x0
usbai:  usb_pipe_intr_req: rval=0x0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad960 state=2 ref=1
usbai:  usba_release_ph_data: req_count=2
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad960 state=2 ref=1
usbai:  usb_pipe_get_state: ph_data=0xfffffe5957dd1100 uf=0x100
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad960 state=2 ref=1
usbai:  usba_release_ph_data: req_count=2
xusb0:  start polling request 0xfffffe59815c9d50
xhci0:  hcdi_cb_thread: ph_data=0xfffffe5957dd1100 ref=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd11a0 el=0xfffffe59815c9ad0 cnt=0
xhci0:  hcdi_do_cb: wrp=0xfffffe59815c9ad0 cr=0x0
usbai:  usba_req_normal_cb: ph_data=0xfffffe5957dd1100 state=2 wrp=0xfffffe59815c9ad0 ref=1 req=2
usbai:  usba_req_set_cb_flags: wrp=0xfffffe59815c9ad0 cb-flags=0x0
xusb0:  hubd_read_cb: ph=0xfffffe5972bad960 req=0xfffffe59815c9b60
xusb0:  port change=0x7f80000 port_reset_wait=0x40000
usbai:  usb_free_intr_req: req = 0xfffffe59815c9b60
usbai:  usba_req_wrapper_free: wrp=0xfffffe59815c9ad0
usba:   usba_rm_from_list: head=0xfffffe5957dd1108 element=0xfffffe59815c9ad0 count=0
usba:   usba_rm_from_list: head=0xfffffe5972badde8 element=0xfffffe59815c9b00 count=2
usba:   usba_rm_from_list success: head=0xfffffe5972badde8 element=0xfffffe59815c9b00 cnt=1
xusb0:  hubd_stop_polling:
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad960 state=2 ref=2
usbai:  usba_pipe_stop_intr_polling: flags=0x100
usbai:  usba_pipe_setup_func_call: ph_impl=0xfffffe5972bad960, func=0xfffffffff7f04cd0
usba:   usba_rm_first_from_list: head=0xfffffe5957dd11a0 el=0x0 cnt=0
xhci0:  hcdi_cb_thread done: ph_data=0xfffffe5957dd1100
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad960 state=2 ref=2
usbai:  usba_release_ph_data: req_count=1
usbai:  usba_pipe_sync_stop_intr_polling: flags=0x100
xhci0:  usba_hcdi_cb: ph_data=0xfffffe5957dd1100 req=0xfffffe59815c9d50 state=2 ref=1 cnt=1 cr=16
usba:   usba_add_to_list: head=0xfffffe5957dd11a0 element=0xfffffe59815c9cc0 count=1
usbai:  usba_async_ph_req: ph_data=0xfffffe5957dd1100 func=0xfffffffff7ee9d10, arg=0xfffffe5957dd1100 flag=0x0
usbai:  usba_drain_cbs: ph_data=0xfffffe5957dd1100 ref=1 req=1 cb=0x0 cr=16
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1108 el=0x0 cnt=0
xhci0:  hcdi_cb_thread: ph_data=0xfffffe5957dd1100 ref=2
usba:   usba_rm_first_from_list: head=0xfffffe5957dd11a0 el=0xfffffe59815c9cc0 cnt=0
xhci0:  hcdi_do_cb: wrp=0xfffffe59815c9cc0 cr=0x10
xhci0:  exception callback handling: attrs=0x13
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd1100 old=<active> new=<idle> ref=2 req=1
usbai:  usba_req_exc_cb: xhci0: ph_data=0xfffffe5957dd1100 (ep81) state=1 wrp=0xfffffe59815c9cc0 ref=2 reqcnt=1 cr=16
usbai:  usba_req_set_cb_flags: wrp=0xfffffe59815c9cc0 cb-flags=0x0
xusb0:  hubd_exception_cb: req=0xfffffe59815c9d50 cr=16 data=0x0 cb_flags=0x0
xusb0:  hubd_pm_busy_component: 0
usbai:  usb_free_intr_req: req = 0xfffffe59815c9d50
usbai:  usba_req_wrapper_free: wrp=0xfffffe59815c9cc0
usba:   usba_rm_from_list: head=0xfffffe5957dd1108 element=0xfffffe59815c9cc0 count=0
usba:   usba_rm_from_list: head=0xfffffe5972badde8 element=0xfffffe59815c9cf0 count=1
usba:   usba_rm_from_list success: head=0xfffffe5972badde8 element=0xfffffe59815c9cf0 cnt=0
xusb0:  hubd_pm_idle_component: 0
usba:   usba_rm_first_from_list: head=0xfffffe5957dd11a0 el=0x0 cnt=0
xhci0:  hcdi_cb_thread done: ph_data=0xfffffe5957dd1100
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad960 state=1 ref=2
usbai:  usba_release_ph_data: req_count=0
usbai:  usba_drain_cbs done: ph_data=0xfffffe5957dd1100 ref=1 req=0
usbai:  usba_pipe_sync_stop_intr_polling: rval=0x0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad960 state=1 ref=1
usbai:  usba_release_ph_data: req_count=0
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad960 state=1 ref=1
usbai:  usb_pipe_get_state: ph_data=0xfffffe5957dd1100 uf=0x100
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad960 state=1 ref=1
usbai:  usba_release_ph_data: req_count=0
usbai:  usb_pipe_sync_ctrl_xfer: ph=0xfffffe5972bad5a8
        setup = 0xa3 0x0 0x0 0x12 0x4 uf = 0x0
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usb_alloc_ctrl_req: dip=0xfffffe5957e072e8, wlen=0x4, flags=0x100
usba:   usba_add_to_list: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 count=1
usbai:  usba_req_wrapper_alloc: wrp = 0xfffffe59815c99d8
usbai:  usb_alloc_ctrl_req: ctrl_req = 0xfffffe59815c9a68
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usb_pipe_ctrl_xfer: req=0xfffffe59815c9a68, wrp=0xfffffe59815c99d8
        setup = 0xa3 0x0 0x0 0x12 0x4 uf=0x100
usbai:  usba_check_req: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9a68 flags=0x100
usbai:  usba_check_req: attrs = 0x12 flags=0x101
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<idle> new=<active> ref=2 req=1
xhci0:  usba_hcdi_cb: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9a68 state=2 ref=2 cnt=1 cr=0
usba:   usba_add_to_list: head=0xfffffe5957dd1488 element=0xfffffe59815c99d8 count=1
usbai:  usba_async_ph_req: ph_data=0xfffffe5957dd13e8 func=0xfffffffff7ee9d10, arg=0xfffffe5957dd13e8 flag=0x0
xhci0:  hcdi_cb_thread: ph_data=0xfffffe5957dd13e8 ref=3
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0xfffffe59815c99d8 cnt=0
xhci0:  hcdi_do_cb: wrp=0xfffffe59815c99d8 cr=0x0
usbai:  usba_req_normal_cb: ph_data=0xfffffe5957dd13e8 state=2 wrp=0xfffffe59815c99d8 ref=3 req=1
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<active> new=<idle> ref=3 req=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd13f0 el=0x0 cnt=0
usbai:  usba_start_next_req done: ph_data=0xfffffe5957dd13e8 state=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0x0 cnt=0
xhci0:  hcdi_cb_thread done: ph_data=0xfffffe5957dd13e8
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=3
usbai:  usba_release_ph_data: req_count=0
usbai:  usba_pipe_sync_wait: ph_data=0xfffffe5957dd13e8 cr=0x0
usbai:  usb_pipe_ctrl_xfer: rval=0x0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usba_release_ph_data: req_count=0
usbai:  req=0xfffffe59815c9a68, cr=<no errors detected> cb_flags=<callback processed> data=0xfffffe598194f540 rval=<success>
usbai:  usb_free_ctrl_req: req = 0xfffffe59815c9a68
usbai:  usba_req_wrapper_free: wrp=0xfffffe59815c99d8
usba:   usba_rm_from_list: head=0xfffffe5957dd13f0 element=0xfffffe59815c99d8 count=0
usba:   usba_rm_from_list: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 count=1
usba:   usba_rm_from_list success: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 cnt=0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usba_release_ph_data: req_count=0
xusb0:  port18 reset inactive
xusb0:  clearing feature CFS_C_PORT_RESET
usbai:  usb_pipe_sync_ctrl_xfer: ph=0xfffffe5972bad5a8
        setup = 0x23 0x1 0x14 0x12 0x0 uf = 0x0
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usb_alloc_ctrl_req: dip=0xfffffe5957e072e8, wlen=0x0, flags=0x100
usba:   usba_add_to_list: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 count=1
usbai:  usba_req_wrapper_alloc: wrp = 0xfffffe59815c99d8
usbai:  usb_alloc_ctrl_req: ctrl_req = 0xfffffe59815c9a68
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usb_pipe_ctrl_xfer: req=0xfffffe59815c9a68, wrp=0xfffffe59815c99d8
        setup = 0x23 0x1 0x14 0x12 0x0 uf=0x100
usbai:  usba_check_req: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9a68 flags=0x100
usbai:  usba_check_req: attrs = 0x12 flags=0x101
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<idle> new=<active> ref=2 req=1
xhci0:  usba_hcdi_cb: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9a68 state=2 ref=2 cnt=1 cr=0
usba:   usba_add_to_list: head=0xfffffe5957dd1488 element=0xfffffe59815c99d8 count=1
usbai:  usba_async_ph_req: ph_data=0xfffffe5957dd13e8 func=0xfffffffff7ee9d10, arg=0xfffffe5957dd13e8 flag=0x0
xhci0:  hcdi_cb_thread: ph_data=0xfffffe5957dd13e8 ref=3
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0xfffffe59815c99d8 cnt=0
xhci0:  hcdi_do_cb: wrp=0xfffffe59815c99d8 cr=0x0
usbai:  usba_req_normal_cb: ph_data=0xfffffe5957dd13e8 state=2 wrp=0xfffffe59815c99d8 ref=3 req=1
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<active> new=<idle> ref=3 req=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd13f0 el=0x0 cnt=0
usbai:  usba_start_next_req done: ph_data=0xfffffe5957dd13e8 state=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0x0 cnt=0
xhci0:  hcdi_cb_thread done: ph_data=0xfffffe5957dd13e8
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=3
usbai:  usba_release_ph_data: req_count=0
usbai:  usba_pipe_sync_wait: ph_data=0xfffffe5957dd13e8 cr=0x0
usbai:  usb_pipe_ctrl_xfer: rval=0x0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usba_release_ph_data: req_count=0
usbai:  req=0xfffffe59815c9a68, cr=<no errors detected> cb_flags=<callback processed> data=0x0 rval=<success>
usbai:  usb_free_ctrl_req: req = 0xfffffe59815c9a68
usbai:  usba_req_wrapper_free: wrp=0xfffffe59815c99d8
usba:   usba_rm_from_list: head=0xfffffe5957dd13f0 element=0xfffffe59815c99d8 count=0
usba:   usba_rm_from_list: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 count=1
usba:   usba_rm_from_list success: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 cnt=0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usba_release_ph_data: req_count=0
xusb0:  hubd_enable_port: port=18
usbai:  usb_pipe_sync_ctrl_xfer: ph=0xfffffe5972bad5a8
        setup = 0x23 0x3 0x1 0x12 0x0 uf = 0x0
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usb_alloc_ctrl_req: dip=0xfffffe5957e072e8, wlen=0x0, flags=0x100
usba:   usba_add_to_list: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 count=1
usbai:  usba_req_wrapper_alloc: wrp = 0xfffffe59815c99d8
usbai:  usb_alloc_ctrl_req: ctrl_req = 0xfffffe59815c9a68
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usb_pipe_ctrl_xfer: req=0xfffffe59815c9a68, wrp=0xfffffe59815c99d8
        setup = 0x23 0x3 0x1 0x12 0x0 uf=0x100
usbai:  usba_check_req: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9a68 flags=0x100
usbai:  usba_check_req: attrs = 0x12 flags=0x101
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<idle> new=<active> ref=2 req=1
xhci0:  usba_hcdi_cb: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9a68 state=2 ref=2 cnt=1 cr=0
usba:   usba_add_to_list: head=0xfffffe5957dd1488 element=0xfffffe59815c99d8 count=1
usbai:  usba_async_ph_req: ph_data=0xfffffe5957dd13e8 func=0xfffffffff7ee9d10, arg=0xfffffe5957dd13e8 flag=0x0
xhci0:  hcdi_cb_thread: ph_data=0xfffffe5957dd13e8 ref=3
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0xfffffe59815c99d8 cnt=0
xhci0:  hcdi_do_cb: wrp=0xfffffe59815c99d8 cr=0x0
usbai:  usba_req_normal_cb: ph_data=0xfffffe5957dd13e8 state=2 wrp=0xfffffe59815c99d8 ref=3 req=1
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<active> new=<idle> ref=3 req=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd13f0 el=0x0 cnt=0
usbai:  usba_start_next_req done: ph_data=0xfffffe5957dd13e8 state=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0x0 cnt=0
xhci0:  hcdi_cb_thread done: ph_data=0xfffffe5957dd13e8
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=3
usbai:  usba_release_ph_data: req_count=0
usbai:  usba_pipe_sync_wait: ph_data=0xfffffe5957dd13e8 cr=0x0
usbai:  usb_pipe_ctrl_xfer: rval=0x0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usba_release_ph_data: req_count=0
usbai:  req=0xfffffe59815c9a68, cr=<no errors detected> cb_flags=<callback processed> data=0x0 rval=<success>
usbai:  usb_free_ctrl_req: req = 0xfffffe59815c9a68
usbai:  usba_req_wrapper_free: wrp=0xfffffe59815c99d8
usba:   usba_rm_from_list: head=0xfffffe5957dd13f0 element=0xfffffe59815c99d8 count=0
usba:   usba_rm_from_list: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 count=1
usba:   usba_rm_from_list success: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 cnt=0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usba_release_ph_data: req_count=0
xusb0:  enabling port done
xusb0:  hubd_determine_port_status: port=18, state=0x103 ack=0x0
usbai:  usb_pipe_sync_ctrl_xfer: ph=0xfffffe5972bad5a8
        setup = 0xa3 0x0 0x0 0x12 0x4 uf = 0x0
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usb_alloc_ctrl_req: dip=0xfffffe5957e072e8, wlen=0x4, flags=0x100
usba:   usba_add_to_list: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 count=1
usbai:  usba_req_wrapper_alloc: wrp = 0xfffffe59815c99d8
usbai:  usb_alloc_ctrl_req: ctrl_req = 0xfffffe59815c9a68
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usb_pipe_ctrl_xfer: req=0xfffffe59815c9a68, wrp=0xfffffe59815c99d8
        setup = 0xa3 0x0 0x0 0x12 0x4 uf=0x100
usbai:  usba_check_req: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9a68 flags=0x100
usbai:  usba_check_req: attrs = 0x12 flags=0x101
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<idle> new=<active> ref=2 req=1
xhci0:  usba_hcdi_cb: ph_data=0xfffffe5957dd13e8 req=0xfffffe59815c9a68 state=2 ref=2 cnt=1 cr=0
usba:   usba_add_to_list: head=0xfffffe5957dd1488 element=0xfffffe59815c99d8 count=1
usbai:  usba_async_ph_req: ph_data=0xfffffe5957dd13e8 func=0xfffffffff7ee9d10, arg=0xfffffe5957dd13e8 flag=0x0
xhci0:  hcdi_cb_thread: ph_data=0xfffffe5957dd13e8 ref=3
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0xfffffe59815c99d8 cnt=0
xhci0:  hcdi_do_cb: wrp=0xfffffe59815c99d8 cr=0x0
usbai:  usba_req_normal_cb: ph_data=0xfffffe5957dd13e8 state=2 wrp=0xfffffe59815c99d8 ref=3 req=1
usbai:  usba_pipe_new_state: ph_data=0xfffffe5957dd13e8 old=<active> new=<idle> ref=3 req=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd13f0 el=0x0 cnt=0
usbai:  usba_start_next_req done: ph_data=0xfffffe5957dd13e8 state=1
usba:   usba_rm_first_from_list: head=0xfffffe5957dd1488 el=0x0 cnt=0
xhci0:  hcdi_cb_thread done: ph_data=0xfffffe5957dd13e8
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=3
usbai:  usba_release_ph_data: req_count=0
usbai:  usba_pipe_sync_wait: ph_data=0xfffffe5957dd13e8 cr=0x0
usbai:  usb_pipe_ctrl_xfer: rval=0x0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=2
usbai:  usba_release_ph_data: req_count=0
usbai:  req=0xfffffe59815c9a68, cr=<no errors detected> cb_flags=<callback processed> data=0xfffffe598194f540 rval=<success>
usbai:  usb_free_ctrl_req: req = 0xfffffe59815c9a68
usbai:  usba_req_wrapper_free: wrp=0xfffffe59815c99d8
usba:   usba_rm_from_list: head=0xfffffe5957dd13f0 element=0xfffffe59815c99d8 count=0
usba:   usba_rm_from_list: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 count=1
usba:   usba_rm_from_list success: head=0xfffffe5972badde8 element=0xfffffe59815c9a08 cnt=0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972bad5a8 state=1 ref=1
usbai:  usba_release_ph_data: req_count=0
xusb0:  port18 status=0x1103, change=0x0
xusb0:  port18 connected
xusb0:  port18 enabled
xusb0:  port18 not suspended
xusb0:  port18 reset inactive
xusb0:  port18 power on
xusb0:  new port18 state 0x103
xusb0:  creating child port18, status=0x1103 port status=0x4
xusb0:  hubd_setdevaddr: port=18
usbai:  usb_pipe_close: ph=0xfffffe5972baf5a8
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972baf5a8 state=0 ref=0
usbai:  usba_pipe_setup_func_call: ph_impl=0xfffffe5972baf5a8, func=0xfffffffff7f018a0
usbai:  usba_pipe_sync_close: dip=0xfffffe59616e22f0 ph_data=0x0 state=0 ref=1
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972baf5a8 state=0 ref=1
xusb0:  hubd_setdevconfig: port=18
usbai:  usb_pipe_open:
        dip=0xfffffe59616e22f0 ep_xdesc=0x0 pp=0x0 uf=0x102 ph=0xfffffe007977c9c0
usbai:  usba_init_pipe_handle: usba_device=0xfffffe5972baf580 ep=0x0
usbai:  adjusting max packet size from 8 to 9
usbai:  usba_pipe_new_state: ph_data=0xfffffe59815c99d8 old=<closed> new=<idle> ref=0 req=0
usbai:  usb_pipe_open: ph_impl=0xfffffe5972baf5a8 (0xfffffe59815c99d8)
usbai:  usb_pipe_sync_ctrl_xfer: ph=0xfffffe5972baf5a8
        setup = 0x0 0x9 0x1 0x0 0x0 uf = 0x0
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972baf5a8 state=1 ref=1
usbai:  usb_alloc_ctrl_req: dip=0xfffffe59616e22f0, wlen=0x0, flags=0x100
usba:   usba_add_to_list: head=0xfffffe5972bafde8 element=0xfffffe5980f95908 count=1
usbai:  usba_req_wrapper_alloc: wrp = 0xfffffe5980f958d8
usbai:  usb_alloc_ctrl_req: ctrl_req = 0xfffffe5980f95968
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972baf5a8 state=1 ref=2
usbai:  usb_pipe_ctrl_xfer: req=0xfffffe5980f95968, wrp=0xfffffe5980f958d8
        setup = 0x0 0x9 0x1 0x0 0x0 uf=0x100
usbai:  usba_check_req: ph_data=0xfffffe59815c99d8 req=0xfffffe5980f95968 flags=0x100
usbai:  usba_check_req: attrs = 0x12 flags=0x101
usbai:  usba_pipe_new_state: ph_data=0xfffffe59815c99d8 old=<idle> new=<active> ref=2 req=1
xhci0:  usba_hcdi_cb: ph_data=0xfffffe59815c99d8 req=0xfffffe5980f95968 state=2 ref=2 cnt=1 cr=5
usba:   usba_add_to_list: head=0xfffffe59815c9a78 element=0xfffffe5980f958d8 count=1
usbai:  usba_async_ph_req: ph_data=0xfffffe59815c99d8 func=0xfffffffff7ee9d10, arg=0xfffffe59815c99d8 flag=0x0
xhci0:  hcdi_cb_thread: ph_data=0xfffffe59815c99d8 ref=3
usba:   usba_rm_first_from_list: head=0xfffffe59815c9a78 el=0xfffffe5980f958d8 cnt=0
xhci0:  hcdi_do_cb: wrp=0xfffffe5980f958d8 cr=0x5
xhci0:  exception callback handling: attrs=0x12
usbai:  usba_pipe_new_state: ph_data=0xfffffe59815c99d8 old=<active> new=<error> ref=3 req=1
xhci0:  hcdi_autoclearing: wrp=0xfffffe5980f958d8
usbai:  usba_pipe_clear: ph_data=0xfffffe59815c99d8
usbai:  no flushing on default pipe!
usbai:  usba_pipe_new_state: ph_data=0xfffffe59815c99d8 old=<error> new=<idle> ref=3 req=1
usbai:  usba_req_set_cb_flags: wrp=0xfffffe5980f958d8 cb-flags=0x10
usbai:  usba_req_exc_cb: scsa2usb0: ph_data=0xfffffe59815c99d8 (ep0) state=1 wrp=0xfffffe5980f958d8 ref=3 reqcnt=1 cr=5
usbai:  usba_req_set_cb_flags: wrp=0xfffffe5980f958d8 cb-flags=0x0
usba:   usba_rm_first_from_list: head=0xfffffe59815c99e0 el=0x0 cnt=0
usbai:  usba_start_next_req done: ph_data=0xfffffe59815c99d8 state=1
usba:   usba_rm_first_from_list: head=0xfffffe59815c9a78 el=0x0 cnt=0
xhci0:  hcdi_cb_thread done: ph_data=0xfffffe59815c99d8
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972baf5a8 state=1 ref=3
usbai:  usba_release_ph_data: req_count=0
usbai:  usba_pipe_sync_wait: ph_data=0xfffffe59815c99d8 cr=0x5
usbai:  usb_pipe_ctrl_xfer: rval=0xffffffff
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972baf5a8 state=1 ref=2
usbai:  usba_release_ph_data: req_count=0
usbai:  req=0xfffffe5980f95968, cr=<Device not responding> cb_flags=<callback processed> data=0x0 rval=<failure>
usbai:  usb_free_ctrl_req: req = 0xfffffe5980f95968
usbai:  usba_req_wrapper_free: wrp=0xfffffe5980f958d8
usba:   usba_rm_from_list: head=0xfffffe59815c99e0 element=0xfffffe5980f958d8 count=0
usba:   usba_rm_from_list: head=0xfffffe5972bafde8 element=0xfffffe5980f95908 count=1
usba:   usba_rm_from_list success: head=0xfffffe5972bafde8 element=0xfffffe5980f95908 cnt=0
usbai:  usba_release_ph_data: ph_impl=0xfffffe5972baf5a8 state=1 ref=1
usbai:  usba_release_ph_data: req_count=0
xusb0:  hubd_setdevconfig: set device config failed: cr=5 cb_fl=0x10 rval=-1
usbai:  usba_persistent_pipe_close: usba_device=0xfffffe5972baf580
usbai:  usb_pipe_close: ph=0xfffffe5972baf5a8
usbai:  usba_hold_ph_data: ph_impl=0xfffffe5972baf5a8 state=1 ref=1
usbai:  usba_pipe_setup_func_call: ph_impl=0xfffffe5972baf5a8, func=0xfffffffff7f018a0
usbai:  usba_pipe_sync_close: dip=0xfffffe59616e22f0 ph_data=0xfffffe59815c99d8 state=1 ref=1
usbai:  usba_destroy_pipe_handle: ph_data=0xfffffe59815c99d8
usbai:  usba_destroy_pipe_handle: destroying ph_data=0xfffffe59815c99d8
xusb0:  hubd_post_event: port=18 event=DDI:DEVI_INSERT
usbai:  usba_persistent_pipe_open: usba_device=0xfffffe5972baf580
usbai:  usb_pipe_open:
        dip=0xfffffe59616e22f0 ep_xdesc=0xfffffe007977c8d0 pp=0xfffffe5972baf5c8 uf=0x102 ph=0xfffffe007977c940
usbai:  usba_persistent_pipe_open: ep_index=0, rval=-1
xusb0:  failed to reopen all pipes on reconnect
xusb0:  hubd_do_callback
>>>>

Actions #3

Updated by Carsten Grzemba 5 months ago

This is a little bit a little contradictory, zpool seems to be imported but system hung:

[31]>   ::spa -v
ADDR                 STATE NAME                                                
fffffe5972dde000    ACTIVE rpool-usb

    ADDR             STATE     AUX          DESCRIPTION                        
    fffffe597341e000 HEALTHY   -            root
    fffffe5973422000 HEALTHY   -              /dev/dsk/c4t0d0s1
[31]> :z
[31]> :c
NOTICE: driver scsa2usb attempting to open non-default of a USB 3.0 or newer device through usb_pipe_open(). scsa2usb must be updated to use usb_pipe_xopen() to work with USB device Intenso External USB 3.0. usba_device fffffe5972baf580 ep_xdesc fffffe007977c8d0
NOTICE: descriptor: flags 0, cmp 1, status 4
WARNING: Pool 'rpool-usb' has encountered an uncorrectable I/O failure and has been suspended; `zpool clear` will be required before the pool can be written to.
Actions #4

Updated by Carsten Grzemba 5 months ago

Is the stopped state of the XHCI device the reason for the hanging system?

[0]> ::usba_device
NAME            INST DIP              PATH                                      
xhci             0   fffffe5957e072e8 /pci@0,0/pci15d9,1b58@14
scsa2usb         0   fffffe59616e22f0 /pci@0,0/pci15d9,1b58@14/storage@12
hubd             0   fffffe597f477a28 /pci@0,0/pci15d9,1b58@14/hub@1
scsa2usb         1   fffffe597f477740 /pci@0,0/pci15d9,1b58@14/storage@b
[0]> ::xhci_device
Intenso - External USB 3.0
Port 18 | Slot 01 | # Endpoints 03
EP   Type       State      Head   Tail  
0    CONTROL    Stopped    0x34   0x34  
2    BULK IN    Stopped    0x9e   0x9e  
3    BULK OUT   Stopped    0x19   0x19  

Aspeed - USB Virtual Hub
Port 01 | Slot 02 | # Endpoints 01
EP   Type       State      Head   Tail  
0    CONTROL    Running    0x1d   0x1d  

Hama - SD Card Reader
Port 11 | Slot 03 | # Endpoints 01
EP   Type       State      Head   Tail  
0    CONTROL    Running    0x1d   0x1d  

Actions #5

Updated by Carsten Grzemba 5 months ago

I guess yes, the stopped XHCI device is the reason:

[ fffffe007977bf80 _resume_from_idle+0x12b() ]
  fffffe007977bfb0 swtch+0x17f()
  fffffe007977bfe0 cv_wait+0x89()
  fffffe007977c020 zfs`zio_wait+0xdb()
  fffffe007977c0d0 zfs`dmu_buf_hold_array_by_dnode+0x15d()
  fffffe007977c180 zfs`dmu_read_uio_dnode+0x54()
  fffffe007977c1d0 zfs`dmu_read_uio_dbuf+0x51()
  fffffe007977c270 zfs`zfs_read+0x178()
  fffffe007977c310 fop_read+0x115()
  fffffe007977c3f0 vn_rdwr+0x115()
  fffffe007977c440 kobj_is_compressed+0x56()
  fffffe007977c4a0 kobj_open_file+0x102()
  fffffe007977c510 kobj_open_path+0xe2()
  fffffe007977c540 kobj_path_exists+0x28()
  fffffe007977c5a0 mod_hold_installed_mod+0x4a()
  fffffe007977c620 modrload+0xfa()
  fffffe007977c640 modload+0x17()
  fffffe007977c690 mod_hold_dev_by_major+0x9f()
  fffffe007977c6c0 ndi_hold_driver+0x2c()
  fffffe007977c700 probe_node+0x4c()  
  fffffe007977c750 i_ndi_config_node+0x1a0()
  fffffe007977c780 i_ddi_attachchild+0x64()
  fffffe007977c7c0 devi_attach_node+0x8e()
  fffffe007977c840 config_immediate_children+0xe0()
  fffffe007977c8c0 ndi_busop_bus_config+0xb2()
  fffffe007977c9b0 usba`hubd_bus_config+0xbb()
  fffffe007977ca00 devi_config_common+0xcf()
  fffffe007977ca40 ndi_devi_config+0x3b()
  fffffe007977caa0 ndi_devi_online+0x226()
  fffffe007977cb60 usba`hubd_hotplug_thread+0x551()
  fffffe007977cc00 taskq_d_thread+0x12a()
  fffffe007977cc10 thread_start+0xb() 
stack pointer for thread fffffe007979ac20 (tq:system_taskq): fffffe007979a9f0
Actions #6

Updated by Carsten Grzemba 5 months ago

I see in the check expression in function usb_pipe_xopen the bcmp found a difference related to the default descriptor:

[24]> fffffe007977c8d0::print struct usb_ep_xdescr
{
    uex_version = 0x1
    uex_flags = 0 (0)
    uex_ep = {
        bLength = 0x7
        bDescriptorType = 0x5
        bEndpointAddress = 0
        bmAttributes = 0
        wMaxPacketSize = 0x9
        bInterval = 0
    }
    uex_ep_ss = {
        bLength = 0
        bDescriptorType = 0
        bMaxBurst = 0
        bmAttributes = 0
        wBytesPerInterval = 0
    }
}

The difference is the wMaxPacketSize 9 != 8

Actions #7

Updated by Carsten Grzemba 5 months ago

I see a disconnect on boot although there no physical disconnect of a USB device happens.

It seems it is initiated by hubd_hotplug_thread()

This is the extract of the usb_debug_buf:

hubd_hotplug_thread(arg)
5768:xusb0:  hubd_hotplug_thread: port 18 mask=0x40000 change=0x7fc0000 connected=0x1

calls hubd_determine_port_status()
5769:xusb0:  hubd_determine_port_status: port=18, state=0x103 ack=0xff
5809:xusb0:  port18 status=0x1103, change=0x0
5810:xusb0:  port18 connected   
5811:xusb0:  port18 enabled     
5812:xusb0:  port18 not suspended
5813:xusb0:  port18 reset inactive
5814:xusb0:  port18 power on
5815:xusb0:  new port18 state 0x103
hubd_determine_port_status returns to hubd_hotplug_thread(arg)

5816:xusb0:  handle port 18:
             new status=0x1103 change=0x0 was_conn=0x1

5818:xusb0:  hubd_post_event: port=18 event=DDI:DEVI_REMOVE (0, USBA_EVENT_TAG_HOT_REMOVAL)
5894:xusb0:  resetting port18, retry=0

Although there seems to be no status change, the hubd_hotplug_thread initiate the disconnect because the attach_flg set.

Actions #8

Updated by Carsten Grzemba 4 months ago

This change makes things a little bit better, but it is still not a solution:

diff --git a/usr/src/uts/common/io/usb/usba/usbai_pipe_mgmt.c b/usr/src/uts/common/io/usb/usba/usbai_pipe_mgmt.c

index 1a567609f1..2001ec2024 100644
--- a/usr/src/uts/common/io/usb/usba/usbai_pipe_mgmt.c
+++ b/usr/src/uts/common/io/usb/usba/usbai_pipe_mgmt.c
@@ -1742,12 +1734,11 @@ usba_persistent_pipe_open(usba_device_t *usba_device)
                                mutex_exit(&ph_impl->usba_ph_mutex);
                                mutex_exit(&usba_device->usb_mutex);

-                           rval = usb_pipe_open(ph_impl->usba_ph_dip,
-                               &ph_impl->usba_ph_ep,
-                               &ph_impl->usba_ph_policy,
-                               USB_FLAGS_SLEEP | USBA_FLAGS_PRIVILEGED,
-                               &pipe_handle);
-
+                         rval = usb_pipe_xopen(ph_impl->usba_ph_dip,
+                                     &ph_impl->usba_ph_data->p_xep,
+                                     &ph_impl->usba_ph_policy,
+                                     USB_FLAGS_SLEEP | USBA_FLAGS_PRIVILEGED,
+                                     &pipe_handle);
                                USB_DPRINTF_L3(DPRINT_MASK_USBAI,
                                    usbai_log_handle,
                                    "usba_persistent_pipe_open: " 

There is now the situation that the USB 3.0 disk works as long the USB hub is initialized by BIOS. If the control will take over by the xhci driver the USB 3.0 device remains in state stopped

[0]> ::xhci_device
Intenso - External USB 3.0
Port 17 | Slot 01 | # Endpoints 03
EP   Type       State      Head   Tail  
0    CONTROL    Stopped    0x93   0x93  
2    BULK IN    Stopped    0xe9   0xe9  
3    BULK OUT   Stopped    0xc4   0xc4  

Unknown Manufacturer - Unknown Product
Port 14 | Slot 02 | # Endpoints 01
EP   Type       State      Head   Tail  
0    CONTROL    Running    0xb    0xb   
Actions #9

Updated by Carsten Grzemba 4 months ago

Beside the change in usba_persistent_pipe_open(),
I could manage to boot from USB 3 disk if I hacked the usb_hotplug_thread in that kind, that I removed there the call of

hubd_post_event(hubd, port, USBA_EVENT_TAG_HOT_REMOVAL);

Than the disk stays connected at boot and booting has finally success.

USB 3.0 device (usb152d,579) operating at super speed (USB 3.x) on USB 3.0 root hub: storage@11, scsa2usb0 at bus address 2
Intenso External USB 3.0 20151231415DD
scsa2usb0 is /pci@0,0/pci1028,912@14/storage@11
/pci@0,0/pci1028,912@14/storage@11 (scsa2usb0) online
sd0 at scsa2usb0: target 0 lun 0
sd0 is /pci@0,0/pci1028,912@14/storage@11/disk@0,0
/pci@0,0/pci1028,912@14/storage@11/disk@0,0 (sd0) online
root on rpool/ROOT/omnios-r151044 fstype zfs

The part of code seems to be from change

$ git show 6c7181fcaad
commit 6c7181fcaad89ce44f07da9b0db9eef1f29a37b8
Author: sl147100 <none@none>
Date:   Wed Aug 30 21:53:38 2006 -0700

    6358718 Keyboard unusable after halting the system if connected to front usb + output/input set to screen/KB
    6390004 combination USB keyboard and USB hub is not recognized as keyboard

I guess it is difficult to find some one who can explain what the idea of the code part, that we can fix the problem in a clean way?

Actions #10

Updated by Electric Monk 3 months ago

  • Gerrit CR set to 2730
Actions

Also available in: Atom PDF