public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* USB: on suspend to ram/disk all usb devices are replugged
@ 2007-03-27 16:24 Maxim Levitsky
  2007-03-27 17:15 ` Alan Stern
  2007-03-29 13:19 ` Mark Lord
  0 siblings, 2 replies; 23+ messages in thread
From: Maxim Levitsky @ 2007-03-27 16:24 UTC (permalink / raw)
  To: linux-kernel; +Cc: stern, gregkh

Hi,
	I noticed that after suspend/resume cycle all my usb devices are unplugged/replugged by uhci driver.
While it is not that big problem to me, that can be a real problem if a device is a flash card with mounted 
file-system, because disappeared device will cause file-system corruption.

I found why this happens.

drivers/usb/host/pci-quirks.c:uhci_check_and_reset_hc checks that the BIOS didn't play with USB controller, and on my system
with or without a USB Legacy support turned on in the BIOS, the BIOS does meddle with USB controller,

But I suggest adding a option that will allow the user to bypass that check, because for example on my system USB works perfectly
if I disable the checks that this function does (but I agree that those checks are  very valuable, since I almost sure that on many systems USB
won't work without resetting the USB controller.)

Secondary,  this function checks for UHCI_USBCMD_CONFIGURE, that is not set on resume,
According to both UHCI and ICH8 documentation this is software only bit, but I didn't find any place in kernel where it is set,
(But such place exist, because reading from usb IO ports confirm that it is set during normal work, I will try to find it)

Disabling both check for UHCI_USBLEGSUP and UHCI_USBCMD_CONFIGURE makes all usb devices (I have mouse,keyborad, and joystick)
work fine on resume from ram without this "virtual" replugging.

Suspend to disk still causes "virtual replugging"  and I think that controller is reset and will unplug/replug devices anyway
Resolving this problem is very difficult. Maybe it possible to check on unplugging event that this caused by suspend  if the same device is
replugged then don't remove/reinstall driver, but this is very difficult to implement properly,
Maybe just refuse to suspend if some valuable device is connected (sorry if it is done this way already)

Also I want to note that I didn't yet checked any EHCI devices, because I don't have any (I am going to buy a usb stick soon)
But I feel that the above will be true for ehci too....

Looking for comments,
	Best regards,
		Maxim Levitsky

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2007-04-06 22:23 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-27 16:24 USB: on suspend to ram/disk all usb devices are replugged Maxim Levitsky
2007-03-27 17:15 ` Alan Stern
2007-03-27 17:54   ` Maxim
2007-03-27 18:05   ` Pete Zaitcev
2007-03-27 23:29     ` Maxim
2007-04-01 15:29       ` Pavel Machek
2007-04-01 17:42         ` David Zeuthen
2007-04-01 17:50           ` Pavel Machek
2007-04-01 18:01             ` David Zeuthen
2007-04-01 18:29               ` Pavel Machek
2007-04-01 18:26             ` Alan Stern
2007-04-01 18:34               ` Pavel Machek
2007-04-01 20:53                 ` Rafael J. Wysocki
2007-04-02  2:54                   ` Alan Stern
2007-04-02 20:37                     ` Rafael J. Wysocki
2007-04-02 18:38               ` Chuck Ebbert
2007-04-02 19:36                 ` Pavel Machek
2007-04-06 22:23                   ` Nigel Cunningham
2007-04-02 14:49             ` Mark Lord
2007-04-02 18:28               ` Pavel Machek
2007-03-29 13:19 ` Mark Lord
2007-03-29 15:56   ` Alan Stern
2007-03-29 16:03     ` Mark Lord

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox