lkml.org 
[lkml]   [2011]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[11/68] x86/pvclock: Zero last_value on resume
    2.6.32-longterm review patch.  If anyone has any objections, please let us know.

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

    From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

    commit e7a3481c0246c8e45e79c629efd63b168e91fcda upstream.

    If the guest domain has been suspend/resumed or migrated, then the
    system clock backing the pvclock clocksource may revert to a smaller
    value (ie, can be non-monotonic across the migration/save-restore).

    Make sure we zero last_value in that case so that the domain
    continues to see clock updates.

    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    arch/x86/include/asm/pvclock.h | 1 +
    arch/x86/kernel/pvclock.c | 5 +++++
    arch/x86/xen/time.c | 2 ++
    3 files changed, 8 insertions(+)

    --- a/arch/x86/include/asm/pvclock.h
    +++ b/arch/x86/include/asm/pvclock.h
    @@ -10,5 +10,6 @@ unsigned long pvclock_tsc_khz(struct pvc
    void pvclock_read_wallclock(struct pvclock_wall_clock *wall,
    struct pvclock_vcpu_time_info *vcpu,
    struct timespec *ts);
    +void pvclock_resume(void);

    #endif /* _ASM_X86_PVCLOCK_H */
    --- a/arch/x86/kernel/pvclock.c
    +++ b/arch/x86/kernel/pvclock.c
    @@ -111,6 +111,11 @@ unsigned long pvclock_tsc_khz(struct pvc

    static atomic64_t last_value = ATOMIC64_INIT(0);

    +void pvclock_resume(void)
    +{
    + atomic64_set(&last_value, 0);
    +}
    +
    cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src)
    {
    struct pvclock_shadow_time shadow;
    --- a/arch/x86/xen/time.c
    +++ b/arch/x86/xen/time.c
    @@ -424,6 +424,8 @@ void xen_timer_resume(void)
    {
    int cpu;

    + pvclock_resume();
    +
    if (xen_clockevent != &xen_vcpuop_clockevent)
    return;




    \
     
     \ /
      Last update: 2011-02-28 17:41    [W:0.020 / U:61.608 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site