icount: don't adjust virtual time backwards after warp
commit67f85346ca9305d9fb3254ceff735ceaadeb0911
authorNicholas Piggin <npiggin@gmail.com>
Tue, 27 Jun 2023 06:14:06 +0000 (27 16:14 +1000)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 27 Jun 2023 07:00:13 +0000 (27 09:00 +0200)
tree463b967b5cce984a1ff6097e37f91628736c35d2
parent4329d049d5b8d4af71c6b399d64a6d1b98856318
icount: don't adjust virtual time backwards after warp

The icount-based QEMU_CLOCK_VIRTUAL runs ahead of the RT clock at times.
When warping, it is possible it is still ahead at the end of the warp,
which causes icount adaptive mode to adjust it backward. This can result
in the machine observing time going backwards.

Prevent this by clamping adaptive adjustment to 0 at minimum.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Message-ID: <20230627061406.241847-1-npiggin@gmail.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
softmmu/icount.c