util/async: Only call icount_notify_exit() if icount is enabled

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20231208113529.74067-6-philmd@linaro.org>
master
Philippe Mathieu-Daudé 2023-12-08 12:35:27 +01:00
parent 2412813286
commit 72c603f82f
3 changed files with 13 additions and 9 deletions

View File

@ -495,7 +495,9 @@ bool icount_configure(QemuOpts *opts, Error **errp)
void icount_notify_exit(void)
{
if (icount_enabled() && current_cpu) {
assert(icount_enabled());
if (current_cpu) {
qemu_cpu_kick(current_cpu);
qemu_clock_notify(QEMU_CLOCK_VIRTUAL);
}

View File

@ -45,7 +45,7 @@ void icount_account_warp_timer(void)
{
abort();
}
void icount_notify_exit(void)
{
abort();
}

View File

@ -94,13 +94,15 @@ static void aio_bh_enqueue(QEMUBH *bh, unsigned new_flags)
}
aio_notify(ctx);
/*
* Workaround for record/replay.
* vCPU execution should be suspended when new BH is set.
* This is needed to avoid guest timeouts caused
* by the long cycles of the execution.
*/
icount_notify_exit();
if (unlikely(icount_enabled())) {
/*
* Workaround for record/replay.
* vCPU execution should be suspended when new BH is set.
* This is needed to avoid guest timeouts caused
* by the long cycles of the execution.
*/
icount_notify_exit();
}
}
/* Only called from aio_bh_poll() and aio_ctx_finalize() */