Hi Jonathan, On Thu, 22 Dec 2011 04:28:12 -0600, Jonathan Nieder wrote : > Could you try this patch[1]? > > [1] http://kernel-handbook.alioth.debian.org/ch-common-tasks.html
I experienced the bug with a Toshiba Portege R830 and Linux 3.1.6. I followed your instructions and I rebuilt a kernel that reverts "rtc: Disable the alarm in the hardware". That works: my laptop does not power on automagically after 5 minutes. Thank you, > > -- >8 -- > Subject: Revert "rtc: Disable the alarm in the hardware" > > This reverts commit 0cbc008c56f7b4a11ba6fe80e196d7ab322baabf. > --- > Thanks and hope that helps, > Jonathan > > drivers/rtc/interface.c | 44 > ++++++++++---------------------------------- 1 files changed, 10 > insertions(+), 34 deletions(-) > > diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c > index 3d9d2b976560..44e91e598f8d 100644 > --- a/drivers/rtc/interface.c > +++ b/drivers/rtc/interface.c > @@ -318,20 +318,6 @@ int rtc_read_alarm(struct rtc_device *rtc, > struct rtc_wkalrm *alarm) } > EXPORT_SYMBOL_GPL(rtc_read_alarm); > > -static int ___rtc_set_alarm(struct rtc_device *rtc, struct > rtc_wkalrm *alarm) -{ > - int err; > - > - if (!rtc->ops) > - err = -ENODEV; > - else if (!rtc->ops->set_alarm) > - err = -EINVAL; > - else > - err = rtc->ops->set_alarm(rtc->dev.parent, alarm); > - > - return err; > -} > - > static int __rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm > *alarm) { > struct rtc_time tm; > @@ -355,7 +341,14 @@ static int __rtc_set_alarm(struct rtc_device > *rtc, struct rtc_wkalrm *alarm) > * over right here, before we set the alarm. > */ > > - return ___rtc_set_alarm(rtc, alarm); > + if (!rtc->ops) > + err = -ENODEV; > + else if (!rtc->ops->set_alarm) > + err = -EINVAL; > + else > + err = rtc->ops->set_alarm(rtc->dev.parent, alarm); > + > + return err; > } > > int rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) > @@ -769,20 +762,6 @@ static int rtc_timer_enqueue(struct rtc_device > *rtc, struct rtc_timer *timer) return 0; > } > > -static void rtc_alarm_disable(struct rtc_device *rtc) > -{ > - struct rtc_wkalrm alarm; > - struct rtc_time tm; > - > - __rtc_read_time(rtc, &tm); > - > - alarm.time = rtc_ktime_to_tm(ktime_add(rtc_tm_to_ktime(tm), > - ktime_set(300, 0))); > - alarm.enabled = 0; > - > - ___rtc_set_alarm(rtc, &alarm); > -} > - > /** > * rtc_timer_remove - Removes a rtc_timer from the rtc_device > timerqueue > * @rtc rtc device > @@ -804,10 +783,8 @@ static void rtc_timer_remove(struct rtc_device > *rtc, struct rtc_timer *timer) struct rtc_wkalrm alarm; > int err; > next = timerqueue_getnext(&rtc->timerqueue); > - if (!next) { > - rtc_alarm_disable(rtc); > + if (!next) > return; > - } > alarm.time = rtc_ktime_to_tm(next->expires); > alarm.enabled = 1; > err = __rtc_set_alarm(rtc, &alarm); > @@ -869,8 +846,7 @@ again: > err = __rtc_set_alarm(rtc, &alarm); > if (err == -ETIME) > goto again; > - } else > - rtc_alarm_disable(rtc); > + } > > mutex_unlock(&rtc->ops_lock); > } -- Christophe Vu-Brugier -- To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20120103164717.22d9c3bc@trantor