diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-04-04 19:17:39 +0100 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-04-04 19:17:39 +0100 |
commit | 79f84ceeb54544278305df540d833ac74709ac4b (patch) | |
tree | a805727675943798cb93f343d6a255b22b33e925 /xen/include/asm-x86/event.h | |
parent | 5967572aaba45da2551f8ad0e79e0b6062f3507d (diff) | |
download | xen-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.h | 7 |
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) |