On 09.06.2014 21:36, Alex Bligh wrote: > On 9 Jun 2014, at 17:42, Sergey Fedorov wrote: > >> If there is no deadline across all timerlists attached to the clock >> then qemu_clock_deadline_ns_all() returns -1. Cast it to unsinged so >> MIN() do not treat it as minimum. >> >> Signed-off-by: Sergey Fedorov <serge.f...@gmail.com> >> --- >> cpus.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/cpus.c b/cpus.c >> index dd7ac13..3ec15cb 100644 >> --- a/cpus.c >> +++ b/cpus.c >> @@ -346,8 +346,8 @@ void qtest_clock_warp(int64_t dest) >> int64_t clock = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); >> assert(qtest_enabled()); >> while (clock < dest) { >> - int64_t deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL); >> - int64_t warp = MIN(dest - clock, deadline); >> + uint64_t deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL); >> + uint64_t warp = MIN(dest - clock, deadline); > Please don't do that. It looks like a bug where you've not read the return > type. > > Instead, just do > > int64_t warp = qemu_soonest_timeout(dest - clock, deadline); > > which puts all the ugly casting stuff in one nicely documented inline function > and will generate the same code.
Thank you! I'm resubmitting the patch. > >> seqlock_write_lock(&timers_state.vm_clock_seqlock); >> qemu_icount_bias += warp; >> seqlock_write_unlock(&timers_state.vm_clock_seqlock); >> -- >> 1.9.1 >> >> >>