From fc6b2dbac1d57fc24420fb8ee25911eb6f1d1fb5 Mon Sep 17 00:00:00 2001 From: Pavel Dovgalyuk Date: Thu, 19 Dec 2019 15:46:28 +0300 Subject: [PATCH] replay: check other timers for icount limit Record/replay can stall when there are no virtual devices that generate events - it just uses all the time for vCPU thread. Therefore main loop has to wait too much for the vCPU thread, because they are synchronized in rr mode. This patch does not let creating too long vCPU executions without interrupting to main loop. It checks realtime timers that always exits to control user input. Signed-off-by: Pavel Dovgalyuk Message-Id: <157675958855.14346.18049977447896411847.stgit@pasha-Precision-3630-Tower> Signed-off-by: Paolo Bonzini --- cpus.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cpus.c b/cpus.c index b472378b70..be2d655f37 100644 --- a/cpus.c +++ b/cpus.c @@ -1316,6 +1316,10 @@ static int64_t tcg_get_icount_limit(void) */ deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL, QEMU_TIMER_ATTR_ALL); + /* Check realtime timers, because they help with input processing */ + deadline = qemu_soonest_timeout(deadline, + qemu_clock_deadline_ns_all(QEMU_CLOCK_REALTIME, + QEMU_TIMER_ATTR_ALL)); /* Maintain prior (possibly buggy) behaviour where if no deadline * was set (as there is no QEMU_CLOCK_VIRTUAL timer) or it is more than -- 2.42.0