![]() | |||||||||||||
Messages in this thread Patch in this message |
On Sun, 9 Jul 2006 01:05:26 -0400
jfannin@gmail.com (Joseph Fannin) wrote:
> [ 22.488000]
> [ 22.488000] =================================
> [ 22.488000] [ INFO: inconsistent lock state ]
> [ 22.488000] ---------------------------------
> [ 22.488000] inconsistent {hardirq-on-W} -> {in-hardirq-W} usage.
> [ 22.488000] udevd/2684 [HC1[1]:SC0[0]:HE0:SE1] takes:
> [ 22.488000] (rtc_lock){+-..}, at: [<c0278c1c>] rtc_get_rtc_time+0x2c/0x1a0
> [ 22.488000] {hardirq-on-W} state was registered at:
> [ 22.488000] [<c0144229>] lock_acquire+0x69/0x90
> [ 22.488000] [<c033c020>] _spin_lock+0x40/0x50
> [ 22.488000] [<c0106fa3>] get_cmos_time+0x13/0x170
> [ 22.488000] [<c048daeb>] hpet_time_init+0xb/0x70
> [ 22.488000] [<c0487744>] start_kernel+0x1f4/0x470
> [ 22.488000] [<c0100210>] 0xc0100210
> [ 22.488000] irq event stamp: 193648
yup, thanks, bug.
--- a/arch/i386/kernel/time.c~get_cmos_time-locking-fix
+++ a/arch/i386/kernel/time.c
@@ -206,15 +206,16 @@ irqreturn_t timer_interrupt(int irq, voi
unsigned long get_cmos_time(void)
{
unsigned long retval;
+ unsigned long flags;
- spin_lock(&rtc_lock);
+ spin_lock_irqsave(&rtc_lock, flags);
if (efi_enabled)
retval = efi_get_time();
else
retval = mach_get_cmos_time();
- spin_unlock(&rtc_lock);
+ spin_unlock_irqrestore(&rtc_lock, flags);
return retval;
}
_
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
| ||||||||||||
| Last update: 2006-07-09 06:27 [from the cache] ©2003-2008 | |||||||||||||