Messages in this thread | | | Date | Wed, 25 Nov 2015 13:47:48 -0800 | Subject | Re: [PATCH v3] alarmtimer: fix unexpected rtc interrupt when system resume from S3 | From | John Stultz <> |
| |
On Wed, Nov 25, 2015 at 6:25 AM, Thomas Gleixner <tglx@linutronix.de> wrote: > On Fri, 20 Nov 2015, John Stultz wrote: > >> On Tue, Nov 17, 2015 at 4:08 AM, <zhuo-hao.lee@intel.com> wrote: >> > From: zhuo-hao <zhuo-hao.lee@intel.com> >> > >> > Before the system go to suspend (S3), if user create a timer with clockid >> > CLOCK_REALTIME_ALARM/CLOCK_BOOTTIME_ALARM and set a "large" timeout value >> > to this timer. The function alarmtimer_suspend will be called to setup >> > a timeout value to RTC timer to avoid the system sleep over time. However, >> > if the system wakeup early than RTC timeout, the RTC timer will not be cleared. >> > And this will cause the hpet_rtc_interrupt come unexpectedly until the RTC >> > timeout. To fix this problem, just adding alarmtimer_resume to cancel the >> > RTC timer. >> > >> > This was noticed because the HPET RTC emulation fires an interrupt every >> > 16ms(=1/2^DEFAULT_RTC_SHIFT) up to the point where the alarm time is reached. >> > This program always hits this situation(https://lkml.org/lkml/2015/11/8/326), >> > if system wake up earlier than alarm time. >> >> So thanks for the extra context here, and again I don't have an >> objection to this patch. >> >> Although from the earlier discussion it still isn't quite clear to me: >> Why must the HPET RTC emulation need to fire the alarm every 16ms? Is >> that not something that can be fixed? > > We probably can fix it with some surgery. OTOH that stuff is fragile > as hell and I rather avoid touching it, but I won't hinder someone > brave enough doing it :) > >> I just want to make sure we're not hiding a deeper issue. > > It's not a deeper issue. It's a - admittedly dumb - implementation > detail.
Fair enough.. I've got it queued up for testing.
thanks -john
| |