Bug 129405 - Resume after suspend kills USB on ThinkPad A31p
Resume after suspend kills USB on ThinkPad A31p
Status: CLOSED UPSTREAM
Product: Fedora
Classification: Fedora
Component: kernel (Show other bugs)
4
i686 Linux
medium Severity medium
: ---
: ---
Assigned To: Dave Jones
Brian Brock
:
Depends On:
Blocks: FCMETA_ACPI
  Show dependency treegraph
 
Reported: 2004-08-08 02:57 EDT by Dimitris
Modified: 2015-01-04 17:08 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2005-09-30 04:15:38 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:


Attachments (Terms of Use)

  None (edit)
Description Dimitris 2004-08-08 02:57:25 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040510

Description of problem:
I can suspend and resume my IBM ThinkPad A31p by just doing:

echo 3 >/proc/acpi/sleep

Unfortunately, when the laptop resumes from suspend, 5-6 seconds
after, USB dies. I can move my USB mouse around during those seconds
but then it stops moving once the USB dies.

I get the following messages in my /var/log/messages

Aug  8 07:18:51 localhost kernel: uhci_hcd 0000:00:1d.0: remove, state 1
Aug  8 07:18:51 localhost kernel: usb usb1: USB disconnect, address 1
Aug  8 07:18:51 localhost kernel: uhci_hcd 0000:00:1d.0: USB bus 1
deregistered
Aug  8 07:18:51 localhost kernel: uhci_hcd 0000:00:1d.1: remove, state 1
Aug  8 07:18:51 localhost kernel: usb usb2: USB disconnect, address 1
Aug  8 07:18:51 localhost kernel: usb 2-1: USB disconnect, address 2
Aug  8 07:18:51 localhost kernel: uhci_hcd 0000:00:1d.1: USB bus 2
deregistered
Aug  8 07:18:51 localhost kernel: uhci_hcd 0000:00:1d.2: remove, state 1
Aug  8 07:18:51 localhost kernel: usb usb3: USB disconnect, address 1
Aug  8 07:18:52 localhost kernel: uhci_hcd 0000:00:1d.2: USB bus 3
deregistered
Aug  8 07:19:14 localhost kernel: Stopping tasks:
============================================================|
Aug  8 07:19:14 localhost kernel: zapping low mappings.
Aug  8 07:19:14 localhost kernel: ACPI: PCI interrupt 0000:00:1d.0[A]
-> GSI 11 (level, low) -> IRQ 11
Aug  8 07:19:14 localhost kernel: ACPI: PCI interrupt 0000:00:1d.1[B]
-> GSI 11 (level, low) -> IRQ 11
Aug  8 07:19:14 localhost kernel: ACPI: PCI interrupt 0000:00:1d.2[C]
-> GSI 11 (level, low) -> IRQ 11
Aug  8 07:19:14 localhost kernel: ACPI: PCI interrupt 0000:00:1f.1[A]
-> GSI 11 (level, low) -> IRQ 11
Aug  8 07:19:14 localhost kernel: ACPI: PCI interrupt 0000:00:1f.5[B]
-> GSI 5 (level, low) -> IRQ 5
Aug  8 07:19:15 localhost kernel: e100: eth0: e100_watchdog: link up,
100Mbps, full-duplex
Aug  8 07:19:15 localhost kernel: Restarting tasks... done
Aug  8 07:19:15 localhost kernel: agpgart: Found an AGP 2.0 compliant
device at 0000:00:00.0.
Aug  8 07:19:15 localhost kernel: agpgart: Putting AGP V2 device at
0000:00:00.0 into 1x mode
Aug  8 07:19:15 localhost kernel: agpgart: Putting AGP V2 device at
0000:01:00.0 into 1x mode
Aug  8 07:19:14 localhost gpm[1901]: *** info [mice.c(1766)]:
Aug  8 07:19:15 localhost gpm[1901]: imps2: Auto-detected intellimouse
PS/2
Aug  8 07:19:15 localhost kernel: USB Universal Host Controller
Interface driver v2.2
Aug  8 07:19:15 localhost kernel: ACPI: PCI interrupt 0000:00:1d.0[A]
-> GSI 11 (level, low) -> IRQ 11
Aug  8 07:19:15 localhost kernel: uhci_hcd 0000:00:1d.0: UHCI Host
Controller
Aug  8 07:19:15 localhost kernel: uhci_hcd 0000:00:1d.0: irq 11, io
base 00001800
Aug  8 07:19:15 localhost kernel: uhci_hcd 0000:00:1d.0: new USB bus
registered, assigned bus number 1
Aug  8 07:19:15 localhost kernel: hub 1-0:1.0: USB hub found
Aug  8 07:19:15 localhost kernel: hub 1-0:1.0: 2 ports detected
Aug  8 07:19:15 localhost kernel: ACPI: PCI interrupt 0000:00:1d.1[B]
-> GSI 11 (level, low) -> IRQ 11
Aug  8 07:19:15 localhost kernel: uhci_hcd 0000:00:1d.1: UHCI Host
Controller
Aug  8 07:19:15 localhost kernel: uhci_hcd 0000:00:1d.1: irq 11, io
base 00001820
Aug  8 07:19:15 localhost kernel: uhci_hcd 0000:00:1d.1: new USB bus
registered, assigned bus number 2
Aug  8 07:19:15 localhost kernel: hub 2-0:1.0: USB hub found
Aug  8 07:19:15 localhost kernel: hub 2-0:1.0: 2 ports detected
Aug  8 07:19:15 localhost kernel: ACPI: PCI interrupt 0000:00:1d.2[C]
-> GSI 11 (level, low) -> IRQ 11
Aug  8 07:19:15 localhost kernel: uhci_hcd 0000:00:1d.2: UHCI Host
Controller
Aug  8 07:19:16 localhost kernel: uhci_hcd 0000:00:1d.2: irq 11, io
base 00001840
Aug  8 07:19:16 localhost kernel: uhci_hcd 0000:00:1d.2: new USB bus
registered, assigned bus number 3
Aug  8 07:19:16 localhost kernel: hub 3-0:1.0: USB hub found
Aug  8 07:19:16 localhost kernel: hub 3-0:1.0: 2 ports detected
Aug  8 07:19:16 localhost kernel: usb 2-1: new low speed USB device
using address 2
Aug  8 07:19:22 localhost kernel: usb 2-1: control timeout on ep0in
Aug  8 07:19:27 localhost kernel: usb 2-1: control timeout on ep0out
Aug  8 07:19:32 localhost kernel: usb 2-1: control timeout on ep0out
Aug  8 07:19:32 localhost kernel: usb 2-1: device not accepting
address 2, error -110
Aug  8 07:19:32 localhost kernel: usb 2-1: new low speed USB device
using address 3
Aug  8 07:19:37 localhost kernel: usb 2-1: control timeout on ep0out
Aug  8 07:19:43 localhost kernel: usb 2-1: control timeout on ep0out
Aug  8 07:19:43 localhost kernel: usb 2-1: device not accepting
address 3, error -110


