Skip to content

RFC replay additions

Pavel Dovgalyuk qemu-devel 3 versions – In review

Get series with b4
b4 am 20171114081630.27640.53933.stgit@pasha-VirtualBox

Versions newest first · linked by author and title

  1. v2 RFC Latest posting 2/226 patches 10 repliesIn review
  2. v2 RFC posting 1/23 of 26 patches 0 repliesSuperseded
  3. v1 RFC26 patches 36 repliesSuperseded

Changes in v2 from the cover letter

- updated lock/unlock logic (as suggested by Paolo Bonzini)
- updated cpu execution loop to avoid races in setting/resetting exit request (as suggested by Paolo Bonzini)
- minor changes

Patches in v2 posting 2/2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/26block: implement bdrv_snapshot_goto for blkreplayblock/blkreplay.c+8 -00 replies
2/26blkreplay: create temporary overlay for underlaying devicesblock/blkreplay.c stubs/replay.c vl.c+67 -10 replies
3/26replay: disable default snapshot for record/replayvl.c+7 -10 replies
4/26replay: fix processing async eventsreplay/replay-events.c+2 -21 reply
5/26replay: fixed replay_enable_eventsreplay/replay-events.c+5 -31 reply
6/26replay: fix save/load vm for non-empty queueinclude/sysemu/replay.h migration/savevm.c replay/replay-snapshot.c+22 -00 replies
7/26replay: added replay log format descriptiondocs/replay.txt+69 -01 reply
8/26replay: make safe vmstop at record/replaycpus.c+4 -30 replies
9/26replay: save prior value of the host clockinclude/qemu/timer.h replay/replay-internal.h replay/replay-snapshot.c +1 more+31 -01 reply
10/26icount: fixed saving/restoring of icount warp timerscpus.c+66 -191 reply
11/26target/arm/arm-powertctl: drop BQL assertionstarget/arm/arm-powerctl.c+0 -80 replies
12/26cpus: push BQL lock to qemu_*_wait_io_eventaccel/kvm/kvm-all.c cpus.c target/i386/hax-all.c+20 -130 replies
13/26cpus: only take BQL for sleeping threadscpus-common.c cpus.c+9 -140 replies
14/26replay/replay.c: bump REPLAY_VERSION againreplay/replay-internal.h replay/replay.c+2 -21 reply
15/26replay/replay-internal.c: track holding of replay_lockreplay/replay-internal.c+11 -00 replies
16/26replay: make locking visible outside replay codeinclude/sysemu/replay.h replay/replay-internal.c replay/replay-internal.h +1 more+35 -80 replies
17/26replay: push replay_mutex_lock up the call treecpus.c docs/replay.txt include/sysemu/replay.h +7 more+116 -650 replies
18/26cpu-exec: don't overwrite exception_indexaccel/tcg/cpu-exec.c+3 -11 reply
19/26cpu-exec: reset exit flag before calling cpu_exec_nocacheaccel/tcg/cpu-exec.c+54 -411 reply
20/26replay: don't destroy mutex at exitreplay/replay.c+0 -11 reply
21/26replay: check return values of fwritereplay/replay-internal.c+3 -11 reply
22/26scripts/qemu-gdb: add simple tcg lock status helperscripts/qemu-gdb.py scripts/qemugdb/tcg.py+48 -10 replies
23/26util/qemu-thread-*: add qemu_lock, locked and unlock trace eventsinclude/qemu/thread.h util/qemu-thread-posix.c util/trace-events+26 -160 replies
24/26scripts/analyse-locks-simpletrace.py: script to analyse lock timesscripts/analyse-locks-simpletrace.py+99 -00 replies
25/26scripts/replay-dump.py: replay log dumperscripts/replay-dump.py+308 -00 replies
26/26scripts/qemu-gdb/timers.py: new helper to dump timer statescripts/qemu-gdb.py scripts/qemugdb/timers.py+56 -10 replies

Reviews trailers per patch

8 of 26 patches have a Reviewed-by or Acked-by.

PatchPavel DovgalyukPhilippe Mathieu-DaudéPaolo Bonzini
1/26
2/26
3/26
4/26A-b
5/26A-b
6/26
7/26A-b
8/26
9/26A-b
10/26A-b
11/26
12/26T-b
13/26T-b
14/26Reviewed-off-by A-b
15/26T-b
16/26T-b
17/26T-b
18/26
19/26
20/26A-b
21/26
22/26
23/26
24/26
25/26
26/26R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v2 thread

