replay: synchronize on every virtual timer callback
commit677a3baba4356b91c7acfb5828dd9a598decda6a
authorPavel Dovgalyuk <Pavel.Dovgaluk@gmail.com>
Fri, 22 May 2020 06:35:27 +0000 (22 09:35 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 26 Jun 2020 10:45:30 +0000 (26 06:45 -0400)
treea4eaefc4f0504a9ef9498fa05e6b8ed4665cf1d4
parent255ae6e2158c743717bed76c9a2365ee4bcd326e
replay: synchronize on every virtual timer callback

Sometimes virtual timer callbacks depend on order
of virtual timer processing and warping of virtual clock.
Therefore every callback should be logged to make replay deterministic.
This patch creates a checkpoint before every virtual timer callback.
With these checkpoints virtual timers processing and clock warping
events order is completely deterministic.

Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
--

v2:
  - remove mutex lock/unlock for virtual clock checkpoint since it is
    not process any asynchronous events (commit ca9759c2a92f528f256fef0e3922416f7bb47bf9)
  - bump record/replay log file version
Message-Id: <159012932716.27256.8854065545365559921.stgit@pasha-ThinkPad-X280>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
replay/replay.c
util/qemu-timer.c