|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [patch] make hypercall_preempt_check() a little more sensiti
Since PowerPC has a hypervisor mode in the processor, Linux is able to disable
interrupts directly using the EE bit in the MSR (Machine State Register),
just like on hardware. This bit acts like the evtchn_upcall_mask bit.
It would be an invasive patch to PowerPC Linux to modify the code that
disables the EE bit and additionally have it modify
vcpu_info->evtchn_upcall_mask, especially when that code is in assembly.
Instead, we can have hypercall_preempt_check() also check MSR:EE directly.
IA64 may be able to use this facility as well, so I've CC'ed that list.
This patch fixes a problem where an event occurs, Linux calls back into Xen
for e.g. console output, Xen sees that an event is pending and creates a
continuation and returns... loop forever.
Compile-tested on x86. Please apply.
--
Hollis Blanchard
IBM Linux Technology Center
Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxx>
Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>
--- a/xen/include/asm-ia64/domain.h Wed Mar 29 16:42:19 2006 -0600
+++ b/xen/include/asm-ia64/domain.h Thu Mar 30 11:02:47 2006 -0600
@@ -143,6 +143,8 @@ extern struct mm_struct init_mm;
#include <asm/uaccess.h> /* for KERNEL_DS */
#include <asm/pgtable.h>
+#define arch_event_deliverable(v) (1)
+
#endif /* __ASM_DOMAIN_H__ */
/*
diff -r d258c2f68943 xen/include/asm-x86/domain.h
--- a/xen/include/asm-x86/domain.h Wed Mar 29 16:42:19 2006 -0600
+++ b/xen/include/asm-x86/domain.h Thu Mar 30 11:02:47 2006 -0600
@@ -173,6 +173,8 @@ struct arch_vcpu
#define hvm_vmx hvm_vcpu.u.vmx
#define hvm_svm hvm_vcpu.u.svm
+#define arch_event_deliverable(v) (1)
+
#endif /* __ASM_DOMAIN_H__ */
/*
diff -r d258c2f68943 xen/include/xen/sched.h
--- a/xen/include/xen/sched.h Wed Mar 29 16:42:19 2006 -0600
+++ b/xen/include/xen/sched.h Thu Mar 30 11:02:47 2006 -0600
@@ -319,7 +319,8 @@ unsigned long hypercall_create_continuat
#define hypercall_preempt_check() (unlikely( \
softirq_pending(smp_processor_id()) | \
- event_pending(current) \
+ (event_pending(current) & \
+ arch_event_deliverable(current)) \
))
/* This domain_hash and domain_list are protected by the domlist_lock. */
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] [patch] make hypercall_preempt_check() a little more sensitive,
Hollis Blanchard <=
|
|
|
|
|