]> git.proxmox.com Git - mirror_qemu.git/commit
qemu-timer: Call clock reset notifiers on forward jumps
authorPaul Donohue <qemu-devel@PaulSD.com>
Fri, 12 Jun 2015 14:08:45 +0000 (10:08 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 19 Jun 2015 10:27:14 +0000 (12:27 +0200)
commitfb1a3a051d89975f26296163066bb0745ecca49d
tree36813c9e3e43c4252387f79cf5002f15e4a83f93
parent397c767b2de5b918a7b890d02aae83d6dcb2a470
qemu-timer: Call clock reset notifiers on forward jumps

Commit 691a0c9c introduced a mechanism by which QEMU_CLOCK_HOST can
notify other parts of the emulator when the host clock has jumped
backward.  This is used to avoid stalling timers that were scheduled
based on the host clock.

However, if the host clock jumps forward, then timers that were
scheduled based on the host clock may fire rapidly and cause other
problems.  For example, the mc146818rtc periodic timer will block
execution of the VM and consume host CPU while firing every interrupt
for the time period that was skipped by the host clock.

To correct that problem, this commit fires the reset notification if the
host clock jumps forward by more than a hard-coded limit.  The limit is
currently set to a value of 60 seconds, which should be small enough to
prevent excessive timer loops, but large enough to avoid frequent resets
in idle VMs.

Signed-off-by: Paul Donohue <qemu-git@PaulSD.com>
Message-Id: <20150612140845.GD2749@TopQuark.net>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
include/qemu/timer.h
qemu-timer.c