[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] hvm: local_events_need_delivery() must take into account VLAPIC/PIC status.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1172085136 0
# Node ID 87f31a0db841b3be5be938213adf2bd47acf3080
# Parent  335a8280ab1d9a874f98e293828a04f642185fba
hvm: local_events_need_delivery() must take into account VLAPIC/PIC status.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/include/asm-x86/event.h |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff -r 335a8280ab1d -r 87f31a0db841 xen/include/asm-x86/event.h
--- a/xen/include/asm-x86/event.h       Wed Feb 21 18:54:48 2007 +0000
+++ b/xen/include/asm-x86/event.h       Wed Feb 21 19:12:16 2007 +0000
@@ -10,6 +10,7 @@
 #define __ASM_EVENT_H__
 
 #include <xen/shared.h>
+#include <asm/hvm/irq.h> /* cpu_has_pending_irq() */
 
 static inline void vcpu_kick(struct vcpu *v)
 {
@@ -37,9 +38,9 @@ static inline int local_events_need_deli
 static inline int local_events_need_delivery(void)
 {
     struct vcpu *v = current;
-    /* Note: Bitwise operations result in fast code with no branches. */
-    return (!!vcpu_info(v, evtchn_upcall_pending) &
-             !vcpu_info(v, evtchn_upcall_mask));
+    return ((vcpu_info(v, evtchn_upcall_pending) &&
+             !vcpu_info(v, evtchn_upcall_mask)) ||
+            (is_hvm_vcpu(v) && cpu_has_pending_irq(v)));
 }
 
 static inline int local_event_delivery_is_enabled(void)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.