diff options
Diffstat (limited to 'kernel/time/timekeeping.c')
| -rw-r--r-- | kernel/time/timekeeping.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index fa05e88aa76f..900f1b6598d1 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c | |||
| @@ -46,6 +46,9 @@ struct timespec xtime __attribute__ ((aligned (16))); | |||
| 46 | struct timespec wall_to_monotonic __attribute__ ((aligned (16))); | 46 | struct timespec wall_to_monotonic __attribute__ ((aligned (16))); |
| 47 | static unsigned long total_sleep_time; /* seconds */ | 47 | static unsigned long total_sleep_time; /* seconds */ |
| 48 | 48 | ||
| 49 | /* flag for if timekeeping is suspended */ | ||
| 50 | int __read_mostly timekeeping_suspended; | ||
| 51 | |||
| 49 | static struct timespec xtime_cache __attribute__ ((aligned (16))); | 52 | static struct timespec xtime_cache __attribute__ ((aligned (16))); |
| 50 | void update_xtime_cache(u64 nsec) | 53 | void update_xtime_cache(u64 nsec) |
| 51 | { | 54 | { |
| @@ -92,6 +95,8 @@ void getnstimeofday(struct timespec *ts) | |||
| 92 | unsigned long seq; | 95 | unsigned long seq; |
| 93 | s64 nsecs; | 96 | s64 nsecs; |
| 94 | 97 | ||
| 98 | WARN_ON(timekeeping_suspended); | ||
| 99 | |||
| 95 | do { | 100 | do { |
| 96 | seq = read_seqbegin(&xtime_lock); | 101 | seq = read_seqbegin(&xtime_lock); |
| 97 | 102 | ||
| @@ -299,8 +304,6 @@ void __init timekeeping_init(void) | |||
| 299 | write_sequnlock_irqrestore(&xtime_lock, flags); | 304 | write_sequnlock_irqrestore(&xtime_lock, flags); |
| 300 | } | 305 | } |
| 301 | 306 | ||
| 302 | /* flag for if timekeeping is suspended */ | ||
| 303 | static int timekeeping_suspended; | ||
| 304 | /* time in seconds when suspend began */ | 307 | /* time in seconds when suspend began */ |
| 305 | static unsigned long timekeeping_suspend_time; | 308 | static unsigned long timekeeping_suspend_time; |
| 306 | 309 | ||
