[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v6 18/20] replay: don't process async events whe
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [RFC PATCH v6 18/20] replay: don't process async events when warping the clock |
Date: |
Wed, 07 Feb 2018 15:05:34 +0300 |
User-agent: |
StGit/0.17.1-dirty |
Virtual clock is warped from iothread and vcpu thread. When the hardware
events associated with warp checkpoint, then interrupt delivering may be
non-deterministic if checkpoint is processed in different threads in record
and replay.
This patch disables event processing for clock warp checkpoint and leaves
all hardware events to other checkpoints (e.g., virtual clock).
Signed-off-by: Pavel Dovgalyuk <address@hidden>
--
v4: added assert for replay_save_events function
---
replay/replay-events.c | 1 +
replay/replay.c | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/replay/replay-events.c b/replay/replay-events.c
index 54dd9d2..3d5fc8a 100644
--- a/replay/replay-events.c
+++ b/replay/replay-events.c
@@ -205,6 +205,7 @@ static void replay_save_event(Event *event, int checkpoint)
void replay_save_events(int checkpoint)
{
g_assert(replay_mutex_locked());
+ g_assert(checkpoint != CHECKPOINT_CLOCK_WARP_START);
while (!QTAILQ_EMPTY(&events_list)) {
Event *event = QTAILQ_FIRST(&events_list);
replay_save_event(event, checkpoint);
diff --git a/replay/replay.c b/replay/replay.c
index c676dd4..e3794fc 100644
--- a/replay/replay.c
+++ b/replay/replay.c
@@ -211,7 +211,12 @@ bool replay_checkpoint(ReplayCheckpoint checkpoint)
} else if (replay_mode == REPLAY_MODE_RECORD) {
g_assert(replay_mutex_locked());
replay_put_event(EVENT_CHECKPOINT + checkpoint);
- replay_save_events(checkpoint);
+ /* This checkpoint belongs to several threads.
+ Processing events from different threads is
+ non-deterministic */
+ if (checkpoint != CHECKPOINT_CLOCK_WARP_START) {
+ replay_save_events(checkpoint);
+ }
res = true;
}
out:
- [Qemu-devel] [RFC PATCH v6 07/20] replay: fix save/load vm for non-empty queue, (continued)
- [Qemu-devel] [RFC PATCH v6 07/20] replay: fix save/load vm for non-empty queue, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 08/20] replay: added replay log format description, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 09/20] replay: save prior value of the host clock, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 10/20] replay/replay.c: bump REPLAY_VERSION again, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 11/20] replay/replay-internal.c: track holding of replay_lock, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 12/20] replay: make locking visible outside replay code, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 13/20] replay: push replay_mutex_lock up the call tree, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 14/20] replay: don't destroy mutex at exit, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 15/20] replay: check return values of fwrite, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 16/20] replay: avoid recursive call of checkpoints, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 18/20] replay: don't process async events when warping the clock,
Pavel Dovgalyuk <=
- [Qemu-devel] [RFC PATCH v6 19/20] replay: save vmstate of the asynchronous events, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 17/20] scripts/replay-dump.py: replay log dumper, Pavel Dovgalyuk, 2018/02/07
- [Qemu-devel] [RFC PATCH v6 20/20] replay: don't drain/flush bdrv queue while RR is working, Pavel Dovgalyuk, 2018/02/07
- Re: [Qemu-devel] [RFC PATCH v6 00/20] replay additions, Ciro Santilli, 2018/02/07
- Re: [Qemu-devel] [RFC PATCH v6 00/20] replay additions, Pavel Dovgalyuk, 2018/02/07
- Re: [Qemu-devel] [RFC PATCH v6 00/20] replay additions, Ciro Santilli, 2018/02/08
- Re: [Qemu-devel] [RFC PATCH v6 00/20] replay additions, Ciro Santilli, 2018/02/09
- Re: [Qemu-devel] [RFC PATCH v6 00/20] replay additions, Pavel Dovgalyuk, 2018/02/12
- Re: [Qemu-devel] [RFC PATCH v6 00/20] replay additions, Ciro Santilli, 2018/02/13
- Re: [Qemu-devel] [RFC PATCH v6 00/20] replay additions, Pavel Dovgalyuk, 2018/02/13