public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [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