Re: [PATCH] Fixes for IPMI use of timers
From: Corey Minyard
Date: Thu May 19 2005 - 21:22:14 EST
Lee Revell wrote:
On Thu, 2005-05-19 at 18:30 -0500, Corey Minyard wrote:
/* We already have irqsave on, so no need for it
here. */
- read_lock(&xtime_lock);
+ read_lock_irqsave(&xtime_lock, flags);
The comment is now wrong.
Lee
I know I deleted that at least once. Oh well, here it is with the
comment removed.
Thanks.
-Corey
Fix some problems with the high-res timer support.
Signed-off-by: Corey Minyard <minyard@xxxxxxx>
Index: linux-2.6.12-rc4/drivers/char/ipmi/ipmi_si_intf.c
===================================================================
--- linux-2.6.12-rc4.orig/drivers/char/ipmi/ipmi_si_intf.c
+++ linux-2.6.12-rc4/drivers/char/ipmi/ipmi_si_intf.c
@@ -767,12 +767,11 @@
immediately, anyway. So we only process if we
actually delete the timer. */
- /* We already have irqsave on, so no need for it
- here. */
- read_lock(&xtime_lock);
+ read_lock_irqsave(&xtime_lock, flags);
jiffies_now = jiffies;
smi_info->si_timer.expires = jiffies_now;
smi_info->si_timer.sub_expires = get_arch_cycles(jiffies_now);
+ read_unlock_irqrestore(&xtime_lock, flags);
add_usec_to_timer(&smi_info->si_timer, SI_SHORT_TIMEOUT_USEC);
@@ -830,11 +829,11 @@
smi_info->short_timeouts++;
spin_unlock_irqrestore(&smi_info->count_lock, flags);
#if defined(CONFIG_HIGH_RES_TIMERS)
- read_lock(&xtime_lock);
+ read_lock_irqsave(&xtime_lock, flags);
smi_info->si_timer.expires = jiffies;
smi_info->si_timer.sub_expires
= get_arch_cycles(smi_info->si_timer.expires);
- read_unlock(&xtime_lock);
+ read_unlock_irqrestore(&xtime_lock, flags);
add_usec_to_timer(&smi_info->si_timer, SI_SHORT_TIMEOUT_USEC);
#else
smi_info->si_timer.expires = jiffies + 1;