[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/48] replay: don't process events at virtual clock
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 12/48] replay: don't process events at virtual clock checkpoint |
Date: |
Thu, 18 Oct 2018 22:31:39 +0200 |
From: Pavel Dovgalyuk <address@hidden>
As QEMU becomes more multi-threaded and non-synchronized, checkpoints
move from thread to thread. And the event queue that processed at checkpoints
should belong to the same thread in both record and replay executions.
This patch disables asynchronous event processing at virtual clock
checkpoint, because it may be invoked in different threads at record and
replay. This patch is temporary fix until the checkpoints are completely
refactored.
Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
replay/replay-events.c | 1 +
replay/replay.c | 9 ++++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/replay/replay-events.c b/replay/replay-events.c
index 0964a82..d9a2d49 100644
--- a/replay/replay-events.c
+++ b/replay/replay-events.c
@@ -190,6 +190,7 @@ void replay_save_events(int checkpoint)
{
g_assert(replay_mutex_locked());
g_assert(checkpoint != CHECKPOINT_CLOCK_WARP_START);
+ g_assert(checkpoint != CHECKPOINT_CLOCK_VIRTUAL);
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 379b51a..8b172b2 100644
--- a/replay/replay.c
+++ b/replay/replay.c
@@ -214,7 +214,14 @@ bool replay_checkpoint(ReplayCheckpoint checkpoint)
/* This checkpoint belongs to several threads.
Processing events from different threads is
non-deterministic */
- if (checkpoint != CHECKPOINT_CLOCK_WARP_START) {
+ if (checkpoint != CHECKPOINT_CLOCK_WARP_START
+ /* FIXME: this is temporary fix, other checkpoints
+ may also be invoked from the different threads someday.
+ Asynchronous event processing should be refactored
+ to create additional replay event kind which is
+ nailed to the one of the threads and which processes
+ the event queue. */
+ && checkpoint != CHECKPOINT_CLOCK_VIRTUAL) {
replay_save_events(checkpoint);
}
res = true;
--
1.8.3.1
- [Qemu-devel] [PULL 05/48] qemu-timer: optimize record/replay checkpointing for all clocks, (continued)
- [Qemu-devel] [PULL 05/48] qemu-timer: optimize record/replay checkpointing for all clocks, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 02/48] Revert some patches from recent [PATCH v6] "Fixing record/replay and adding reverse debugging", Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 04/48] qemu-timer: avoid checkpoints for virtual clock timers in external subsystems, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 03/48] qemu-timer: introduce timer attributes, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 09/48] target-i386: add rtc 0x70 port as coalesced_pio, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 01/48] es1370: more fixes for ADC_FRAMEADR and ADC_FRAMECNT, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 06/48] target-i386: kvm: do not initialize padding fields, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 12/48] replay: don't process events at virtual clock checkpoint,
Paolo Bonzini <=
- [Qemu-devel] [PULL 07/48] linux-headers: update to 4.20-rc1, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 08/48] target-i386 : add coalesced_pio API, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 11/48] target-i386: add q35 0xcf8 port as coalesced_pio, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 13/48] i386/kvm: add support for Hyper-V IPI send, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 16/48] vl: improve/fix documentation related to RTC function, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 18/48] Fixes RTC bug with base datetime shifts in clock=vm, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 19/48] vl, qapi: offset calculation in RTC_CHANGE event reverted, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 20/48] call HotplugHandler->plug() as the last step in device realization, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 21/48] hw: edu: drop DO_UPCAST, Paolo Bonzini, 2018/10/18
- [Qemu-devel] [PULL 25/48] hyperv_testdev: drop unnecessary includes, Paolo Bonzini, 2018/10/18