As you can see from the messages, i've tried to 'rmmod uhci_hcd'
before i suspend and then 'modprobe uhci_hcd' after i resume.
Unfortunately that had no effect, USB still dies, probably due to IRQ
errors.

I've also tried to rmmod and modprobe the driver after suspend for a
few times which got me a nice kernel oops and a freeze :]


Version-Release number of selected component (if applicable):
kernel-2.6.7-1.494.2.2

How reproducible:
Always

Steps to Reproduce:
1. boot FC2 on an A31p
2. suspend via ACPI: echo 3 >/proc/acpi/sleep
3. resume and wait a few seconds for USB to die
    

Actual Results:  USB dies.

Expected Results:  USB works?

Additional info:

Hardware:

IBM ThinkPad A31p
1 gig ram
80 gig hdd
2xDVD drives
ATI FireGL 7800 M7
Intel Pentium 4 2.0ghz

Software:
Fedora Core 2
kernel 2.6.7-1.494.2.2
Comment 1 Dave Jones 2005-04-16 00:21:56 EDT
Fedora Core 2 has now reached end of life, and no further updates will be
provided by Red Hat.  The Fedora legacy project will be producing further kernel
updates for security problems only.

If this bug has not been fixed in the latest Fedora Core 2 update kernel, please
try to reproduce it under Fedora Core 3, and reopen if necessary, changing the
product version accordingly.

