summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-06-16 16:22:08 +0200
committerPaul Gortmaker <paul.gortmaker@windriver.com>2012-05-17 11:20:56 -0400
commit08c902fccd1753926095c863b01fb88bbec69f30 (patch)
tree611b2bab9304220a65c03f3a932a2773354d3f3b /include
parent5cd58d69c1e8df75d70be60e8b77fdb2090102fb (diff)
downloadlinux-08c902fccd1753926095c863b01fb88bbec69f30.tar.gz
linux-08c902fccd1753926095c863b01fb88bbec69f30.tar.bz2
linux-08c902fccd1753926095c863b01fb88bbec69f30.zip
clocksource: Make watchdog robust vs. interruption
commit b5199515c25cca622495eb9c6a8a1d275e775088 upstream. The clocksource watchdog code is interruptible and it has been observed that this can trigger false positives which disable the TSC. The reason is that an interrupt storm or a long running interrupt handler between the read of the watchdog source and the read of the TSC brings the two far enough apart that the delta is larger than the unstable treshold. Move both reads into a short interrupt disabled region to avoid that. Reported-and-tested-by: Vernon Mauery <vernux@us.ibm.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/clocksource.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
index 4bca8b60cdf7..f99e32b1f952 100644
--- a/include/linux/clocksource.h
+++ b/include/linux/clocksource.h
@@ -192,6 +192,7 @@ struct clocksource {
#ifdef CONFIG_CLOCKSOURCE_WATCHDOG
/* Watchdog related data, used by the framework */
struct list_head wd_list;
+ cycle_t cs_last;
cycle_t wd_last;
#endif
};