diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-01-08 14:31:23 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-01-08 14:31:23 +0000 |
commit | eefaeb827584c6a6f17726fe1e1f8258276d0137 (patch) | |
tree | 50ac5c8264c12c78ef77c2726a470a0c7a018d72 | |
parent | a4071f906a47241e84a6fb6565902c42e79c7186 (diff) | |
download | xen-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.c | 5 |
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 */ |