Bug 160733 - Resume from ACPI S3 suspend breaks trackpad, mouse
Summary: Resume from ACPI S3 suspend breaks trackpad, mouse
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: 4
Hardware: i386
OS: Linux
Target Milestone: ---
Assignee: Dave Jones
QA Contact: Brian Brock
Depends On:
TreeView+ depends on / blocked
Reported: 2005-06-16 22:07 UTC by Michael Chan
Modified: 2015-01-04 22:20 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2005-09-05 05:32:30 UTC
Type: ---

Attachments (Terms of Use)

Description Michael Chan 2005-06-16 22:07:20 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Epiphany/1.4.4

Description of problem:
System: Dell Latitude D600.  After doing (as root):

echo 3 > /proc/acpi/sleep

The laptop successfully enters S3 sleep.  Upon resuming, the trackpad
and pointer are not recognized/not responsive; otherwise resume is
successful including restoration of windowing environment, keyboard,
network modules.  Trackpad/pointer are not responsive at console after
killing X.  This situation persists across a warm restart; a shutdown is
necessary to re-discover the devices.

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

How reproducible:

Steps to Reproduce:
1. get root
2. echo 3 > /proc/acpi/sleep (goes to sleep)
3. press lid/power button to wake back up

Actual Results:  Trackpad, pointer non-functional

Expected Results:  Trackpad, pointer resume normal operation

Additional info:

# Kernel: 2.6.11-1.1369_FC4 (selinux disabled for troubleshooting)

# Output of cat /proc/bus/input/devices
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd mouse0 event0
B: EV=120017
B: KEY=40000 4 2000078 3802078 f840d001 b2ffffdf ffefffff ffffffff
B: REL=140
B: MSC=10
B: LED=7

I: Bus=0011 Vendor=0002 Product=0008 Version=0000
N: Name="DualPoint Stick"
P: Phys=isa0060/serio1/input1
H: Handlers=mouse1 event1
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3

I: Bus=0011 Vendor=0002 Product=0008 Version=2222
N: Name="AlpsPS/2 ALPS DualPoint TouchPad"
P: Phys=isa0060/serio1/input0
H: Handlers=mouse2 event2
B: EV=f
B: KEY=420 0 70000 0 0 0 0 0 0 0 0
B: REL=3
B: ABS=1000003

The output of cat /proc/bus/input/devices does not change upon resume. 

# Output of dmesg (truncated to portion after resume)
Back to C!
Debug: sleeping function called from invalid context at mm/slab.c:2126
in_atomic():0, irqs_disabled():1
 [<c015c27e>] kmem_cache_alloc+0x3c/0x49
 [<c02481d6>] acpi_pci_link_set+0x3f/0x17f
 [<c0248620>] irqrouter_resume+0x14/0x28
 [<c02878ee>] sysdev_resume+0x3d/0xb5
 [<c028b9e7>] device_power_up+0x5/0xa
 [<c014a83b>] suspend_enter+0x44/0x46
 [<c014a7c9>] suspend_prepare+0x57/0x85
 [<c014a8ae>] enter_state+0x49/0x54
 [<c024569a>] acpi_system_write_sleep+0x5a/0x6c
 [<c0245640>] acpi_system_write_sleep+0x0/0x6c
 [<c017b8c4>] vfs_write+0x9e/0x110
 [<c017b9e1>] sys_write+0x41/0x6a
 [<c0103a51>] syscall_call+0x7/0xb
ACPI: PCI Interrupt 0000:00:1d.7[D] -> Link [LNKH] -> GSI 11 (level,
low) -> IRQ 11
PCI: Setting latency timer of device 0000:00:1d.7 to 64
ehci_hcd 0000:00:1d.7: debug port 1
PCI: cache line size of 32 is not supported by device 0000:00:1d.7
ehci_hcd 0000:00:1d.7: USB 2.0 restarted, EHCI 1.00, driver 10 Dec 2004
ACPI: PCI Interrupt 0000:00:1f.1[A] -> Link [LNKA] -> GSI 11 (level,
low) -> IRQ 11
ACPI: PCI Interrupt 0000:00:1f.5[B] -> Link [LNKB] -> GSI 7 (level, low)
-> IRQ 7
PCI: Setting latency timer of device 0000:00:1f.5 to 64
ACPI: PCI Interrupt 0000:00:1f.6[B] -> Link [LNKB] -> GSI 7 (level, low)
-> IRQ 7
PCI: Setting latency timer of device 0000:00:1f.6 to 64
ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKA] -> GSI 11 (level,
low) -> IRQ 11
Yenta O2: res at 0x94/0xD4: 00/ea
Yenta O2: enabling read prefetch/write burst
Restarting tasks... done
agpgart: Found an AGP 2.0 compliant device at 0000:00:00.0.
agpgart: Putting AGP V2 device at 0000:00:00.0 into 1x mode
agpgart: Putting AGP V2 device at 0000:01:00.0 into 1x mode
[drm] Loading R200 Microcode
USB Universal Host Controller Interface driver v2.2
ACPI: PCI Interrupt 0000:00:1d.0[A] -> Link [LNKA] -> GSI 11 (level,
low) -> IRQ 11
PCI: Setting latency timer of device 0000:00:1d.0 to 64
uhci_hcd 0000:00:1d.0: UHCI Host Controller
uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
uhci_hcd 0000:00:1d.0: irq 11, io base 0x0000bf80
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
ACPI: PCI Interrupt 0000:00:1d.1[B] -> Link [LNKD] -> GSI 11 (level,
low) -> IRQ 11
PCI: Setting latency timer of device 0000:00:1d.1 to 64
uhci_hcd 0000:00:1d.1: UHCI Host Controller
uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
uhci_hcd 0000:00:1d.1: irq 11, io base 0x0000bf40
usb 2-2: new full speed USB device using uhci_hcd and address 2
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected
ACPI: PCI Interrupt 0000:00:1d.2[C] -> Link [LNKC] -> GSI 11 (level,
low) -> IRQ 11
PCI: Setting latency timer of device 0000:00:1d.2 to 64
uhci_hcd 0000:00:1d.2: UHCI Host Controller
uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4
uhci_hcd 0000:00:1d.2: irq 11, io base 0x0000bf20
hub 4-0:1.0: USB hub found
hub 4-0:1.0: 2 ports detected
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.0
ipw2200: Copyright(c) 2003-2004 Intel Corporation
ACPI: PCI Interrupt 0000:02:03.0[A] -> Link [LNKB] -> GSI 7 (level, low)
-> IRQ 7
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection

