Subject : Miles Lane <miles.lane@gmail.com> Submitter : 2.6.29-rc3-git3 -- Failure to resume two Sandisk USB flash drives attached to a Belkin USB Busport Mobile (F5U022). Date : 2009-02-03 4:58 References : http://marc.info/?l=linux-kernel&m=123363718614763&w=4 Handled-By : "Rafael J. Wysocki" <rjw@sisk.pl> This entry is being used for tracking a regression from 2.6.28. Please don't close it until the problem is fixed in the mainline.
Submitter : Miles Lane <miles.lane@gmail.com>
Subject : Failure to resume two Sandisk USB flash drives attached to a Belkin USB Busport Mobile (F5U022).
With 2.6.29-rc4-git1, I still cannot resume and get working Sandisk drives that are connected through the Cardbus USB card. [18401.901129] hub 5-0:1.0: hub_resume [18401.901401] ohci_hcd 0000:05:00.0: enabling device (0000 -> 0002) [18401.901409] ohci_hcd 0000:05:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [18401.901419] ohci_hcd 0000:05:00.0: setting latency timer to 64 [18401.901428] ohci_hcd 0000:05:00.0: BIOS/SMM active, control ffffffff [18401.901433] ohci_hcd 0000:05:00.0: USB HC TakeOver from BIOS/SMM [18407.401125] ohci_hcd 0000:05:00.0: USB HC takeover failed! (BIOS/SMM bug) [18407.412210] ohci_hcd 0000:05:00.0: USB HC reset timed out! [18407.412215] ohci_hcd 0000:05:00.0: can't restart, -1 [18407.412219] usb usb6: root hub lost power or was reset [18407.412226] ohci_hcd 0000:05:00.0: already suspended [18407.412239] usb usb6: usb resume [18407.412245] ohci_hcd 0000:05:00.0: BIOS/SMM active, control ffffffff [18407.412251] ohci_hcd 0000:05:00.0: USB HC TakeOver from BIOS/SMM [18412.912124] ohci_hcd 0000:05:00.0: USB HC takeover failed! (BIOS/SMM bug) [18412.923213] ohci_hcd 0000:05:00.0: USB HC reset timed out! [18412.923218] ohci_hcd 0000:05:00.0: can't restart, -1 [18412.923222] usb usb6: root hub lost power or was reset [18412.923226] usb usb6: bus resume fail, err -1 [18412.923230] ohci_hcd 0000:05:00.0: HC died; cleaning up [18412.923277] pm_op(): usb_dev_resume+0x0/0x10 [usbcore] returns -1 [18412.923284] PM: Device usb6 failed to resume: error -1 [18412.923326] pm_op(): usb_dev_resume+0x0/0x10 [usbcore] returns -19 [18412.923332] PM: Device 6-2 failed to resume: error -19 [18412.923375] pm_op(): usb_dev_resume+0x0/0x10 [usbcore] returns -19 [18412.923379] PM: Device 6-1 failed to resume: error -19 [18412.972123] PM: Finishing wakeup. [18412.972272] Restarting tasks ... <7>hub 5-0:1.0: state 7 ports 8 chg 0000 evt 0000 [18412.972693] hub 6-0:1.0: state 0 ports 2 chg 0000 evt 0000 [18412.972839] usb 6-1: USB disconnect, address 3 [18412.972980] usb 6-1: unregistering device [18412.973134] usb 6-1: usb_disable_device nuking all URBs [18412.973299] usb 6-1: unregistering interface 6-1:1.0 [18412.982098] done. [18413.057051] sd 7:0:0:0: [sdc] READ CAPACITY failed [18413.057215] sd 7:0:0:0: [sdc] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK,SUGGEST_OK [18413.060417] sd 7:0:0:0: [sdc] Sense not available. [18413.061071] sd 7:0:0:0: [sdc] Write Protect is off [18413.061238] sd 7:0:0:0: [sdc] Mode Sense: 00 00 00 00 [18413.061404] sd 7:0:0:0: [sdc] Assuming drive cache: write through [18413.098289] sd 6:0:0:0: [sdb] READ CAPACITY failed [18413.098485] sd 6:0:0:0: [sdb] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK,SUGGEST_OK [18413.098802] sd 6:0:0:0: [sdb] Sense not available. [18413.099269] sd 6:0:0:0: [sdb] Write Protect is off [18413.099440] sd 6:0:0:0: [sdb] Mode Sense: 00 00 00 00 [18413.099611] sd 6:0:0:0: [sdb] Assuming drive cache: write through [18413.116152] usb 6-1:1.0: uevent [18413.117061] usb 6-1: uevent [18413.117287] usb 6-2: USB disconnect, address 2 [18413.117439] usb 6-2: unregistering device [18413.117590] usb 6-2: usb_disable_device nuking all URBs [18413.117767] usb 6-2: unregistering interface 6-2:1.0 [18413.187923] usb 6-2:1.0: uevent [18413.188817] usb 6-2: uevent [18413.232891] ieee1394: Host added: ID:BUS[0-00:1023] GUID[00e0b803660662e4] [18413.674052] scsi 6:0:0:0: rejecting I/O to dead device
Ah, I somehow didn't realize they were connected through a cardbus bridge. We might have broken cardbus resume in the recent PCI PM patches, then. What happens if you connect any of them to a USB port not on the cardbus?
Created attachment 20185 [details] Move the restoration of USB controllers' config registers to .suspend OK, I have a theory, but I need you to verify it. Namely, if a PCI USB controller is behind a cardbus bridge, we may be trying to restore its configuration registers too early, before the cardbus bridge is operational. If this theory is correct, the attached patch is likely to help, so please test it.
I will test your patch today. I just tested 2.6.29-rc4-git5. The USB flash drives suspend and resume fine when connected to the USB2 ports on the side of the laptop. The drives still fail to suspend/resume successfully when connected through the Belkin USB Busport Mobile (F5U022). I will post the test results with your patch in a few moments.
Yes, your patch fixed the problem. Thanks!
Not sure whether I am supposed to change the bug status or not.
No, thanks. I'll change it as appropriate when the bug is fixed in the mainline.
Patch : http://bugzilla.kernel.org/attachment.cgi?id=20185&action=view
Ignore-Patch : http://bugzilla.kernel.org/attachment.cgi?id=20185&action=view Patch : http://marc.info/?l=linux-kernel&m=123456499020575&w=4 Notify-Also : Greg KH <gregkh@suse.de> Notify-Also : Alan Stern <stern@rowland.harvard.edu>
*** Bug 12571 has been marked as a duplicate of this bug. ***
Fixed by: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3494252d5644993f407a45f01c3e8ad5ae38f93c