[linux-pm] 2.6.14-rc1-mm1: usb breaks suspend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 17 Oct 2005, Rafael J. Wysocki wrote:

> Hi,
> 
> On Monday, 17 of October 2005 20:54, Alan Stern wrote:
> > On Mon, 17 Oct 2005, Pavel Machek wrote:
> > 
> > > Hi!
> > > 
> > > In -mm, usb breaks suspend to disk. Compiled without
> > > CONFIG_USB_SUSPEND, it just plainly fails; iwth USB_SUSPEND, it
> > > actually tries to suspend USB, but it fails and machine refuses to
> > > suspend. Is it known or is it worth debugging?
> > 
> > More details please.
> 
> Fails for me too on x86-64, with the following messages:
> 
> Stopping tasks: ========================|
> Freeing memory... done (14642 pages freed)
> Suspending device card0-0
> Suspending device 2-2:1.0
> Suspending device 2-2
> Suspending device 3-0:1.0
> hub 3-0:1.0: no suspend?
> Suspending device usb3
> Could not suspend device usb3: error -16
> Some devices failed to suspend
> Restarting tasks... done
> 
> where the USB-related info returned by the kernel is this:
> 
> ohci_hcd: 2005 April 22 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
> ACPI: PCI Interrupt Link [LUS0] enabled at IRQ 11
> ACPI: PCI Interrupt 0000:00:02.0[A] -> Link [LUS0] -> GSI 11 (level, low) -> IRQ 11
> PCI: Setting latency timer of device 0000:00:02.0 to 64
> ohci_hcd 0000:00:02.0: OHCI Host Controller
> ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 1
> ohci_hcd 0000:00:02.0: irq 11, io mem 0xfebfb000
> hub 1-0:1.0: USB hub found
> hub 1-0:1.0: 3 ports detected
> ACPI: PCI Interrupt Link [LUS1] enabled at IRQ 11
> ACPI: PCI Interrupt 0000:00:02.1[B] -> Link [LUS1] -> GSI 11 (level, low) -> IRQ 11
> PCI: Setting latency timer of device 0000:00:02.1 to 64
> ohci_hcd 0000:00:02.1: OHCI Host Controller
> ohci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 2
> ohci_hcd 0000:00:02.1: irq 11, io mem 0xfebfc000
> hub 2-0:1.0: USB hub found
> hub 2-0:1.0: 3 ports detected
> ACPI: PCI Interrupt Link [LUS2] enabled at IRQ 5
> usb 2-2: new low speed USB device using ohci_hcd and address 2
> PCI: setting IRQ 5 as level-triggered
> ACPI: PCI Interrupt 0000:00:02.2[C] -> Link [LUS2] -> GSI 5 (level, low) -> IRQ 5
> PCI: Setting latency timer of device 0000:00:02.2 to 64
> ehci_hcd 0000:00:02.2: EHCI Host Controller
> ehci_hcd 0000:00:02.2: debug port 1
> ehci_hcd 0000:00:02.2: new USB bus registered, assigned bus number 3
> ehci_hcd 0000:00:02.2: irq 5, io mem 0xfebfdc00
> PCI: cache line size of 64 is not supported by device 0000:00:02.2
> ehci_hcd 0000:00:02.2: park 0
> ehci_hcd 0000:00:02.2: USB 2.0 initialized, EHCI 1.00, driver 10 Dec 2004
> usb 2-2: device descriptor read/all, error -110
> hub 3-0:1.0: USB hub found
> hub 3-0:1.0: 6 ports detected
> ohci_hcd 0000:00:02.1: wakeup
> usb 2-2: new low speed USB device using ohci_hcd and address 4
> usbcore: registered new driver hiddev
> input: Logitech USB Receiver//class/input_dev as input3
> input: USB HID v1.10 Mouse [Logitech USB Receiver] on usb-0000:00:02.1-2
> usbcore: registered new driver usbhid
> drivers/usb/input/hid-core.c: v2.6:USB HID core driver
> 
> Greetings,
> Rafael

Weird.

I can't tell what happened.  But I can tell you that USB development
goes on in Greg K-H's tree.  The current version is available as a patch
based on 2.6.14-rc4:

http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-all-2.6.14-rc4.patch

On top of that you should apply the patch for uhci-hcd that I mentioned 
before.  With this combination I have had no problem suspending three 
different machines.  Sometimes they even wake up, too!  :-)

Be warned: That particular kernel has a bug which sometimes causes 
"modprobe ehci-hcd" to hang.  In case this happens to you, I've included a 
patch below with a temporary workaround.  Untested, but it should work.

Alan Stern



--- a/drivers/usb/host/ehci-pci.c	Thu Oct 13 17:04:13 2005
+++ b/drivers/usb/host/ehci-pci.c	Mon Oct 17 20:57:21 2005
@@ -66,6 +66,7 @@
 	u32			temp;
 	unsigned		count = 256/4;
 
+	spin_lock_init (&ehci->lock);
 	ehci->caps = hcd->regs;
 	ehci->regs = hcd->regs + HC_LENGTH(readl(&ehci->caps->hc_capbase));
 	dbg_hcs_params(ehci, "reset");


[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux