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

From: Zwane Mwaikambo
Date: Sat Mar 12 2005 - 11:25:57 EST


On Sat, 12 Mar 2005, George Anzinger wrote:

> Looks like we need the irq on the read clock also. This is true both before
> and after the prior cmos_time changes.
>
> The attached replaces the patch I sent yesterday.
>
> For those wanting to fix the kernel with out those patches, all that is needed
> its the chunk that applies, i.e. the _irq on the get_cmos_time() spinlocks.
>
> And more... That this occures implies we are attempting to update the cmos
> clock on resume seems wrong. One would presume that the time is wrong at this
> time and we are about to save that wrong time. Possibly the APM code should
> change time_status to STA_UNSYNC on the way into the sleep (or what ever it is
> called). Who should we ping with this?

timer_resume, which appears to be the problem, wants to calculate amount
of time was spent suspended, also your unconditional irq enable in
get_cmos_time breaks the atomicity of device_power_up and would deadlock
in sections of code which call get_time_diff() with xtime_lock held. I
sent a patch subject "APM: fix interrupts enabled in device_power_up"
which should address this.

Thanks,
Zwane

-
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/