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

[Xen-changelog] Hypercall preemption check also looks for pending event upcalls to



ChangeSet 1.1369, 2005/04/22 17:34:45+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx

        Hypercall preemption check also looks for pending event upcalls to
        guest kernel.
        Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>



 sched.h |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)


diff -Nru a/xen/include/xen/sched.h b/xen/include/xen/sched.h
--- a/xen/include/xen/sched.h   2005-04-22 13:04:06 -04:00
+++ b/xen/include/xen/sched.h   2005-04-22 13:04:06 -04:00
@@ -301,8 +301,11 @@
         (unsigned long)(_a1), (unsigned long)(_a2), (unsigned long)(_a3), \
         (unsigned long)(_a4), (unsigned long)(_a5), (unsigned long)(_a6))
 
-#define hypercall_preempt_check() \
-    (unlikely(softirq_pending(smp_processor_id())))
+#define hypercall_preempt_check() (unlikely(            \
+        softirq_pending(smp_processor_id()) |           \
+        (!!current->vcpu_info->evtchn_upcall_pending &  \
+          !current->vcpu_info->evtchn_upcall_mask)      \
+    ))
 
 /* This domain_hash and domain_list are protected by the domlist_lock. */
 #define DOMAIN_HASH_SIZE 256
@@ -310,11 +313,13 @@
 extern struct domain *domain_hash[DOMAIN_HASH_SIZE];
 extern struct domain *domain_list;
 
-#define for_each_domain(_p) \
- for ( (_p) = domain_list; (_p) != NULL; (_p) = (_p)->next_list )
+#define for_each_domain(_d) \
+ for ( (_d) = domain_list; (_d) != NULL; (_d) = (_d)->next_list )
 
 #define for_each_exec_domain(_d,_ed) \
- for ( (_ed) = _d->exec_domain[0]; (_ed) != NULL; (_ed) = (_ed)->ed_next_list )
+ for ( (_ed) = (_d)->exec_domain[0]; \
+       (_ed) != NULL;                \
+       (_ed) = (_ed)->ed_next_list )
 
 #define EDF_DONEFPUINIT  0 /* Has the FPU been initialised for this task?    */
 #define EDF_USEDFPU      1 /* Has this task used the FPU since last save?    */

_______________________________________________
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®.