-icount,sleep=off mode is broken (target slows down or hangs)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
QEMU running with options "-icount,sleep=off -rtc clock=vm" doesn't execute emulation at maximum possible speed.
Target virtual clock may run faster or slower than realtime clock by N times, where N value depends on various unrelated conditions (i.e. random from the user point of view). The worst case is when target hangs (hopefully, early in booting stage).
Example scenarios I've described here: http://
QEMU process just sleeps most of the time (polling, waiting some condition, etc.). I've tried to debug issue and came to 99% conclusion that there are racing somewhere in qemu internals.
The feature is broken since v2.6.0 release.
Bad commit is 281b2201e4e18d5
icount: remove obsolete warp call
qemu_clock_warp call in qemu_tcg_
anymore, because it is called in every iteration of main_loop_wait.
Reviewed-by: Paolo Bonzini <email address hidden>
Signed-off-by: Pavel Dovgalyuk <email address hidden>
Message-Id: <20160310115603
Signed-off-by: Paolo Bonzini <email address hidden>
I've reverted commit to all major releases and latest git master branch. Issue was fixed for all of them. My adaptation is trivial: just restoring removed function call before "qemu_cond_
I'm sure following bugs are just particular cases of the issue: #1774677, #1653063 .
This modification also fixes issue: /git.greensocs. com/qemu/ qbox/commit/ a8ed106032e375e 715a531d6e93e4d 9ec295dbdb
https:/
Although I tested it only on v2.12.0 and didn't noticed performance improvement.