I have applied the patches to a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8: diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 53c2e29..64c36fe 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -3008,7 +3008,7 @@ static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring, if (num_trbs >= TRBS_PER_SEGMENT) { xhci_err(xhci, "Too many fragments %d, max %d\n", num_trbs, TRBS_PER_SEGMENT - 1); - return -ENOMEM; + return -EINVAL; } nop_cmd = cpu_to_le32(TRB_TYPE(TRB_TR_NOOP) | diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 4265b48..d45a0d5 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -4713,8 +4713,8 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks) struct device *dev = hcd->self.controller; int retval; - /* Accept arbitrarily long scatter-gather lists */ - hcd->self.sg_tablesize = ~0; + /* Limit the block layer scatter-gather lists to half a segment. */ + hcd->self.sg_tablesize = TRBS_PER_SEGMENT / 2; /* support to build packet from discontinuous buffers */ hcd->self.no_sg_constraint = 1; diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 03c74b7..c283cf1 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1260,7 +1260,7 @@ union xhci_trb { * since the command ring is 64-byte aligned. * It must also be greater than 16. */ -#define TRBS_PER_SEGMENT 64 +#define TRBS_PER_SEGMENT 256 /* Allow two commands + a link TRB, along with any reserved command TRBs */ #define MAX_RSVD_CMD_TRBS (TRBS_PER_SEGMENT - 3) #define TRB_SEGMENT_SIZE (TRBS_PER_SEGMENT*16) The output of lspci -vvv -n 00:14.0 0c03: 8086:1e31 (rev 04) (prog-if 30 [XHCI]) Subsystem: 1028:0534 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 43 Region 0: Memory at f7e20000 (64-bit, non-prefetchable) [size=64K] Capabilities: [70] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+ Address: 00000000fee00338 Data: 0000 Kernel driver in use: xhci_hcd Kernel modules: xhci_hcd The kernel logs: [ 114.854464] usb 3-1: new high-speed USB device number 2 using xhci_hcd [ 114.920229] usbcore: registered new interface driver usb-storage [ 114.920647] ums-cypress 3-1:1.0: USB Mass Storage device detected [ 114.920705] scsi6 : usb-storage 3-1:1.0 [ 114.920816] usbcore: registered new interface driver ums-cypress [ 115.921301] scsi 6:0:0:0: Direct-Access WDC WD64 00BPVT-00HXZT0 PQ: 0 ANSI: 0 [ 115.921991] sd 6:0:0:0: [sdb] 1250263728 512-byte logical blocks: (640 GB/596 GiB) [ 115.922142] sd 6:0:0:0: [sdb] Write Protect is off [ 115.922145] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00 [ 115.922269] sd 6:0:0:0: [sdb] No Caching mode page found [ 115.922271] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 115.922929] sd 6:0:0:0: [sdb] No Caching mode page found [ 115.922931] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 115.938479] sdb: sdb1 [ 115.939112] sd 6:0:0:0: [sdb] No Caching mode page found [ 115.939115] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 115.939117] sd 6:0:0:0: [sdb] Attached SCSI disk [ 124.241874] usb 3-1: reset high-speed USB device number 2 using xhci_hcd [ 124.255232] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff8801f899f700 [ 124.255237] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff8801f899f740 [ 128.552357] vboxdrv: Found 4 processor cores. [ 128.552802] vboxdrv: fAsync=0 offMin=0x1dd offMax=0x16bc [ 128.552862] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'. [ 128.552864] vboxdrv: Successfully loaded version 4.3.6_OSE (interface 0x001a0007). [ 128.556554] vboxpci: IOMMU not found (not registered) [ 191.463779] sd 6:0:0:0: [sdb] Unhandled sense code [ 191.463786] sd 6:0:0:0: [sdb] [ 191.463788] Result: hostbyte=0x07 driverbyte=0x08 [ 191.463791] sd 6:0:0:0: [sdb] [ 191.463793] Sense Key : 0x4 [current] [ 191.463797] sd 6:0:0:0: [sdb] [ 191.463799] ASC=0x0 ASCQ=0x0 [ 191.463802] sd 6:0:0:0: [sdb] CDB: [ 191.463803] cdb[0]=0x28: 28 00 4a 85 6e af 00 00 08 00 [ 191.463813] end_request: I/O error, dev sdb, sector 1250258607 [ 191.463818] Buffer I/O error on device sdb1, logical block 625129272 [ 191.463821] Buffer I/O error on device sdb1, logical block 625129273 [ 191.463824] Buffer I/O error on device sdb1, logical block 625129274 [ 191.463826] Buffer I/O error on device sdb1, logical block 625129275 [ 258.486582] sd 6:0:0:0: [sdb] Unhandled sense code [ 258.486589] sd 6:0:0:0: [sdb] [ 258.486591] Result: hostbyte=0x07 driverbyte=0x08 [ 258.486593] sd 6:0:0:0: [sdb] [ 258.486595] Sense Key : 0x4 [current] [ 258.486598] sd 6:0:0:0: [sdb] [ 258.486599] ASC=0x0 ASCQ=0x0 [ 258.486602] sd 6:0:0:0: [sdb] CDB: [ 258.486603] cdb[0]=0x28: 28 00 4a 85 6e af 00 00 02 00 [ 258.486610] end_request: I/O error, dev sdb, sector 1250258607 [ 258.486614] Buffer I/O error on device sdb1, logical block 625129272 [ 325.515320] sd 6:0:0:0: [sdb] Unhandled sense code [ 325.515325] sd 6:0:0:0: [sdb] [ 325.515326] Result: hostbyte=0x07 driverbyte=0x08 [ 325.515328] sd 6:0:0:0: [sdb] [ 325.515329] Sense Key : 0x4 [current] [ 325.515331] sd 6:0:0:0: [sdb] [ 325.515332] ASC=0x0 ASCQ=0x0 [ 325.515333] sd 6:0:0:0: [sdb] CDB: [ 325.515334] cdb[0]=0x28: 28 00 4a 85 6e b1 00 00 02 00 [ 325.515340] end_request: I/O error, dev sdb, sector 1250258609 [ 325.515343] Buffer I/O error on device sdb1, logical block 625129273 [ 392.545197] sd 6:0:0:0: [sdb] Unhandled sense code [ 392.545202] sd 6:0:0:0: [sdb] [ 392.545204] Result: hostbyte=0x07 driverbyte=0x08 [ 392.545205] sd 6:0:0:0: [sdb] [ 392.545206] Sense Key : 0x4 [current] [ 392.545210] sd 6:0:0:0: [sdb] [ 392.545211] ASC=0x0 ASCQ=0x0 [ 392.545212] sd 6:0:0:0: [sdb] CDB: [ 392.545213] cdb[0]=0x28: 28 00 4a 85 6e b3 00 00 04 00 [ 392.545220] end_request: I/O error, dev sdb, sector 1250258611 [ 392.545223] Buffer I/O error on device sdb1, logical block 625129274 [ 392.545226] Buffer I/O error on device sdb1, logical block 625129275 [ 459.573963] sd 6:0:0:0: [sdb] Unhandled sense code [ 459.573973] sd 6:0:0:0: [sdb] [ 459.573975] Result: hostbyte=0x07 driverbyte=0x08 [ 459.573976] sd 6:0:0:0: [sdb] [ 459.573977] Sense Key : 0x4 [current] [ 459.573980] sd 6:0:0:0: [sdb] [ 459.573980] ASC=0x0 ASCQ=0x0 [ 459.573981] sd 6:0:0:0: [sdb] CDB: [ 459.573982] cdb[0]=0x28: 28 00 00 00 00 3f 00 00 08 00 [ 459.573987] end_request: I/O error, dev sdb, sector 63 [ 459.573990] Buffer I/O error on device sdb1, logical block 0 [ 459.573992] Buffer I/O error on device sdb1, logical block 1 [ 459.573993] Buffer I/O error on device sdb1, logical block 2 [ 459.573994] Buffer I/O error on device sdb1, logical block 3 The disk is spinning for much longer time then before, but it doesn't connect correctly. If you have anything else to try let me know. Otherwise I will try to bisect the thing. Milan ______________________________________________________________ > Od: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> > Komu: Milan Svoboda <milan.svoboda@xxxxxxxxxx> > Datum: 20.01.2014 20:45 > Předmět: Re: usb disk recognized but fails > > CC: linux-usb@xxxxxxxxxxxxxxx, "USB Storage List" <usb-storage@xxxxxxxxxxxxxxxxxxxxxxxx>, linux-scsi@xxxxxxxxxxxxxxx >On Mon, Jan 20, 2014 at 08:00:23PM +0100, Milan Svoboda wrote: >> Non-working: >> >> 3.12.7-2-ARCH #1 SMP PREEMPT Sun Jan 12 13:09:09 CET 2014 x86_64 GNU/Linux >> >> I'm sorry, I don't remember exactly which version worked, I have had the disk connected to TV for >> a long time and only recently I wanted to copy some movies on it. I guess it worked something like >> 6 or 9 months ago. > >If you're up for compiling a custom kernel, can you try 3.12.7 with >these two patches applied? > >http://marc.info/?l=linux-usb&m=138921117504911&w=2 >http://marc.info/?l=linux-usb&m=138921117604912&w=2 > >I'm concerned the I/O errors are caused by commit 459d3c146117 "usb: >xhci: Link TRB must not occur within a USB payload burst". > >Can you also send me the output of `sudo lspci -vvv -n`? I need the >output for the xHCI host only. > >Sarah Sharp > >> ______________________________________________________________ >> > Od: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> >> > Komu: Milan Svoboda <milan.svoboda@xxxxxxxxxx> >> > Datum: 20.01.2014 19:23 >> > Předmět: Re: usb disk recognized but fails >> > >> > CC: linux-usb@xxxxxxxxxxxxxxx, "USB Storage List" <usb-storage@xxxxxxxxxxxxxxxxxxxxxxxx>, linux-scsi@xxxxxxxxxxxxxxx >> >Cc-ing the USB storage list, in case this device needs some quirk. >> > >> >On Wed, Jan 15, 2014 at 03:47:39PM +0100, Milan Svoboda wrote: >> >> The SATA adapter has a power input, but it is not used, it is connected to the >> >> PC with Y-type USB cable. >> >> >> >> The disk works with my "smart" TV, it works with Windows on the same machine, >> >> it also had worked some time ago with Linux, but now it shows the following: >> > >> >Do you know which kernel version it worked with? What version are you >> >currently running? Please run `uname -a`. >> > >> >> [ 2192.027213] usb 1-3: new high-speed USB device number 5 using xhci_hcd >> >> [ 2192.042323] ums-cypress 1-3:1.0: USB Mass Storage device detected >> >> [ 2192.042500] scsi9 : usb-storage 1-3:1.0 >> >> [ 2193.044219] scsi 9:0:0:0: Direct-Access WDC WD64 00BPVT-00HXZT0 PQ: 0 ANSI: 0 >> >> [ 2193.045083] sd 9:0:0:0: [sdb] 1250263728 512-byte logical blocks: (640 GB/596 GiB) >> >> [ 2193.045240] sd 9:0:0:0: [sdb] Write Protect is off >> >> [ 2193.045245] sd 9:0:0:0: [sdb] Mode Sense: 03 00 00 00 >> >> [ 2193.045384] sd 9:0:0:0: [sdb] No Caching mode page found >> >> [ 2193.045388] sd 9:0:0:0: [sdb] Assuming drive cache: write through >> >> [ 2193.046259] sd 9:0:0:0: [sdb] No Caching mode page found >> >> [ 2193.046264] sd 9:0:0:0: [sdb] Assuming drive cache: write through >> >> [ 2193.054389] sdb: sdb1 >> >> [ 2193.055092] sd 9:0:0:0: [sdb] No Caching mode page found >> >> [ 2193.055095] sd 9:0:0:0: [sdb] Assuming drive cache: write through >> >> [ 2193.055098] sd 9:0:0:0: [sdb] Attached SCSI disk >> >> [ 2200.821345] usb 1-3: reset high-speed USB device number 5 using xhci_hcd >> >> [ 2200.835063] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff8800bc71e480 >> >> [ 2200.835068] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff8800bc71e4c0 >> >> [ 2267.897715] sd 9:0:0:0: [sdb] Unhandled sense code >> >> [ 2267.897719] sd 9:0:0:0: [sdb] >> >> [ 2267.897721] Result: hostbyte=0x07 driverbyte=0x08 >> >> [ 2267.897722] sd 9:0:0:0: [sdb] >> >> [ 2267.897724] Sense Key : 0x4 [current] >> >> [ 2267.897735] sd 9:0:0:0: [sdb] >> >> [ 2267.897736] ASC=0x0 ASCQ=0x0 >> >> [ 2267.897738] sd 9:0:0:0: [sdb] CDB: >> >> [ 2267.897740] cdb[0]=0x28: 28 00 4a 85 6e af 00 00 08 00 >> >> [ 2267.897746] end_request: I/O error, dev sdb, sector 1250258607 >> >> [ 2267.897750] Buffer I/O error on device sdb1, logical block 625129272 >> >> [ 2267.897752] Buffer I/O error on device sdb1, logical block 625129273 >> >> [ 2267.897753] Buffer I/O error on device sdb1, logical block 625129274 >> >> [ 2267.897754] Buffer I/O error on device sdb1, logical block 625129275 >> >> [ 2270.884154] usb 1-3: USB disconnect, device number 5 >> >> >> >> Bus 001 Device 010: ID 14cd:6116 Super Top M6116 SATA Bridge >> >> Device Descriptor: >> >> bLength 18 >> >> bDescriptorType 1 >> >> bcdUSB 2.00 >> >> bDeviceClass 0 (Defined at Interface level) >> >> bDeviceSubClass 0 >> >> bDeviceProtocol 0 >> >> bMaxPacketSize0 64 >> >> idVendor 0x14cd Super Top >> >> idProduct 0x6116 M6116 SATA Bridge >> >> bcdDevice 1.50 >> >> iManufacturer 1 Super Top >> >> iProduct 3 USB 2.0 SATA BRIDGE >> >> iSerial 2 M6116018VE15 >> >> bNumConfigurations 1 >> >> Configuration Descriptor: >> >> bLength 9 >> >> bDescriptorType 2 >> >> wTotalLength 32 >> >> 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 0x0200 1x 512 bytes >> >> bInterval 0 >> >> Endpoint Descriptor: >> >> bLength 7 >> >> bDescriptorType 5 >> >> bEndpointAddress 0x02 EP 2 OUT >> >> bmAttributes 2 >> >> Transfer Type Bulk >> >> Synch Type None >> >> Usage Type Data >> >> wMaxPacketSize 0x0200 1x 512 bytes >> >> bInterval 0 >> >> Device Qualifier (for other device speed): >> >> bLength 10 >> >> bDescriptorType 6 >> >> bcdUSB 2.00 >> >> bDeviceClass 0 (Defined at Interface level) >> >> bDeviceSubClass 0 >> >> bDeviceProtocol 0 >> >> bMaxPacketSize0 64 >> >> bNumConfigurations 1 >> >> Device Status: 0x0001 >> >> Self Powered >> >> -- >> >> To unsubscribe from this list: send the line "unsubscribe linux-usb" in >> >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > > -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html