Paul Brook wrote:
Redundant timer rearm optimisation by Anders Melchiorsen.
I think this is incorrect.
When a timer is modified, we need to rearm the host timer immediately. We can
not wait for the old timer to fire, or for execution to fall back to the
main_loop_wait. Consider the case where the guest adds a timer interrupt and
immediately enters a tight loop - Quite a common operation when calibrating a
software delay loop. The timer won't be rearmed until some other event
occurs. It the system is otherwise quiescent and you're not using SDL output
it may never occur.
Hi Paul,
I am certainly open to it not being correct, but currently I fail to see
how it changes the scenario that you mention. The rearming is moved away
from qemu_run_timers(), not qemu_mod_timer(). Can you elaborate?
There was a previous patch to remove the rearming when timers are modified,
http://cvs.savannah.gnu.org/viewvc/qemu/vl.c?root=qemu&view=log#rev1.345
and to me it seems that this might affect the case that you describe.
Cheers,
Anders.