RFC replay additions
Get series with b4
b4 am 20171114081630.27640.53933.stgit@pasha-VirtualBoxVersions newest first · linked by author and title
- v2 RFC Latest posting 2/226 patches 10 repliesIn review
- v2 RFC posting 1/23 of 26 patches 0 repliesSuperseded
- 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 files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/26 | block: implement bdrv_snapshot_goto for blkreplayblock/ | +8 | 0 replies | |
| 2/26 | blkreplay: create temporary overlay for underlaying devicesblock/ stubs/ vl.c | +67 | 0 replies | |
| 3/26 | replay: disable default snapshot for record/replayvl.c | +7 | 0 replies | |
| 4/26 | replay: fix processing async eventsreplay/ | +2 | 1 reply | |
| 5/26 | replay: fixed replay_enable_eventsreplay/ | +5 | 1 reply | |
| 6/26 | replay: fix save/load vm for non-empty queueinclude/ migration/ replay/ | +22 | 0 replies | |
| 7/26 | replay: added replay log format descriptiondocs/ | +69 | 1 reply | |
| 8/26 | replay: make safe vmstop at record/replaycpus.c | +4 | 0 replies | |
| 9/26 | replay: save prior value of the host clockinclude/ replay/ replay/ +1 more | +31 | 1 reply | |
| 10/26 | icount: fixed saving/restoring of icount warp timerscpus.c | +66 | 1 reply | |
| 11/26 | target/arm/arm-powertctl: drop BQL assertionstarget/ | +0 | 0 replies | |
| 12/26 | cpus: push BQL lock to qemu_*_wait_io_eventaccel/ cpus.c target/ | +20 | 0 replies | |
| 13/26 | cpus: only take BQL for sleeping threadscpus-common.c cpus.c | +9 | 0 replies | |
| 14/26 | replay/replay.c: bump REPLAY_VERSION againreplay/ replay/ | +2 | 1 reply | |
| 15/26 | replay/replay-internal.c: track holding of replay_lockreplay/ | +11 | 0 replies | |
| 16/26 | replay: make locking visible outside replay codeinclude/ replay/ replay/ +1 more | +35 | 0 replies | |
| 17/26 | replay: push replay_mutex_lock up the call treecpus.c docs/ include/ +7 more | +116 | 0 replies | |
| 18/26 | cpu-exec: don't overwrite exception_indexaccel/ | +3 | 1 reply | |
| 19/26 | cpu-exec: reset exit flag before calling cpu_exec_nocacheaccel/ | +54 | 1 reply | |
| 20/26 | replay: don't destroy mutex at exitreplay/ | +0 | 1 reply | |
| 21/26 | replay: check return values of fwritereplay/ | +3 | 1 reply | |
| 22/26 | scripts/qemu-gdb: add simple tcg lock status helperscripts/ scripts/ | +48 | 0 replies | |
| 23/26 | util/qemu-thread-*: add qemu_lock, locked and unlock trace eventsinclude/ util/ util/ | +26 | 0 replies | |
| 24/26 | scripts/analyse-locks-simpletrace.py: script to analyse lock timesscripts/ | +99 | 0 replies | |
| 25/26 | scripts/replay-dump.py: replay log dumperscripts/ | +308 | 0 replies | |
| 26/26 | scripts/qemu-gdb/timers.py: new helper to dump timer statescripts/ scripts/ | +56 | 0 replies |
Reviews trailers per patch
8 of 26 patches have a Reviewed-by or Acked-by.
| Patch | Pavel Dovgalyuk | Philippe Mathieu-Daudé | Paolo Bonzini |
|---|---|---|---|
| 1/26 | |||
| 2/26 | |||
| 3/26 | |||
| 4/26 | A-b | ||
| 5/26 | A-b | ||
| 6/26 | |||
| 7/26 | A-b | ||
| 8/26 | |||
| 9/26 | A-b | ||
| 10/26 | A-b | ||
| 11/26 | |||
| 12/26 | T-b | ||
| 13/26 | T-b | ||
| 14/26 | Reviewed-off-by | A-b | |
| 15/26 | T-b | ||
| 16/26 | T-b | ||
| 17/26 | T-b | ||
| 18/26 | |||
| 19/26 | |||
| 20/26 | A-b | ||
| 21/26 | |||
| 22/26 | |||
| 23/26 | |||
| 24/26 | |||
| 25/26 | |||
| 26/26 | R-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.
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