Comment 1 David L. 2005-06-25 02:35:53 UTC
I have the same problem on a Dell Latitude D600. This bug seems to be a
duplicate of Bug 161546.

Recompling the 2.6.11-1.1369_FC4 with the following recent patches removed seems
to have fixed the problem for me.

1) serio-resume-fix: add back in the line
in drivers/input/serio/serio.c  just after
        static int serio_resume(struct device *d
 	struct serio *serio = to_serio_port(dev);
 	if (!serio->drv || !serio->drv->reconnect || serio->drv->reconnect(serio)) { 

2) alps-resume-fix:  remove the line: psmouse_reset(psmouse);
from drivers/input/mouse/alps.c at

static int alps_reconnect(struct psmouse
 	unsigned char param[4];
 	int version;

 	if (!(priv->i = alps_get_model(psmouse, &version)))
 		return -1;

Possibly only one of these patch removals is necessary.
Another workaround is to use the Fc4-test2 kernel, but I've noticed some
intermittent instability in the touchpad driver there.

Comment 2 Michael Chan 2005-07-12 20:18:50 UTC
Recompiled 2.6.12-1.1390_FC4 with David L.'s fix; successful.  Also recompiled
that same source kernel with <a
href="https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161546">David Moore's
fix</a>, which was successful.

Comment 3 Dave Jones 2005-07-15 21:13:42 UTC
[This comment has been added as a mass update for all FC4 kernel bugs.
 If you have migrated this bug from an FC3 bug today, ignore this comment.]

Please retest your problem with todays 2.6.12-1.1398_FC4 update.

If your problem involved being unable to boot, or some hardware not being
detected correctly, please make sure your /etc/modprobe.conf is correct *BEFORE*
installing any kernel updates.
If in doubt, you can recreate this file using..

mv /etc/sysconfig/hwconf /etc/sysconfig/hwconf.bak
mv /etc/modprobe.conf /etc/modprobe.conf.bak

Thank you.

Comment 4 Michael Chan 2005-08-04 17:29:42 UTC
(In reply to comment #3)

> Please retest your problem with todays 2.6.12-1.1398_FC4 update.

2.6.12-1.1398_FC4 does not fix the non-responsive pointer/trackpad issue.

Comment 5 Henrik Nilsson 2005-08-11 13:33:12 UTC
I'm running FC4 with kernel 2.6.12-1.1398_FC4 on a Dell Latitude D600.
With the kernel sources configured according to configs/kernel-2.6.12-i686,
David Lowe's patches above did not work for me in isolation.
However, bu comining the above patch to "serio.c" ONLY with David Moore's
patch to "alps.c" from follow up to bug #161546, I got a working configuration.
I can suspend and resume, and I have a working trackpad (and stick) after I
resume. However, David Lowe's suggested patch above to "alps.c" did not work
for me. This patch resulted in a completely non-functional trackpad/stick
(immediately after a boot, before any attempts to suspend).

Comment 6 Mat Kattanek 2005-08-25 06:37:57 UTC
Running FC4 with kernel 2.6.12-1.1398_FC4 on a Toshiba Tecra M2. 
Mouse pad did not work any longer after suspending once.

Applied David Moore's patch to "drivers/input/mouse/alps.c" from 
<a href="show_bug.cgi?id=161546">bug #160546 </a>
only and now the mouse pad and stick work ok after resume. 
There was no need for me to add the serio patch as described by Henrik Nilsson.

Comment 7 Dave Jones 2005-08-26 23:41:13 UTC
fixed in cvs, will be in next build

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