#11497 BLOC 1.75-so: System do not suspend first when press power button, but second time it test okay
Zarro Boogs per Child
bugtracker at laptop.org
Mon Nov 28 12:09:59 EST 2011
#11497: System do not suspend first when press power button, but second time it
test okay
--------------------------------+-------------------------------------------
Reporter: Andy Pei | Owner:
Type: defect | Status: new
Priority: blocker | Milestone: 1.75-software
Component: kernel | Version: Development build as of this date
Resolution: | Keywords:
Next_action: diagnose | Verified: 0
Deployment_affected: | Blockedby:
Blocking: |
--------------------------------+-------------------------------------------
Changes (by pgf):
* cc: dilinger (added)
Comment:
i've diagnosed this, but don't yet understand the fix.
many operations on the rtc will leave an alarm scheduled. some operations
do this intentionally ("rtcwake -s 10 -m no") and some, i think, do it
unintentionally ("hwclock" -- actually, you'll need "hwclock -f /dev/rtc0"
these days).
when no process has the rtc device open, interrupts from the chip are
disabled. the chip alarm is still configured, of course, and when an
alarm fires, it will assert its interrupt. when someone comes along and
opens the device, alarms become enabled, and the interrupt happens. this
generates a pm_wakeup_event() call. if the process doing the open is
rtcwake, then that fresh wakeup event correctly interferes with
suspending, if the /sys/power/wakeup_count protocol is being followed.
i tried clearing pending alarms from the chip at device open time (while
still leaving them enabled), and that makes rtcwake work correctly, but
hwclock starts failing -- it times out, with:
{{{
select() to /dev/rtc0 to wait for clock tick timed out
}}}
i don't know why this is happening -- it surprises me that hwclock depends
on previously received interrupts in order to function correctly.
on the other hand, i also don't understand why the rtc driver goes out of
its way to disable interrupts when the device isn't open.
--
Ticket URL: <http://dev.laptop.org/ticket/11497#comment:4>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
More information about the Bugs
mailing list