Bug 10977

Summary: USB_PERSIST does not work for a specific combination of usb port, hub, and stick
Product: Drivers Reporter: Astrid S. de Wijn (astrid-spammenot)
Component: USBAssignee: Alan Stern (stern)
Status: RESOLVED PATCH_ALREADY_AVAILABLE    
Severity: normal CC: bunk, stern
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.26-rc6 Subsystem:
Regression: --- Bisected commit-id:
Bug Depends on:    
Bug Blocks: 7216    
Attachments: kernel configuration file
dmesg output
output of lsusb -v
dmesg output with newer kernel, gregkh patch, and config_usb_debug enabled
Retry with reset-resume if a normal resume fails

Description Astrid S. de Wijn 2008-06-24 14:55:03 UTC
Latest working kernel version: unknown
Earliest failing kernel version: unknown
Distribution: Debian
Hardware Environment: ASUS eeepc 701
Software Environment: Debian/GNU linux unstable, with 2.6.26-rc6 kernel
Problem Description: A usb stick attached to a hub does not persist after suspend.  Another usb storage device, a card reader does persist.

Steps to reproduce: I've tried to reproduce this by hooking another hub with another stick up to the machine.  I made sure to fully disconnect them while the machine was suspended.  But USB_PERSIST worked fine for this combination.  The usb stick, hub, and port that have the problem are not easily accessible, so I can't check whether replacing any of the components makes a difference.  I suspect the usb port may not be able to supply the current it should according to the usb specifications, because it was intended only to be used with the eeepc's small built-in webcam.  But during normal operation it is apparently able to supply sufficient power for the hub and stick.
Comment 1 Astrid S. de Wijn 2008-06-24 14:56:16 UTC
Created attachment 16606 [details]
kernel configuration file
Comment 2 Astrid S. de Wijn 2008-06-24 14:57:04 UTC
Created attachment 16607 [details]
dmesg output
Comment 3 Astrid S. de Wijn 2008-06-24 14:59:58 UTC
Created attachment 16608 [details]
output of lsusb -v
Comment 4 Adrian Bunk 2008-06-24 15:04:26 UTC
USB_PERSIST should now always be enabled, so that's strange.

I assume 2.6.25 worked fine?
Comment 5 Rafael J. Wysocki 2008-06-24 15:10:53 UTC
(In reply to comment #4)
> USB_PERSIST should now always be enabled, so that's strange.

Not sure.
 
> I assume 2.6.25 worked fine?

Well, I don't really think it's a regression in the strict sense.
Comment 6 Astrid S. de Wijn 2008-06-24 15:18:13 UTC
> I assume 2.6.25 worked fine?

In 2.6.25 USB_PERSIST did not work for me at all. I haven't tried earlier kernels.
Comment 7 Alan Stern 2008-06-25 07:16:02 UTC
(Aside: I wish people would assign the correct MIME type to their attachments.  It's a real nuisance not to be able to view them directly in my browser.)

The USB_PERSIST code has been updated.  You should try running with the gregkh-all patch available from

   http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/

If it still doesn't work, build a kernel with CONFIG_USB_DEBUG enabled and attach the dmesg log again.
Comment 8 Astrid S. de Wijn 2008-06-26 09:26:03 UTC
The problem is still there in 2.6.26-rc8 with the patch.  I'll attach the dmesg output.

Sorry about the MIME type.  I'll try to do better this time.
Comment 9 Astrid S. de Wijn 2008-06-26 09:27:26 UTC
Created attachment 16637 [details]
dmesg output with newer kernel, gregkh patch, and config_usb_debug enabled
Comment 10 Alan Stern 2008-06-26 12:29:49 UTC
Created attachment 16641 [details]
Retry with reset-resume if a normal resume fails

The problem is that hub.  It maintained its connection during the suspend but then failed to respond properly during the resume.  This patch will detect when that happens and then retry using a reset-resume, to try and provide persistence.
Comment 11 Astrid S. de Wijn 2008-06-27 02:37:14 UTC
The patch fixed it.  Thank you!