Hi.

If a domain issues a hypercall with psr.i = 0 (balloon driver does)
with event pending, a domain results in infinit loop.
The attached patch is a work around by xen side.

Another way is modifying domain. i.e. patching xen_set_virtual_psr_i().
Which is better?

-- 
yamahata
# HG changeset patch
# User [EMAIL PROTECTED]
# Node ID 53e6d6445e6bbbe59ed1f1c503a633e84470d497
# Parent  d75a6cc5e68abe8541c326afa2a614bf1973c609
work around: hypercall_preempt_check()
PATCHNAME: work_around_hypercall_preempt_check_on_ia64

Signed-off-by: Isaku Yamahata <[EMAIL PROTECTED]>

diff -r d75a6cc5e68a -r 53e6d6445e6b xen/include/xen/sched.h
--- a/xen/include/xen/sched.h   Tue Mar 28 08:54:58 2006 -0700
+++ b/xen/include/xen/sched.h   Wed Mar 29 22:58:09 2006 +0900
@@ -317,10 +317,18 @@ unsigned long hypercall_create_continuat
 unsigned long hypercall_create_continuation(
     unsigned int op, const char *format, ...);
 
+#ifndef __ia64__
 #define hypercall_preempt_check() (unlikely(    \
         softirq_pending(smp_processor_id()) |   \
         event_pending(current)                  \
     ))
+#else
+#define hypercall_preempt_check() (unlikely(            \
+        softirq_pending(smp_processor_id()) |           \
+        (event_pending(current) &&                      \
+         PSCB(current, interrupt_delivery_enabled))     \
+    ))
+#endif
 
 /* This domain_hash and domain_list are protected by the domlist_lock. */
 #define DOMAIN_HASH_SIZE 256
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to