Bug #15270
openBoot from USB 3.0 HD stops in usb_pipe_xopen with notice "driver scsa2usb attempting to open non-default of a USB 3.0 ..."
0%
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()
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.
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 >>>>
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.
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
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
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
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.
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
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?