Thank you.
Comment 2 Dimitris 2005-04-16 01:37:52 EDT
This problem remains in FC2 and FC3 latest kernels. No change.
Comment 3 Dave Jones 2005-07-15 14:00:05 EDT
An update has been released for Fedora Core 3 (kernel-2.6.12-1.1372_FC3) which
may contain a fix for your problem.   Please update to this new kernel, and
report whether or not it fixes your problem.

If you have updated to Fedora Core 4 since this bug was opened, and the problem
still occurs with the latest updates for that release, please change the version
field of this bug to 'fc4'.

Thank you.
Comment 4 Dimitris 2005-08-06 04:27:16 EDT
Here is the output that i get from FC4:



Aug  6 11:27:42 thinkpad logger: ACPI: Sleep button pressed
Aug  6 11:28:04 thinkpad kernel: Stopping tasks:
==========================================================================|
Aug  6 11:28:04 thinkpad kernel: Debug: sleeping function called from invalid
context at mm/slab.c:2126
Aug  6 11:28:04 thinkpad kernel: in_atomic():0, irqs_disabled():1
Aug  6 11:28:04 thinkpad kernel:  [<c015c376>] kmem_cache_alloc+0x3c/0x49
Aug  6 11:28:04 thinkpad kernel:  [<c0248562>] acpi_pci_link_set+0x3f/0x17f
Aug  6 11:28:04 thinkpad kernel:  [<c02489ac>] irqrouter_resume+0x14/0x28
Aug  6 11:28:04 thinkpad kernel:  [<c0287c5e>] sysdev_resume+0x3d/0xb5
Aug  6 11:28:04 thinkpad kernel:  [<c028bd57>] device_power_up+0x5/0xa
Aug  6 11:28:04 thinkpad kernel:  [<c014a8cb>] suspend_enter+0x44/0x46
Aug  6 11:28:04 thinkpad kernel:  [<c014a859>] suspend_prepare+0x57/0x85
Aug  6 11:28:04 thinkpad kernel:  [<c014a93e>] enter_state+0x49/0x54
Aug  6 11:28:04 thinkpad hal.hotplug[2611]: DEVPATH is not set (subsystem input)
Aug  6 11:28:04 thinkpad kernel:  [<c0245a26>] acpi_system_write_sleep+0x5a/0x6c
Aug  6 11:28:04 thinkpad kernel:  [<c02459cc>] acpi_system_write_sleep+0x0/0x6c
Aug  6 11:28:05 thinkpad kernel:  [<c017b9e4>] vfs_write+0x9e/0x110
Aug  6 11:28:05 thinkpad kernel:  [<c017bb01>] sys_write+0x41/0x6a
Aug  6 11:28:05 thinkpad kernel:  [<c0103a51>] syscall_call+0x7/0xb
Aug  6 11:28:05 thinkpad kernel: hub 2-0:1.0: resubmit --> -108
Aug  6 11:28:05 thinkpad kernel: hub 3-0:1.0: resubmit --> -108
Aug  6 11:28:05 thinkpad kernel: hub 1-0:1.0: resubmit --> -108
Aug  6 11:28:05 thinkpad kernel: PCI: Enabling device 0000:00:1d.0 (0000 -> 0001)
Aug  6 11:28:05 thinkpad kernel: ACPI: PCI Interrupt 0000:00:1d.0[A] -> Link
[LNKA] -> GSI 11 (level, low) -> IRQ 11
Aug  6 11:28:05 thinkpad kernel: PCI: Enabling device 0000:00:1d.1 (0000 -> 0001)
Aug  6 11:28:05 thinkpad kernel: ACPI: PCI Interrupt 0000:00:1d.1[B] -> Link
[LNKD] -> GSI 11 (level, low) -> IRQ 11
Aug  6 11:28:05 thinkpad kernel: PCI: Enabling device 0000:00:1d.2 (0000 -> 0001)
Aug  6 11:28:05 thinkpad kernel: ACPI: PCI Interrupt 0000:00:1d.2[C] -> Link
[LNKC] -> GSI 11 (level, low) -> IRQ 11
Aug  6 11:28:05 thinkpad kernel: ACPI: PCI Interrupt 0000:00:1f.1[A] -> Link
[LNKC] -> GSI 11 (level, low) -> IRQ 11
Aug  6 11:28:05 thinkpad kernel: ACPI: PCI Interrupt 0000:00:1f.5[B] -> Link
[LNKB] -> GSI 5 (level, low) -> IRQ 5
Aug  6 11:28:06 thinkpad kernel: ACPI: PCI Interrupt 0000:00:1f.6[B] -> Link
[LNKB] -> GSI 5 (level, low) -> IRQ 5
Aug  6 11:28:06 thinkpad kernel: ACPI: PCI Interrupt 0000:01:00.0[A] -> Link
[LNKA] -> GSI 11 (level, low) -> IRQ 11
Aug  6 11:28:06 thinkpad kernel: ACPI: PCI Interrupt 0000:02:00.2[C] -> Link
[LNKC] -> GSI 11 (level, low) -> IRQ 11
Aug  6 11:28:06 thinkpad kernel: e100: eth0: e100_watchdog: link up, 100Mbps,
full-duplex
Aug  6 11:28:06 thinkpad logger: ACPI: Wake up from sleep mode
Aug  6 11:28:06 thinkpad kernel: Restarting tasks... done
Aug  6 11:28:06 thinkpad kernel: usb 2-2: USB disconnect, address 2
Aug  6 11:28:06 thinkpad kernel: agpgart: Found an AGP 2.0 compliant device at
0000:00:00.0.
Aug  6 11:28:06 thinkpad kernel: agpgart: Putting AGP V2 device at 0000:00:00.0
into 4x mode
Aug  6 11:28:06 thinkpad kernel: agpgart: Putting AGP V2 device at 0000:01:00.0
into 4x mode
Aug  6 11:30:47 thinkpad sshd(pam_unix)[2651]: session opened for user sehh by
(uid=0)
Aug  6 11:30:49 thinkpad su(pam_unix)[2674]: session opened for user root by
(uid=500)
Comment 5 Dan Carpenter 2005-08-06 16:45:33 EDT
re comment #4:  that's the same as bug 154046

