genodelabs / genode

Genode OS Framework
https://genode.org/
Other
1.04k stars 246 forks source link

usb: USB passthrough breaks UAS #5041

Open atopia opened 8 months ago

atopia commented 8 months ago

Passing through a LaCi STLP2000400 external harddrive to a Linux VM in VirtualBox breaks the drive's UAS mode, the fallback usb-storage mode (MSC) works.

As a workaround, the fallback mode can be forced in the guest by creating /etc/modprobe.d/no-uas.conf with options usb-storage quirks=059f:1105:u.

On native Linux, switching from theusb-storage fallback to uas works on the device:

kernel: usb 2-1: new SuperSpeed USB device number 7 using xhci_hcd
kernel: usb 2-1: New USB device found, idVendor=059f, idProduct=1105, bcdDevice= 0.01
kernel: usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
kernel: usb 2-1: Product: Mobile Drive
kernel: usb 2-1: Manufacturer: LaCie
kernel: usb 2-1: SerialNumber: 00000000NL711CEV
kernel: usb 2-1: UAS is ignored for this device, using usb-storage instead
kernel: usb-storage 2-1:1.0: USB Mass Storage device detected
kernel: usb-storage 2-1:1.0: Quirks match for vid 059f pid 1105: 800000
kernel: scsi host0: usb-storage 2-1:1.0
kernel: usbcore: registered new interface driver usb-storage
kernel: usbcore: registered new interface driver uas
kernel: scsi 0:0:0:0: Direct-Access     LaCie    Mobile Drive     0001 PQ: 0 ANSI: 6
kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
kernel: sd 0:0:0:0: [sda] Spinning up disk...
kernel: ....ready
kernel: sd 0:0:0:0: [sda] 3907029167 512-byte logical blocks: (2.00 TB/1.82 TiB)
kernel: sd 0:0:0:0: [sda] Write Protect is off
kernel: sd 0:0:0:0: [sda] Mode Sense: 4f 00 00 00
kernel: sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
kernel:  sda: sda1
kernel: sd 0:0:0:0: [sda] Attached SCSI disk
kernel: EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
kernel: EXT4-fs (sda1): warning: mounting unchecked fs, running e2fsck is recommended
kernel: EXT4-fs (sda1): mounted filesystem d9b2ede0-ee86-11e7-b4dc-75e9ae472bc7 r/w without journal. Quota mode: none.
kernel: EXT4-fs (sda1): unmounting filesystem d9b2ede0-ee86-11e7-b4dc-75e9ae472bc7.
kernel: usbcore: deregistering interface driver uas
kernel: usbcore: deregistering interface driver usb-storage
kernel: sd 0:0:0:0: [sda] Synchronizing SCSI cache
kernel: usbcore: registered new interface driver usb-storage
kernel: scsi host0: uas
kernel: usbcore: registered new interface driver uas
kernel: scsi 0:0:0:0: Direct-Access     LaCie    Mobile Drive     0001 PQ: 0 ANSI: 6
kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
kernel: sd 0:0:0:0: [sda] 3907029167 512-byte logical blocks: (2.00 TB/1.82 TiB)
kernel: sd 0:0:0:0: [sda] 4096-byte physical blocks
kernel: sd 0:0:0:0: [sda] Write Protect is off
kernel: sd 0:0:0:0: [sda] Mode Sense: 4f 00 00 00
kernel: sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
kernel: sd 0:0:0:0: [sda] Preferred minimum I/O size 4096 bytes
kernel: sd 0:0:0:0: [sda] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
kernel:  sda: sda1
kernel: sd 0:0:0:0: [sda] Attached SCSI disk
kernel: EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
kernel: EXT4-fs (sda1): warning: mounting unchecked fs, running e2fsck is recommended
kernel: EXT4-fs (sda1): mounted filesystem d9b2ede0-ee86-11e7-b4dc-75e9ae472bc7 r/w without journal. Quota mode: none.

When passing the harddisk to a VM, UAS fails with the following error:

kernel: usb 3-1: new SuperSpeed USB device number 2 using xhci_hcd
kernel: usb 3-1: New USB device found, idVendor=059f, idProduct=1105, bcdDevice= 0.01
kernel: usb 3-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
kernel: usb 3-1: Product: Mobile Drive
kernel: usb 3-1: Manufacturer: LaCie
kernel: usb 3-1: SerialNumber: 00000000NL711CEV
kernel: usbcore: registered new interface driver usb-storage
kernel: scsi host4: uas
kernel: usbcore: registered new interface driver uas
kernel: scsi 4:0:0:0: tag#28 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD IN
kernel: scsi 4:0:0:0: tag#28 CDB: Inquiry 12 00 00 00 24 00
kernel: scsi host4: uas_eh_device_reset_handler start
kernel: usb 3-1: reset SuperSpeed USB device number 2 using xhci_hcd
kernel: scsi host4: uas_eh_device_reset_handler success
kernel: scsi 4:0:0:0: tag#28 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD
kernel: scsi 4:0:0:0: tag#28 CDB: Test Unit Ready 00 00 00 00 00 00
kernel: scsi host4: uas_eh_device_reset_handler start
kernel: usb 3-1: reset SuperSpeed USB device number 2 using xhci_hcd
kernel: scsi host4: uas_eh_device_reset_handler success
kernel: scsi 4:0:0:0: Device offlined - not ready after error recovery

Forcing sculpt_manager to ignore the device as storage via 17e84def131 and thus preventing the prior use of the harddrive from Sculpt does not solve the problem.

The failing UAS mode might be connected to #4598.

chelmuth commented 2 months ago

Unfortunately, this issue is still valid with the renewed usb_host_drv on Sculpt 24.04.