Summary: | 12.4-PRERELEASE fails to attach to one external USB drive: CAM status 0x44 (internal target failure) | ||
---|---|---|---|
Product: | Base System | Reporter: | ota |
Component: | usb | Assignee: | freebsd-usb (Nobody) <usb> |
Status: | Closed Unable to Reproduce | ||
Severity: | Affects Only Me | CC: | grahamperrin |
Priority: | --- | Keywords: | needs-qa |
Version: | 12.3-STABLE | ||
Hardware: | amd64 | ||
OS: | Any | ||
URL: | https://github.com/freebsd/freebsd-src/blob/main/sys/cam/scsi/scsi_da.c |
Description
ota
2022-10-19 02:48:01 UTC
From comments at 4899b94bacfc5a0fdd8bfa05aacf2f3c8370d6e1 <https://codeberg.org/FreeBSD/freebsd-src/src/commit/4899b94bacfc5a0fdd8bfa05aacf2f3c8370d6e1/sys/cam/scsi/scsi_da.c#L4708-L4718> (2018-05-01): > … "Internal Target Failure" (0x44) is also special and typically means that > the device is a SATA drive behind a SATL translation that's fallen into a > terminally fatal state. If required, there's a hint at bug 247727 comment 1 about use of usbdump(8). I tested on 12.4-PRERELEASE i386 again and this detects the same device, okay. I will check the link for USB commands. I got below output. I captured some of these as below: # usbdump -i usbus0 -f 2 -s 65536 -vvv 23:38:13.191671 usbus0.2 DONE-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=4,IVAL=0,ERR= 0 frame[0] WRITE 8 bytes frame[1] READ 4 bytes 0000 00 01 00 00 -- -- -- -- -- -- -- -- -- -- -- -- |.... | flags 0x10 <PROXY_BUFFER|0> status 0xea1a1 <OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CUR R_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0> 23:38:13.191679 usbus0.2 SUBM-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 A3 00 00 00 04 00 04 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 4 bytes flags 0x10 <PROXY_BUFFER|0> status 0xea1a3 <OPEN|TRANSFERRING|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|B DMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0> 23:38:13.191797 usbus0.2 DONE-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=4,IVAL=0,ERR= 0 frame[0] WRITE 8 bytes frame[1] READ 4 bytes 0000 00 01 00 00 -- -- -- -- -- -- -- -- -- -- -- -- |.... | flags 0x10 <PROXY_BUFFER|0> status 0xca1a1 <OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CAN _CANCEL_IMMED|DOING_CALLBACK|0> 23:38:13.191803 usbus0.2 SUBM-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 A3 00 00 00 05 00 04 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 4 bytes flags 0x10 <PROXY_BUFFER|0> status 0xca1a3 <OPEN|TRANSFERRING|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|B DMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0> 23:38:13.191921 usbus0.2 DONE-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=4,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 4 bytes 0000 03 05 00 00 -- -- -- -- -- -- -- -- -- -- -- -- |.... | flags 0x10 <PROXY_BUFFER|0> status 0xea1a1 <OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0> 23:38:13.191928 usbus0.2 SUBM-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 A3 00 00 00 06 00 04 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 4 bytes flags 0x10 <PROXY_BUFFER|0> status 0xea1a3 <OPEN|TRANSFERRING|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0> 23:38:13.192044 usbus0.2 DONE-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=4,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 4 bytes 0000 00 01 00 00 -- -- -- -- -- -- -- -- -- -- -- -- |.... | flags 0x10 <PROXY_BUFFER|0> status 0xca1a1 <OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0> I started binary-search to find a problem commit with a different build space. However, kernel detects the USB device okay for all revisions I tested. I decided to clean re-build kernel and clean build version detects the USB device fine as well. It looks some broken object file caused the issue. |