lkml.org 
[lkml]   [2005]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    SubjectRe: 2.6.15-rc5-mm1 (x86_64-hpet-overflow.patch breaks resume from disk)
    Date
    On Friday, 9 December 2005 13:41, Jan Beulich wrote:
    > >>> "Rafael J. Wysocki" <rjw@sisk.pl> 09.12.05 12:20:05 >>>
    > >On Friday, 9 December 2005 10:15, Jan Beulich wrote:
    > >> It's a possible way to address this, but I'd rather just set a flag
    > >> indicating that the last-whatever values should not be considered
    > (to
    > >> get into a state just like after initial boot). Jan
    > >
    > >OK, but what is the interrupt handler supposed to do if the
    > >vxtime.last* values are invalid? I guess assume delta = 0?
    >
    > As I said, the state should be (re)set to whatever is in effect at
    > boot.

    Is the appended patch better than the previous one?

    Rafael


    arch/x86_64/kernel/time.c | 9 +++++++++
    1 files changed, 9 insertions(+)

    Index: linux-2.6.15-rc5-mm1/arch/x86_64/kernel/time.c
    ===================================================================
    --- linux-2.6.15-rc5-mm1.orig/arch/x86_64/kernel/time.c 2005-12-08 22:57:33.000000000 +0100
    +++ linux-2.6.15-rc5-mm1/arch/x86_64/kernel/time.c 2005-12-09 14:37:31.000000000 +0100
    @@ -65,6 +65,7 @@ unsigned long hpet_tick;
    static int hpet_use_timer;
    unsigned long vxtime_hz = PIT_TICK_RATE;
    unsigned long long monotonic_base;
    +static int vxtime_last_invalid; /* for the interrupt handler */
    static int report_lost_ticks; /* command line option */


    @@ -417,6 +418,13 @@ static irqreturn_t timer_interrupt(int i

    rdtscll_sync(&tsc);

    + if (vxtime_last_invalid) {
    + if (vxtime.mode == VXTIME_HPET)
    + vxtime.last = offset;
    + vxtime.last_tsc = tsc;
    + vxtime_last_invalid = 0;
    + }
    +
    if (vxtime.mode == VXTIME_HPET) {
    if (hpet64 > 0) {
    unsigned long delta = offset - vxtime.last;
    @@ -1125,6 +1133,7 @@ static int timer_resume(struct sys_devic

    sec = ctime + clock_cmos_diff;
    write_seqlock_irqsave(&xtime_lock,flags);
    + vxtime_last_invalid = 1;
    xtime.tv_sec = sec;
    xtime.tv_nsec = 0;
    write_sequnlock_irqrestore(&xtime_lock,flags);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-12-09 18:36    [W:0.030 / U:1.564 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site