Il 04/07/2014 09:30, Frederic Konrad ha scritto:
+ /*
+ * In icount mode, sometimes the VCPU is blocked and an event is
needed to
+ * continue.
+ * Just warp to make the time grows and have a chance to run the
CPU.
+ */
+ qemu_clock_warp(QEMU_CLOCK_VIRTUAL);
return ret;
}
Paolo,
You mentioned some icount patches (I can't find where) can you point me
to them?
Did you already had this bug?
Why is this needed? It's possible that a qemu_clock_warp code is
missing somewhere, but for timers it should be handled here:
static void timerlist_rearm(QEMUTimerList *timer_list)
{
/* Interrupt execution to force deadline recalculation. */
qemu_clock_warp(timer_list->clock->type);
timerlist_notify(timer_list);
}
If the VCPU is blocked, it will set vm_clock_warp_start to the
realtime clock value ("clock") a QEMU_CLOCK_REALTIME timer to the next
deadline ("clock + deadline"). At the next deadline, icount_warp_rt
will increase QEMU_CLOCK_VIRTUAL by "clock - vm_clock_warp_state"
which should trigger the clock event.