From: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, peter.maydell@linaro.org,
boost.lists@gmail.com, quintela@redhat.com, jasowang@redhat.com,
mst@redhat.com, zuban32s@gmail.com,
maria.klimushenkova@ispras.ru, dovgaluk@ispras.ru,
kraxel@redhat.com, pavel.dovgaluk@ispras.ru, pbonzini@redhat.com,
alex.bennee@linaro.org
Subject: [Qemu-devel] [RFC PATCH v3 00/30] replay additions
Date: Thu, 11 Jan 2018 11:24:53 +0300 [thread overview]
Message-ID: <20180111082452.27295.85707.stgit@pasha-VirtualBox> (raw)
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.
v3 changes:
- removed upstreamed patches
- fixed bug with recursive checkpoints
- fixed bug with icount warp checkpoint
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 (18):
hpet: recover timer offset correctly
cpu: flush TB cache when loading VMState
This patch adds a condition before overwriting exception_index fields.
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
replay: don't destroy mutex at exit
replay: check return values of fwrite
replay: avoid recursive call of checkpoints
replay: improve replay performance
replay: don't process async events when warping the clock
accel/kvm/kvm-all.c | 4
accel/tcg/cpu-exec.c | 5 -
block/blkreplay.c | 73 ++++++++
cpus-common.c | 13 +
cpus.c | 184 +++++++++++++++-----
docs/replay.txt | 91 ++++++++++
exec.c | 1
hw/timer/hpet.c | 30 +++
include/hw/compat.h | 6 +
include/qemu/thread.h | 19 ++
include/qemu/timer.h | 14 ++
include/sysemu/replay.h | 22 ++
migration/savevm.c | 13 +
replay/replay-char.c | 21 +-
replay/replay-events.c | 30 +--
replay/replay-internal.c | 48 +++++
replay/replay-internal.h | 9 +
replay/replay-snapshot.c | 9 +
replay/replay-time.c | 10 +
replay/replay.c | 75 ++++++--
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 +
33 files changed, 1112 insertions(+), 171 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
--
Pavel Dovgalyuk
next reply other threads:[~2018-01-11 8:24 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-11 8:24 Pavel Dovgalyuk [this message]
2018-01-11 8:24 ` [Qemu-devel] [RFC PATCH v3 01/30] hpet: recover timer offset correctly Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 02/30] cpu: flush TB cache when loading VMState Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 03/30] This patch adds a condition before overwriting exception_index fields Pavel Dovgalyuk
2018-01-11 12:29 ` Paolo Bonzini
2018-01-12 6:12 ` Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 04/30] block: implement bdrv_snapshot_goto for blkreplay Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 05/30] blkreplay: create temporary overlay for underlaying devices Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 06/30] replay: disable default snapshot for record/replay Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 07/30] replay: fix processing async events Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 08/30] replay: fixed replay_enable_events Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 09/30] replay: fix save/load vm for non-empty queue Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 10/30] replay: added replay log format description Pavel Dovgalyuk
2018-01-11 8:25 ` [Qemu-devel] [RFC PATCH v3 11/30] replay: make safe vmstop at record/replay Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 12/30] replay: save prior value of the host clock Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 13/30] icount: fixed saving/restoring of icount warp timers Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 14/30] target/arm/arm-powertctl: drop BQL assertions Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 15/30] cpus: push BQL lock to qemu_*_wait_io_event Pavel Dovgalyuk
2018-01-11 12:50 ` Paolo Bonzini
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 16/30] cpus: only take BQL for sleeping threads Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 17/30] replay/replay.c: bump REPLAY_VERSION again Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 18/30] replay/replay-internal.c: track holding of replay_lock Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 19/30] replay: make locking visible outside replay code Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 20/30] replay: push replay_mutex_lock up the call tree Pavel Dovgalyuk
2018-01-11 8:26 ` [Qemu-devel] [RFC PATCH v3 21/30] replay: don't destroy mutex at exit Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 22/30] replay: check return values of fwrite Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 23/30] replay: avoid recursive call of checkpoints Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 24/30] scripts/qemu-gdb: add simple tcg lock status helper Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 25/30] util/qemu-thread-*: add qemu_lock, locked and unlock trace events Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 26/30] scripts/analyse-locks-simpletrace.py: script to analyse lock times Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 27/30] scripts/replay-dump.py: replay log dumper Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 28/30] scripts/qemu-gdb/timers.py: new helper to dump timer state Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 29/30] replay: improve replay performance Pavel Dovgalyuk
2018-01-11 12:55 ` Paolo Bonzini
2018-01-11 13:12 ` Pavel Dovgalyuk
2018-01-11 13:22 ` Paolo Bonzini
2018-01-12 6:13 ` Pavel Dovgalyuk
2018-01-12 12:10 ` Paolo Bonzini
2018-01-12 12:41 ` Pavel Dovgalyuk
2018-01-11 8:27 ` [Qemu-devel] [RFC PATCH v3 30/30] replay: don't process async events when warping the clock Pavel Dovgalyuk
2018-01-11 12:37 ` Paolo Bonzini
2018-01-12 7:20 ` Pavel Dovgalyuk
2018-01-11 8:54 ` [Qemu-devel] [RFC PATCH v3 00/30] replay additions no-reply
2018-01-11 8:55 ` no-reply
2018-01-11 12:56 ` Paolo Bonzini
2018-01-12 9:32 ` Paolo Bonzini
2018-01-12 12:07 ` Pavel Dovgalyuk
2018-01-12 12:11 ` Paolo Bonzini
2018-01-19 6:35 ` Pavel Dovgalyuk
2018-01-19 7:41 ` Paolo Bonzini
2018-01-19 7:45 ` Pavel Dovgalyuk
-- strict thread matches above, loose matches on Subject: below --
2018-05-02 18:23 Dominique Fuchs
2018-05-02 19:12 ` Pavel Dovgalyuk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180111082452.27295.85707.stgit@pasha-VirtualBox \
--to=pavel.dovgaluk@ispras.ru \
--cc=alex.bennee@linaro.org \
--cc=boost.lists@gmail.com \
--cc=dovgaluk@ispras.ru \
--cc=jasowang@redhat.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=maria.klimushenkova@ispras.ru \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=zuban32s@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).