lkml.org 
[lkml]   [2013]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 073/115] drivers/rtc/rtc-cmos.c: dont disable hpet emulation on suspend
    Date
    3.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Derek Basehore <dbasehore@chromium.org>

    commit e005715efaf674660ae59af83b13822567e3a758 upstream.

    There's a bug where rtc alarms are ignored after the rtc cmos suspends
    but before the system finishes suspend. Since hpet emulation is
    disabled and it still handles the interrupts, a wake event is never
    registered which is done from the rtc layer.

    This patch reverts commit d1b2efa83fbf ("rtc: disable hpet emulation on
    suspend") which disabled hpet emulation. To fix the problem mentioned
    in that commit, hpet_rtc_timer_init() is called directly on resume.

    Signed-off-by: Derek Basehore <dbasehore@chromium.org>
    Cc: Maxim Levitsky <maximlevitsky@gmail.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/rtc/rtc-cmos.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/rtc/rtc-cmos.c
    +++ b/drivers/rtc/rtc-cmos.c
    @@ -804,9 +804,8 @@ static int cmos_suspend(struct device *d
    mask = RTC_IRQMASK;
    tmp &= ~mask;
    CMOS_WRITE(tmp, RTC_CONTROL);
    + hpet_mask_rtc_irq_bit(mask);

    - /* shut down hpet emulation - we don't need it for alarm */
    - hpet_mask_rtc_irq_bit(RTC_PIE|RTC_AIE|RTC_UIE);
    cmos_checkintr(cmos, tmp);
    }
    spin_unlock_irq(&rtc_lock);
    @@ -870,6 +869,7 @@ static int cmos_resume(struct device *de
    rtc_update_irq(cmos->rtc, 1, mask);
    tmp &= ~RTC_AIE;
    hpet_mask_rtc_irq_bit(RTC_AIE);
    + hpet_rtc_timer_init();
    } while (mask & RTC_AIE);
    spin_unlock_irq(&rtc_lock);
    }



    \
     
     \ /
      Last update: 2013-05-06 23:41    [W:4.153 / U:0.116 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site