acpi_pci_link_set() issue



Comment 6 Dimitris 2005-08-06 19:17:16 EDT
Weird. The bug 154046 says that the problem was solved in kernel 2.6.12-1.1398
(FC4). Unfortunately, thats what i'm using and the bug still exists for me.
Comment 7 Dan Carpenter 2005-08-07 01:11:07 EDT
That is weird...  Looking at the code it seems like the bug is still present in
2.6.12-1.1398.

irqrouter_resume() is called with interrupts off.
irqrouter_resume => acpi_pci_link_resume => acpi_pci_link_set => kmalloc => BOOM!
Comment 8 Dimitris 2005-09-08 09:47:20 EDT
As of kernel 2.6.12-1.1447_FC4, i no longer have a "/proc/acpi/sleep" thus,
can't even initiate a sleep process :(

(IBM ThinkPad A31p)
Comment 9 Dave Jones 2005-09-30 02:26:47 EDT
Mass update to all FC4 bugs:

An update has been released (2.6.13-1.1526_FC4) which rebases to a new upstream
kernel (2.6.13.2). As there were ~3500 changes upstream between this and the
previous kernel, it's possible your bug has been fixed already.

Please retest with this update, and update this bug if necessary.

Thanks.
Comment 10 Dimitris 2005-09-30 04:15:38 EDT
Installed kernel 2.6.13-1.1526_FC4 and USB now works after suspend/resume. We
may close this bug.

Note You need to log in before you can comment on or make changes to this bug.