summaryrefslogtreecommitdiffstats
path: root/kernel/time/tick-internal.h
diff options
context:
space:
mode:
authorThomas Gleixner2008-09-16 20:32:50 +0200
committerThomas Gleixner2008-09-16 22:47:02 +0200
commit2344abbcbdb82140050e8be29d3d55e4f6fe860b (patch)
tree46c1842fc2a47aa4d7ee0c2c558f54bc50772b69 /kernel/time/tick-internal.h
parentclocksource, acpi_pm.c: fix check for monotonicity (diff)
downloadkernel-qcow2-linux-2344abbcbdb82140050e8be29d3d55e4f6fe860b.tar.gz
kernel-qcow2-linux-2344abbcbdb82140050e8be29d3d55e4f6fe860b.tar.xz
kernel-qcow2-linux-2344abbcbdb82140050e8be29d3d55e4f6fe860b.zip
clockevents: make device shutdown robust
The device shut down does not cleanup the next_event variable of the clock event device. So when the device is reactivated the possible stale next_event value can prevent the device to be reprogrammed as it claims to wait on a event already. This is the root cause of the resurfacing suspend/resume problem, where systems need key press to come back to life. Fix this by setting next_event to KTIME_MAX when the device is shut down. Use a separate function for shutdown which takes care of that and only keep the direct set mode call in the broadcast code, where we can not touch the next_event value. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time/tick-internal.h')
-rw-r--r--kernel/time/tick-internal.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
index 0ffc2918ea6f..6e9db9734aa6 100644
--- a/kernel/time/tick-internal.h
+++ b/kernel/time/tick-internal.h
@@ -10,6 +10,8 @@ extern int tick_do_timer_cpu __read_mostly;
extern void tick_setup_periodic(struct clock_event_device *dev, int broadcast);
extern void tick_handle_periodic(struct clock_event_device *dev);
+extern void clockevents_shutdown(struct clock_event_device *dev);
+
/*
* NO_HZ / high resolution timer shared code
*/