uint32_t tmcct, tmict = vlapic_get_reg(vlapic, APIC_TMICT);
uint64_t counter_passed;
- counter_passed = (hvm_get_guest_time(v) - vlapic->timer_last_update) // TSC
- * 1000000000ULL / ticks_per_sec(v) // NS
- / APIC_BUS_CYCLE_NS / vlapic->hw.timer_divisor;
+ counter_passed = ((hvm_get_guest_time(v) - vlapic->timer_last_update)
+ * 1000000000ULL / ticks_per_sec(v)
+ / APIC_BUS_CYCLE_NS / vlapic->hw.timer_divisor);
tmcct = tmict - counter_passed;
HVM_DBG_LOG(DBG_LEVEL_VLAPIC_TIMER,
create_periodic_time(current, &vlapic->pt, period, vlapic->pt.irq,
!vlapic_lvtt_period(vlapic), vlapic_pt_cb,
&vlapic->timer_last_update);
+ vlapic->timer_last_update = vlapic->pt.last_plt_gtime;
HVM_DBG_LOG(DBG_LEVEL_VLAPIC,
"bus cycle is %uns, "
create_periodic_time(vlapic_vcpu(s), &s->pt, period, s->pt.irq,
!vlapic_lvtt_period(s), vlapic_pt_cb,
&s->timer_last_update);
+ s->timer_last_update = s->pt.last_plt_gtime;
printk("lapic_load to rearm the actimer:"
"bus cycle is %uns, "