summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/powermac
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2011-03-13 21:23:25 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2011-03-13 21:23:25 +0000
commit20a41141c52163b96759c8bffd31ec57773add3a (patch)
tree5332e59d6f29a234e06e26d5336bf31f54eaa515 /sys/powerpc/powermac
parent161663c247c528c78fb3d3ec62b4d826259dd707 (diff)
downloadFreeBSD-src-20a41141c52163b96759c8bffd31ec57773add3a.zip
FreeBSD-src-20a41141c52163b96759c8bffd31ec57773add3a.tar.gz
Don't sleep while setting the clock. This can cause panics when
periodic_resettodr() calls CLOCK_SETTIME() and smu tries to sleep while running from a callout. Reported by: Torfinn Ingolfsen
Diffstat (limited to 'sys/powerpc/powermac')
-rw-r--r--sys/powerpc/powermac/smu.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/powerpc/powermac/smu.c b/sys/powerpc/powermac/smu.c
index 31fb09f..928472c 100644
--- a/sys/powerpc/powermac/smu.c
+++ b/sys/powerpc/powermac/smu.c
@@ -1177,7 +1177,7 @@ smu_gettime(device_t dev, struct timespec *ts)
static int
smu_settime(device_t dev, struct timespec *ts)
{
- struct smu_cmd cmd;
+ static struct smu_cmd cmd;
struct clocktime ct;
cmd.cmd = SMU_RTC;
@@ -1194,7 +1194,7 @@ smu_settime(device_t dev, struct timespec *ts)
cmd.data[6] = bin2bcd(ct.mon);
cmd.data[7] = bin2bcd(ct.year - 2000);
- return (smu_run_cmd(dev, &cmd, 1));
+ return (smu_run_cmd(dev, &cmd, 0));
}
/* SMU I2C Interface */
OpenPOWER on IntegriCloud