[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 07/18] Revert "util/timer: avoid deadlock when shutting down"
From: |
Alex Bennée |
Subject: |
[PATCH 07/18] Revert "util/timer: avoid deadlock when shutting down" |
Date: |
Mon, 3 Feb 2025 14:40:37 +0000 |
This reverts commit bc02be4508d8753d1f6071b77d10f4661587df6f.
Now we catch attempts to clock_step to the next timer when none are
enabled we can revert the previous attempt to prevent deadlock. As
long as a new target time is given we will move time forward even if
no timers will fire. This is desirable for tests which are checking
that nothing changes when things are disabled.
Previously most tests got away with it because --enable-slirp always
has a timer running while the test is active.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Peter Maydell <peter.maydell@linaro.org>
---
util/qemu-timer.c | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/util/qemu-timer.c b/util/qemu-timer.c
index 0e8a453eaa..3243d2c515 100644
--- a/util/qemu-timer.c
+++ b/util/qemu-timer.c
@@ -675,17 +675,10 @@ int64_t qemu_clock_advance_virtual_time(int64_t dest)
{
int64_t clock = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
AioContext *aio_context;
- int64_t deadline;
-
aio_context = qemu_get_aio_context();
-
- deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL,
- QEMU_TIMER_ATTR_ALL);
- /*
- * A deadline of < 0 indicates this timer is not enabled, so we
- * won't get far trying to run it forward.
- */
- while (deadline >= 0 && clock < dest) {
+ while (clock < dest) {
+ int64_t deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL,
+ QEMU_TIMER_ATTR_ALL);
int64_t warp = qemu_soonest_timeout(dest - clock, deadline);
qemu_virtual_clock_set_ns(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +
warp);
@@ -693,9 +686,6 @@ int64_t qemu_clock_advance_virtual_time(int64_t dest)
qemu_clock_run_timers(QEMU_CLOCK_VIRTUAL);
timerlist_run_timers(aio_context->tlg.tl[QEMU_CLOCK_VIRTUAL]);
clock = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
-
- deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL,
- QEMU_TIMER_ATTR_ALL);
}
qemu_clock_notify(QEMU_CLOCK_VIRTUAL);
--
2.39.5
- [PATCH 00/18] maintainer updates for feb25 (qtest, gdbstub, plugins), Alex Bennée, 2025/02/03
- [PATCH 03/18] tests/qtest: don't step clock at start of npcm7xx periodic IRQ test, Alex Bennée, 2025/02/03
- [PATCH 01/18] tests/docker: replicate the check-rust-tools-nightly CI job, Alex Bennée, 2025/02/03
- [PATCH 02/18] tests/qtest: don't attempt to clock_step while waiting for virtio ISR, Alex Bennée, 2025/02/03
- [PATCH 05/18] tests/qtest: rename qtest_send_prefix and roll-up into qtest_send, Alex Bennée, 2025/02/03
- [PATCH 06/18] tests/qtest: tighten up the checks on clock_step, Alex Bennée, 2025/02/03
- [PATCH 08/18] tests/qtest/migration: Add --full option, Alex Bennée, 2025/02/03
- [PATCH 07/18] Revert "util/timer: avoid deadlock when shutting down",
Alex Bennée <=
- [PATCH 04/18] tests/qtest: simplify qtest_process_inbuf, Alex Bennée, 2025/02/03
- [PATCH 09/18] tests/qtest/migration: Pick smoke tests, Alex Bennée, 2025/02/03
- [PATCH 15/18] gdbstub: Allow late attachment, Alex Bennée, 2025/02/03
- [PATCH 10/18] gdbstub: Allow the %d placeholder in the socket path, Alex Bennée, 2025/02/03
- [PATCH 14/18] osdep: Introduce qemu_kill_thread(), Alex Bennée, 2025/02/03
- [PATCH 12/18] user: Introduce user/signal.h, Alex Bennée, 2025/02/03
- [PATCH 11/18] gdbstub: Try unlinking the unix socket before binding, Alex Bennée, 2025/02/03
- [PATCH 13/18] user: Introduce host_interrupt_signal, Alex Bennée, 2025/02/03