Comments below.
On Mon, Mar 03, 2014 at 10:55:13PM +0100, Merlin Chlosta wrote:
> Hello everyone,
>
> I'd like to encrypt my external HDD using dm-crypt (luks) via USB 3.0.
> The crypto-container creation works, but writing to it doesn't:
>
> > kernel: usb 4-2: reset SuperSpeed USB device number 2 using xhci_hcd
> > kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled
> > ep ffff8800c37e5c80kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint
> > called with disabled ep ffff8800c37e5cc0kernel: usb 4-2: reset SuperSpeed
> > USB device number 2 using xhci_hcd
> > kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled
> > ep ffff8800c37e5c80kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint
> > called with disabled ep ffff8800c37e5cc0kernel: usb 4-2: reset SuperSpeed
> > USB device number 2 using xhci_hcd
> > kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled
> > ep ffff8800c37e5c80kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint
> > called with disabled ep ffff8800c37e5cc0kernel: usb 4-2: reset SuperSpeed
> > USB device number 2 using xhci_hcd
> > kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled
> > ep ffff8800c37e5c80kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint
> > called with disabled ep ffff8800c37e5cc0kernel: xhci_hcd 0000:00:14.0:
> > Timeout while waiting for address device command
> > kernel: xhci_hcd 0000:00:14.0: Timeout while waiting for address device
> > command
> > kernel: usb 4-2: device not accepting address 2, error -62
> > kernel: usb 4-2: USB disconnect, device number 2
> > kernel: scsi 12:0:0:0: rejecting I/O to offline device
> > kernel: scsi 12:0:0:0: [sdc] killing request
> > kernel: scsi 12:0:0:0: [sdc] Unhandled error code
> > kernel: scsi 12:0:0:0: [sdc]
> > kernel: Result: hostbyte=0x01 driverbyte=0x00
> > kernel: scsi 12:0:0:0: [sdc] CDB:
> > kernel: cdb[0]=0x2a: 2a 00 00 00 10 41 00 00 12 00
> > kernel: end_request: I/O error, dev sdc, sector 4161
> > kernel: quiet_error: 1601 callbacks suppressed
> > kernel: Buffer I/O error on device dm-5, logical block 2
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 3
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 4
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 5
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 6
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 7
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 8
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 9
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 10
> > kernel: lost page write due to I/O error on dm-5
> > kernel: Buffer I/O error on device dm-5, logical block 11
> > kernel: lost page write due to I/O error on dm-5
> > kernel: scsi 12:0:0:0: rejecting I/O to offline device
> > kernel: scsi 12:0:0:0: [sdc] killing request
> > kernel: scsi 12:0:0:0: [sdc] Unhandled error code
> > kernel: scsi 12:0:0:0: [sdc]
> > kernel: Result: hostbyte=0x01 driverbyte=0x00
> > kernel: scsi 12:0:0:0: [sdc] CDB:
> > kernel: cdb[0]=0x2a: 2a 00 00 00 10 53 00 00 18 00
> > kernel: end_request: I/O error, dev sdc, sector 4179
> > kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled
> > ep ffff8800c37e5c80
> > kernel: xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled
> > ep ffff8800c37e5cc0
>
> USB 2.0 (ehci-pci) works fine (direct, filesystem, crypto). With USB
> 3.0, both direct access using 'dd' and filesystem access is possible.
> Only direct access to the cryptdevice fails (including 'mkfs.ext4').
>
> If I create a filesystem on the crypto device via USB 2.0, I can access
> it via USB 3.0 as well.
>
> % uname -r
> 3.13.5-1
> (also tested on 3.14rc4)
In a separate mail, you said 3.10.30-1-lts also works. We do have one
known regression for USB mass storage. If you compile your own kernel,
please retest with 3.14-rc4 with these two commits reverted:
3804fad45411b48233b48003e33a78f290d227c8 "USBNET: ax88179_178a: enable tso if
usb host supports sg dma"
247bf557273dd775505fb9240d2d152f4f20d304 "xhci 1.0: Limit arbitrarily-aligned
scatter gather."
Please let me know if reverting those two commits worked. If not, we'll
dig deeper into exactly why your mass storage device is failing.
Sarah Sharp
> % lspci -nn | grep USB
> 00:14.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series
> Chipset Family USB xHCI Host Controller [8086:1e31] (rev 04)
> 00:1a.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series
> Chipset Family USB Enhanced Host Controller #2 [8086:1e2d] (rev 04)
> 00:1d.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series
> Chipset Family USB Enhanced Host Controller #1 [8086:1e26] (rev 04)
>
> % sudo lsusb -v -d 4971:1014
> Bus 004 Device 003: ID 4971:1014 SimpleTech
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 3.00
> bDeviceClass 0 (Defined at Interface level)
> bDeviceSubClass 0
> bDeviceProtocol 0
> bMaxPacketSize0 9
> idVendor 0x4971 SimpleTech
> idProduct 0x1014
> bcdDevice 0.00
> iManufacturer 10 HGST
> iProduct 11 Touro Mobile 3.0
> iSerial 3 21001311250002300511
> bNumConfigurations 1
> Configuration Descriptor:
> bLength 9
> bDescriptorType 2
> wTotalLength 44
> bNumInterfaces 1
> bConfigurationValue 1
> iConfiguration 0
> bmAttributes 0xc0
> Self Powered
> MaxPower 2mA
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 0
> bAlternateSetting 0
> bNumEndpoints 2
> bInterfaceClass 8 Mass Storage
> bInterfaceSubClass 6 SCSI
> bInterfaceProtocol 80 Bulk-Only
> iInterface 0
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x81 EP 1 IN
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0400 1x 1024 bytes
> bInterval 0
> bMaxBurst 15
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x02 EP 2 OUT
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0400 1x 1024 bytes
> bInterval 0
> bMaxBurst 15
> Binary Object Store Descriptor:
> bLength 5
> bDescriptorType 15
> wTotalLength 42
> bNumDeviceCaps 3
> USB 2.0 Extension Device Capability:
> bLength 7
> bDescriptorType 16
> bDevCapabilityType 2
> bmAttributes 0x00000002
> Link Power Management (LPM) Supported
> SuperSpeed USB Device Capability:
> bLength 10
> bDescriptorType 16
> bDevCapabilityType 3
> bmAttributes 0x00
> wSpeedsSupported 0x000e
> Device can operate at Full Speed (12Mbps)
> Device can operate at High Speed (480Mbps)
> Device can operate at SuperSpeed (5Gbps)
> bFunctionalitySupport 1
> Lowest fully-functional device speed is Full Speed (12Mbps)
> bU1DevExitLat 10 micro seconds
> bU2DevExitLat 32 micro seconds
> Container ID Device Capability:
> bLength 20
> bDescriptorType 16
> bDevCapabilityType 4
> bReserved 0
> ContainerID {00010203-0405-0607-0800-000000000000}
> Device Status: 0x0001
> Self Powered
>
> See [1] for a journalctl-log with xhci-debugging enabled. I also made an
> usbmon-trace [2].
>
> Regards,
> Merlin Chlosta
>
> [1] journalctl: http://sprunge.us/TRid
> [2] usbmon: http://sprunge.us/cTUe
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html