Re: spin_lock error in arch/i386/kernel/time.c on APM resume

From: George Anzinger
Date: Sat Mar 12 2005 - 15:27:09 EST


Zwane Mwaikambo wrote:
On Sat, 12 Mar 2005, George Anzinger wrote:


I agree. Still in all that follows, no one has addressed the apparent race
described above. The reason the system reported the errors that started this
thread is that the APM restore code was trying to read the cmos clock (I
assume to set the xtime clock) WHILE the timer interrupt code what trying to
set the cmos clock from xtime.


Doesn't my reply explain the actual problem? The code path being;

Sorry, I just didn't look at the apm code. My bad.

-g

arch/i386/kernel/apm.c
suspend()
write_seqlock_irq(xtime_lock)
...
write_sequnlock_irq(xtime_lock)
<interrupts enabled>
device_power_up()
timer_resume()
get_cmos_time();

S
So this covers the problem that the reporter reported, so yes it's setting xtime but we shouldn't be taking interrupts in the first place, so i posted the patch to cover that. APM was clearly violating PM resume procedures.

Thanks,
Zwane

--
George Anzinger george@xxxxxxxxxx
High-res-timers: http://sourceforge.net/projects/high-res-timers/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/