Cover letter [Qemu-devel] [RFC PATCH v2 00/26] replay additions

Accidentally sent draft version of patches to the mailing list. Please consider this one as the correct one.

This set of patches includex fixes from Alex Bennée for fixing BQL and replay locks after inventing the MTTCG. It also includes some additional replay patches that makes this set of fixes working. It is also fixes some vmstate creation (and loading) issues in record/replay modes:
- VM start/stop fixes in replay mode
- overlay creation for blkreplay filter
- fixes for vmstate save/load in record/replay mode
- fixes for host clock vmstate
- fixes for icount timers vmstate

There is also a set of helper scripts written by Alex Bennée for debugging the record/replay code.

v2 changes:
- updated lock/unlock logic (as suggested by Paolo Bonzini)
- updated cpu execution loop to avoid races in setting/resetting exit request (as suggested by Paolo Bonzini)
- minor changes

---

Alex Bennée (12):
target/arm/arm-powertctl: drop BQL assertions
cpus: push BQL lock to qemu_*_wait_io_event
cpus: only take BQL for sleeping threads replay/replay.c: bump REPLAY_VERSION again replay/replay-internal.c: track holding of replay_lock
replay: make locking visible outside replay code
replay: push replay_mutex_lock up the call tree scripts/qemu-gdb: add simple tcg lock status helper util/qemu-thread-*: add qemu_lock, locked and unlock trace events scripts/analyse-locks-simpletrace.py: script to analyse lock times scripts/replay-dump.py: replay log dumper scripts/qemu-gdb/timers.py: new helper to dump timer state

Pavel Dovgalyuk (14):
block: implement bdrv_snapshot_goto for blkreplay
blkreplay: create temporary overlay for underlaying devices
replay: disable default snapshot for record/replay
replay: fix processing async events
replay: fixed replay_enable_events
replay: fix save/load vm for non-empty queue
replay: added replay log format description
replay: make safe vmstop at record/replay
replay: save prior value of the host clock
icount: fixed saving/restoring of icount warp timers
cpu-exec: don't overwrite exception_index
cpu-exec: reset exit flag before calling cpu_exec_nocache
replay: don't destroy mutex at exit
replay: check return values of fwrite

 accel/kvm/kvm-all.c                  |    4 
 accel/tcg/cpu-exec.c                 |   99 ++++++-----
 block/blkreplay.c                    |   73 ++++++++
 cpus-common.c                        |   13 +
 cpus.c                               |  134 ++++++++++++---
 docs/replay.txt                      |   91 ++++++++++
 include/qemu/thread.h                |   14 +-
 include/qemu/timer.h                 |   14 ++
 include/sysemu/replay.h              |   19 ++
 migration/savevm.c                   |   13 +
 replay/replay-char.c                 |   21 +-
 replay/replay-events.c               |   30 +--
 replay/replay-internal.c             |   35 +++-
 replay/replay-internal.h             |    9 +
 replay/replay-snapshot.c             |    9 +
 replay/replay-time.c                 |   10 +
 replay/replay.c                      |   42 ++---
 scripts/analyse-locks-simpletrace.py |   99 +++++++++++
 scripts/qemu-gdb.py                  |    4 
 scripts/qemugdb/tcg.py               |   46 +++++
 scripts/qemugdb/timers.py            |   54 ++++++
 scripts/replay-dump.py               |  308 ++++++++++++++++++++++++++++++++++
 stubs/replay.c                       |   16 ++
 target/arm/arm-powerctl.c            |    8 -
 target/i386/hax-all.c                |    2 
 util/main-loop.c                     |   17 +-
 util/qemu-thread-posix.c             |   21 +-
 util/qemu-timer.c                    |   12 +
 util/trace-events                    |    7 -
 vl.c                                 |   12 +
 30 files changed, 1053 insertions(+), 183 deletions(-)
 create mode 100755 scripts/analyse-locks-simpletrace.py
 create mode 100644 scripts/qemugdb/tcg.py
 create mode 100644 scripts/qemugdb/timers.py
 create mode 100755 scripts/replay-dump.py
Signature · 1 line
Pavel Dovgalyuk