diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-03-09 13:50:45 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-03-09 13:50:45 +0000 |
commit | 4720717da59bf8d4ea2852bf7b7caa99959f554d (patch) | |
tree | db621067e8b06dca8f576ec8c6f7fa5ff56e356d /xen/arch/x86/hvm/vpt.c | |
parent | 6874f240997b2ec2a1398a91bca529a11929b017 (diff) | |
download | xen-4720717da59bf8d4ea2852bf7b7caa99959f554d.tar.gz xen-4720717da59bf8d4ea2852bf7b7caa99959f554d.tar.bz2 xen-4720717da59bf8d4ea2852bf7b7caa99959f554d.zip |
hvm/vpt: Check that an irq is not blocked before waking the vcpu
Currently, when a timer fires for a vpt interrupt, the interrupt
handler calls vcpu_kick() without checking to see if the IRQ is
blocked. This causes the vcpu to wake up out of a halt when it
shouldn't.
Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Diffstat (limited to 'xen/arch/x86/hvm/vpt.c')
-rw-r--r-- | xen/arch/x86/hvm/vpt.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/xen/arch/x86/hvm/vpt.c b/xen/arch/x86/hvm/vpt.c index fe4ec99129..929d4cf57d 100644 --- a/xen/arch/x86/hvm/vpt.c +++ b/xen/arch/x86/hvm/vpt.c @@ -209,7 +209,8 @@ static void pt_timer_fn(void *data) set_timer(&pt->timer, pt->scheduled); } - vcpu_kick(pt->vcpu); + if ( !pt_irq_masked(pt) ) + vcpu_kick(pt->vcpu); pt_unlock(pt); } |