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;