On 05/03/2017 11:32 PM, Paolo Bonzini wrote:
On 12/04/2017 11:51, guangrong.xiao@xxxxxxxxx wrote:
+#ifdef TARGET_I386
+ /*
+ * if more than period clocks were passed, i.e, the timer interrupt
+ * has been lost, we should catch up the time.
+ */
+ if (s->lost_tick_policy == LOST_TICK_POLICY_SLEW &&
+ (lost_clo / period)) {
+ int lost_interrupt = lost_clock / period;
+
+ s->irq_coalesced += lost_interrupt;
+ lost_clock -= lost_interrupt * period;
+ if (lost_interrupt) {
+ DPRINTF_C("cmos: compensate %d interrupts, coalesced irqs "
+ "increased to %d\n", lost_interrupt,
+ s->irq_coalesced);
+ rtc_coalesced_timer_update(s);
+ }
I think you should merge these two patches, since both of them
essentially update the number of coalesced ticks and then split it
between s->irq_coalesced and lost_clock.
I thought these two patches fix two different issues, one for clock
lost for coalesced-irq and another for period reconfiguration. Your
suggestion sounds reasonable indeed, will merged them in the next
version. :)