[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#691902: [squeeze->wheezy regression] Unable to shutdown via normal means



found 691902 linux/3.6.4-1~experimental.1
quit

Janne Boman wrote:

> acpidump & dmesg attached
> 3.6 from experimental did not work...

Thanks for checking so quickly.  By "did not work", you mean that
after booting that kernel, shutting down caused the computer to
reboot, right?

Please test the pre-compiled 3.2.13-1 and 3.2.14-1 packages from
<http://snapshot.debian.org/package/linux-2.6/>, or if you prefer,
please test the attached patch against a 3.7-rc3 or newer kernel, for
example by using the following directions:

 0. prerequisites
	apt-get install git build-essential

 1. get the kernel history, if you don't already have it
	git clone \
	  git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

 2. configure, build, test
	cd linux
	git fetch origin
	git checkout origin/master
	cp /boot/config-3.6-trunk-amd64 .config; # stock configuration
	scripts/config --disable DEBUG_INFO
	make localmodconfig; # optional: minimize configuration
	make deb-pkg; # optionally with -j<num> for parallel build
	dpkg -i ../<name of package>; # as root
	shut down, unplug, remove battery, wait a few seconds
	restore power, boot
	shutdown -h now

    Hopefully it reproduces the bug, so

 3. try the patch
	cd linux
	git revert 41c7f7424259
	:wq
	make deb-pkg; # maybe with -j4
	dpkg -i ../<name of package>; # as root
	... power down completely, test it ...

Hope that helps,
Jonathan
From: Jonathan Nieder <jrnieder@gmail.com>
Date: Sat, 3 Nov 2012 10:58:20 -0700
Subject: Revert "rtc: Disable the alarm in the hardware (v2)"

This reverts commit 41c7f7424259ff11009449f87c95656f69f9b186,
which should tell us whether Alessandro will want to know about
these shutdown failures.

Not signed off, only for testing.
---
 drivers/rtc/interface.c | 15 ++-------------
 1 file changed, 2 insertions(+), 13 deletions(-)

diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
index 9592b936b71b..c11596b9ba4e 100644
--- a/drivers/rtc/interface.c
+++ b/drivers/rtc/interface.c
@@ -782,14 +782,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)
-{
-	if (!rtc->ops || !rtc->ops->alarm_irq_enable)
-		return;
-
-	rtc->ops->alarm_irq_enable(rtc->dev.parent, false);
-}
-
 /**
  * rtc_timer_remove - Removes a rtc_timer from the rtc_device timerqueue
  * @rtc rtc device
@@ -811,10 +803,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);
@@ -877,8 +867,7 @@ again:
 		err = __rtc_set_alarm(rtc, &alarm);
 		if (err == -ETIME)
 			goto again;
-	} else
-		rtc_alarm_disable(rtc);
+	}
 
 	mutex_unlock(&rtc->ops_lock);
 }
-- 
1.8.0


Reply to: