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.