aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-01-08 14:31:23 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-01-08 14:31:23 +0000
commiteefaeb827584c6a6f17726fe1e1f8258276d0137 (patch)
tree50ac5c8264c12c78ef77c2726a470a0c7a018d72
parenta4071f906a47241e84a6fb6565902c42e79c7186 (diff)
downloadxen-eefaeb827584c6a6f17726fe1e1f8258276d0137.tar.gz
xen-eefaeb827584c6a6f17726fe1e1f8258276d0137.tar.bz2
xen-eefaeb827584c6a6f17726fe1e1f8258276d0137.zip
hvm: time: Fixes to 'SYNC' (no_missed_ticks_pending) timer handling.
Based on a patch by Dave Winchell <dwinchell@virtualiron.com> Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
-rw-r--r--xen/arch/x86/hvm/vpt.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/xen/arch/x86/hvm/vpt.c b/xen/arch/x86/hvm/vpt.c
index 2879a66d55..16f886647d 100644
--- a/xen/arch/x86/hvm/vpt.c
+++ b/xen/arch/x86/hvm/vpt.c
@@ -167,6 +167,7 @@ static void pt_timer_fn(void *data)
pt_lock(pt);
pt->pending_intr_nr++;
+ pt->do_not_freeze = 0;
if ( !pt->one_shot )
{
@@ -253,7 +254,6 @@ void pt_intr_post(struct vcpu *v, struct hvm_intack intack)
return;
}
- pt->do_not_freeze = 0;
pt->irq_issued = 0;
if ( pt->one_shot )
@@ -264,7 +264,8 @@ void pt_intr_post(struct vcpu *v, struct hvm_intack intack)
}
else
{
- if ( mode_is(v->domain, one_missed_tick_pending) )
+ if ( mode_is(v->domain, one_missed_tick_pending) ||
+ mode_is(v->domain, no_missed_ticks_pending) )
{
pt->last_plt_gtime = hvm_get_guest_time(v);
pt->pending_intr_nr = 0; /* 'collapse' all missed ticks */