• P
    mc146818rtc: Reset the periodic timer on load · ae46e239
    Paul Donohue 提交于
    When loading a VM from a snapshot or migration, clock changes can cause
    the periodic timer to stall or loop rapidly.
    
    qemu-timer has a reset notifier mechanism that is used to avoid timer
    stalls or loops if the host clock changes while the VM is running when
    using QEMU_CLOCK_HOST.  However, when loading a snapshot or migration,
    qemu-timer is initialized and fires the reset notifier before
    mc146818rtc is initialized and has registered its reset handler.  In
    addition, this mechanism isn't used when using QEMU_CLOCK_REALTIME,
    which might also change when loading a snapshot or migration.
    
    To correct that problem, this commit resets the periodic timer after
    loading from a snapshot or migration if the clock has either jumped
    backward or has jumped forward by more than the clock jump limit that
    is used by the reset notifier code in qemu-timer.
    Signed-off-by: NPaul Donohue <qemu-git@PaulSD.com>
    Message-Id: <20150612141013.GE2749@TopQuark.net>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    ae46e239
mc146818rtc.c 28.8 KB