* [PATCH] timer TSC check suspend notifier change
@ 2006-04-30 3:23 Shaohua Li
2006-05-02 6:36 ` Andi Kleen
0 siblings, 1 reply; 2+ messages in thread
From: Shaohua Li @ 2006-04-30 3:23 UTC (permalink / raw)
To: lkml; +Cc: Andrew Morton
in 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>
---
linux-2.6.17-rc3-root/arch/i386/kernel/timers/timer_tsc.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff -puN arch/i386/kernel/timers/timer_tsc.c~timer_tsc_check_suspend_change arch/i386/kernel/timers/timer_tsc.c
--- linux-2.6.17-rc3/arch/i386/kernel/timers/timer_tsc.c~timer_tsc_check_suspend_change 2006-04-29 08:25:38.000000000 +0800
+++ linux-2.6.17-rc3-root/arch/i386/kernel/timers/timer_tsc.c 2006-04-29 08:29:33.000000000 +0800
@@ -279,7 +279,7 @@ time_cpufreq_notifier(struct notifier_bl
{
struct cpufreq_freqs *freq = data;
- if (val != CPUFREQ_RESUMECHANGE)
+ if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE)
write_seqlock_irq(&xtime_lock);
if (!ref_freq) {
if (!freq->old){
@@ -312,7 +312,7 @@ time_cpufreq_notifier(struct notifier_bl
}
end:
- if (val != CPUFREQ_RESUMECHANGE)
+ if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE)
write_sequnlock_irq(&xtime_lock);
return 0;
_
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] timer TSC check suspend notifier change
2006-04-30 3:23 [PATCH] timer TSC check suspend notifier change Shaohua Li
@ 2006-05-02 6:36 ` Andi Kleen
0 siblings, 0 replies; 2+ messages in thread
From: Andi Kleen @ 2006-05-02 6:36 UTC (permalink / raw)
To: Shaohua Li; +Cc: Andrew Morton, linux-kernel
Shaohua Li <shaohua.li@intel.com> writes:
> in 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>
> ---
>
> linux-2.6.17-rc3-root/arch/i386/kernel/timers/timer_tsc.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff -puN arch/i386/kernel/timers/timer_tsc.c~timer_tsc_check_suspend_change arch/i386/kernel/timers/timer_tsc.c
> --- linux-2.6.17-rc3/arch/i386/kernel/timers/timer_tsc.c~timer_tsc_check_suspend_change 2006-04-29 08:25:38.000000000 +0800
> +++ linux-2.6.17-rc3-root/arch/i386/kernel/timers/timer_tsc.c 2006-04-29 08:29:33.000000000 +0800
> @@ -279,7 +279,7 @@ time_cpufreq_notifier(struct notifier_bl
> {
> struct cpufreq_freqs *freq = data;
>
> - if (val != CPUFREQ_RESUMECHANGE)
> + if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE)
> write_seqlock_irq(&xtime_lock);
Better would be to change it to write_seqlock_irqsave() (if that
exists, if not add it)
> if (!ref_freq) {
> if (!freq->old){
> @@ -312,7 +312,7 @@ time_cpufreq_notifier(struct notifier_bl
> }
>
> end:
> - if (val != CPUFREQ_RESUMECHANGE)
> + if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE)
> write_sequnlock_irq(&xtime_lock);
and _restore
-Andi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-05-02 6:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-30 3:23 [PATCH] timer TSC check suspend notifier change Shaohua Li
2006-05-02 6:36 ` Andi Kleen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox