aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/event.h
diff options
context:
space:
mode:
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-04-04 19:17:39 +0100
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-04-04 19:17:39 +0100
commit79f84ceeb54544278305df540d833ac74709ac4b (patch)
treea805727675943798cb93f343d6a255b22b33e925 /xen/include/asm-x86/event.h
parent5967572aaba45da2551f8ad0e79e0b6062f3507d (diff)
downloadxen-79f84ceeb54544278305df540d833ac74709ac4b.tar.gz
xen-79f84ceeb54544278305df540d833ac74709ac4b.tar.bz2
xen-79f84ceeb54544278305df540d833ac74709ac4b.zip
hvm: local_events_need_delivery() should take notice of EFLAGS.IF.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/include/asm-x86/event.h')
-rw-r--r--xen/include/asm-x86/event.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/xen/include/asm-x86/event.h b/xen/include/asm-x86/event.h
index 09440bcc4a..32b157b8db 100644
--- a/xen/include/asm-x86/event.h
+++ b/xen/include/asm-x86/event.h
@@ -35,12 +35,13 @@ static inline void vcpu_mark_events_pending(struct vcpu *v)
vcpu_kick(v);
}
+int hvm_local_events_need_delivery(struct vcpu *v);
static inline int local_events_need_delivery(void)
{
struct vcpu *v = current;
- return ((vcpu_info(v, evtchn_upcall_pending) &&
- !vcpu_info(v, evtchn_upcall_mask)) ||
- (is_hvm_vcpu(v) && cpu_has_pending_irq(v)));
+ return (is_hvm_vcpu(v) ? hvm_local_events_need_delivery(v) :
+ (vcpu_info(v, evtchn_upcall_pending) &&
+ !vcpu_info(v, evtchn_upcall_mask)));
}
static inline int local_event_delivery_is_enabled(void)