• Xunlei Pang's avatar
    rtc: refine rtc_timer_do_work() to consider other set alarm failures · 6528b889
    Xunlei Pang authored
    rtc_timer_do_work() only judges -ETIME failure of__rtc_set_alarm(), but
    doesn't handle other failures like -EIO, -EBUSY, etc.
    
    If there is a failure other than -ETIME, the next rtc_timer will stay in
    the timerqueue.  Then later rtc_timers will be enqueued directly because
    they have a later expires time, so the alarm irq will never be programmed.
    
    When such failures happen, this patch will retry __rtc_set_alarm(), if
    still can't program the alarm time, it will remove current rtc_timer from
    timerqueue and fetch next one, thus preventing it from affecting other rtc
    timers.
    Signed-off-by: default avatarXunlei Pang <pang.xunlei@linaro.org>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Arnd Bergmann <arnd.bergmann@linaro.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6528b889
interface.c 24.3 KB