diff options
author | Pavel Dovgalyuk | 2022-05-27 12:46:13 +0200 |
---|---|---|
committer | Paolo Bonzini | 2022-06-06 09:26:53 +0200 |
commit | 75bbe5e5ec2867f098a31bfd553a1fb084289cc2 (patch) | |
tree | 895f50a89f5f2505921e4d5d4b763527c643f0fb /softmmu | |
parent | replay: fix event queue flush for qemu shutdown (diff) | |
download | qemu-75bbe5e5ec2867f098a31bfd553a1fb084289cc2.tar.gz qemu-75bbe5e5ec2867f098a31bfd553a1fb084289cc2.tar.xz qemu-75bbe5e5ec2867f098a31bfd553a1fb084289cc2.zip |
replay: notify vCPU when BH is scheduled
vCPU execution should be suspended when new BH is scheduled.
This is needed to avoid guest timeouts caused by the long cycles
of the execution. In replay mode execution may hang when
vCPU sleeps and block event comes to the queue.
This patch adds notification which wakes up vCPU or interrupts
execution of guest code.
Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
--
v2: changed first_cpu to current_cpu (suggested by Richard Henderson)
v4: moved vCPU notification to aio_bh_enqueue (suggested by Paolo Bonzini)
Message-Id: <165364837317.688121.17680519919871405281.stgit@pasha-ThinkPad-X280>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'softmmu')
-rw-r--r-- | softmmu/icount.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/softmmu/icount.c b/softmmu/icount.c index 5ca271620d..1cafec5014 100644 --- a/softmmu/icount.c +++ b/softmmu/icount.c @@ -486,3 +486,11 @@ void icount_configure(QemuOpts *opts, Error **errp) qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + NANOSECONDS_PER_SECOND / 10); } + +void icount_notify_exit(void) +{ + if (icount_enabled() && current_cpu) { + qemu_cpu_kick(current_cpu); + qemu_clock_notify(QEMU_CLOCK_VIRTUAL); + } +} |