#11867 BLOC 12.1.0: XO-1.5 - Occasional failure to wake from sleep using rtcwake

Zarro Boogs per Child bugtracker at laptop.org
Mon Jun 25 16:26:52 EDT 2012

#11867: XO-1.5 - Occasional failure to wake from sleep using rtcwake
           Reporter:  Quozl     |       Owner:  pgf                              
               Type:  defect    |      Status:  new                              
           Priority:  blocker   |   Milestone:  12.1.0                           
          Component:  kernel    |     Version:  Development build as of this date
         Resolution:            |    Keywords:                                   
        Next_action:  diagnose  |    Verified:  0                                
Deployment_affected:            |   Blockedby:                                   
           Blocking:            |  

Comment(by pgf):

 this patch ensures that wakeups aren't lost if the system takes too long
 to suspend.  it seems to _do_ the right thing.  daniel, could you help
 decide whether it _is_ the right thing?  :-)

 i've verified that the lost wakeups i was observing during an "aggressive"
 runin are no longer lost -- the suspend is aborted instead.  i've not done
 any testing with "normal" runin, as described in the original report.

 From 12a120b191c5454ff14f263546d245c0944fb466 Mon Sep 17 00:00:00 2001
 From: Paul Fox <pgf at laptop.org>
 Date: Mon, 25 Jun 2012 16:18:55 -0400
 Subject: [PATCH] rtc-cmos: report wakeups from interrupt handler

 this change complements 5d0b7b9.  that commit ensured that after
 a wakeup userspace can determine whether the RTC likely caused
 that wakeup.  that only affects actual wakeups, however.  if the
 RTC alarm expires before the system has slept, it needs to abort
 the in-progress suspend.  for this the wakeup event needs to come
 from the interrupt handler.

 Signed-off-by: Paul Fox <pgf at laptop.org>
  drivers/rtc/rtc-cmos.c |    1 +
  1 file changed, 1 insertion(+)

 diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
 index d7ad467..3449f5f 100644
 --- a/drivers/rtc/rtc-cmos.c
 +++ b/drivers/rtc/rtc-cmos.c
 @@ -572,6 +572,7 @@ static irqreturn_t cmos_interrupt(int irq, void *p)

         if (is_intr(irqstat)) {
 +               pm_wakeup_event(cmos_rtc.dev , 0);
                 rtc_update_irq(p, 1, irqstat);
                 return IRQ_HANDLED;
         } else


Ticket URL: <http://dev.laptop.org/ticket/11867#comment:22>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system

More information about the Bugs mailing list