diff options
author | nwhitehorn <nwhitehorn@FreeBSD.org> | 2011-03-13 21:23:25 +0000 |
---|---|---|
committer | nwhitehorn <nwhitehorn@FreeBSD.org> | 2011-03-13 21:23:25 +0000 |
commit | 20a41141c52163b96759c8bffd31ec57773add3a (patch) | |
tree | 5332e59d6f29a234e06e26d5336bf31f54eaa515 /sys/powerpc/powermac | |
parent | 161663c247c528c78fb3d3ec62b4d826259dd707 (diff) | |
download | FreeBSD-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.c | 4 |
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 */ |