case HVM_PARAM_TIMER_MODE:
rc = -EINVAL;
if ( (a.value != HVMPTM_delay_for_missed_ticks) &&
- (a.value != HVMPTM_no_delay_for_missed_ticks) )
+ (a.value != HVMPTM_no_delay_for_missed_ticks) &&
+ (a.value != HVMPTM_no_missed_tick_accounting) )
goto param_fail;
break;
}
list_for_each_entry ( pt, head, list )
{
if ( !mode_is(v->domain, no_missed_tick_accounting) )
+ {
pt_process_missed_ticks(pt);
+ }
+ else if ( (NOW() - pt->scheduled) >= 0 )
+ {
+ pt->pending_intr_nr++;
+ pt->scheduled = NOW() + pt->period;
+ }
set_timer(&pt->timer, pt->scheduled);
}
{
pt->scheduled += pt->period;
if ( !mode_is(pt->vcpu->domain, no_missed_tick_accounting) )
- {
pt_process_missed_ticks(pt);
- }
- else if ( (NOW() - pt->scheduled) >= 0 )
- {
- pt->pending_intr_nr++;
- pt->scheduled = NOW() + pt->period;
- }
set_timer(&pt->timer, pt->scheduled);
}