diff options
author | Shaohua Li <shaohua.li@intel.com> | 2006-05-01 15:16:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-05-01 21:17:47 -0400 |
commit | 6ba815ded3fef03e888a9fc8eae3113938ff5349 (patch) | |
tree | e05297499d19a85e374a5efd1df5f3826dce31f7 /arch/i386 | |
parent | 160bd18e5e545cbb4e5c26f54414485f8ac291ec (diff) |
[PATCH] timer TSC check suspend notifier change
At suspend time, the TSC CPUFREQ_SUSPENDCHANGE notifier change might
wrongly enable interrupt. cpufreq driver suspend/resume is in interrupt
disabled environment.
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/kernel/timers/timer_tsc.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/i386/kernel/timers/timer_tsc.c b/arch/i386/kernel/timers/timer_tsc.c index 5e41ee29c8cf..f1187ddb0d0f 100644 --- a/arch/i386/kernel/timers/timer_tsc.c +++ b/arch/i386/kernel/timers/timer_tsc.c | |||
@@ -279,7 +279,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, | |||
279 | { | 279 | { |
280 | struct cpufreq_freqs *freq = data; | 280 | struct cpufreq_freqs *freq = data; |
281 | 281 | ||
282 | if (val != CPUFREQ_RESUMECHANGE) | 282 | if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE) |
283 | write_seqlock_irq(&xtime_lock); | 283 | write_seqlock_irq(&xtime_lock); |
284 | if (!ref_freq) { | 284 | if (!ref_freq) { |
285 | if (!freq->old){ | 285 | if (!freq->old){ |
@@ -312,7 +312,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, | |||
312 | } | 312 | } |
313 | 313 | ||
314 | end: | 314 | end: |
315 | if (val != CPUFREQ_RESUMECHANGE) | 315 | if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE) |
316 | write_sequnlock_irq(&xtime_lock); | 316 | write_sequnlock_irq(&xtime_lock); |
317 | 317 | ||
318 | return 0; | 318 | return 0; |