|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [linux-2.6.18-xen] [IA64] Fix xen_ssm_i()
# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1185815155 21600
# Node ID 0f9032c33df4d7595f87358775b4694d740da583
# Parent e92816da20760df8b8716bbd14f0aec3d2729264
[IA64] Fix xen_ssm_i()
Otherwise interruption may not be delivered.
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
arch/ia64/kernel/gate.S | 18 +++++++++---------
include/asm-ia64/xen/privop.h | 10 ++++------
2 files changed, 13 insertions(+), 15 deletions(-)
diff -r e92816da2076 -r 0f9032c33df4 arch/ia64/kernel/gate.S
--- a/arch/ia64/kernel/gate.S Mon Jul 30 11:03:04 2007 -0600
+++ b/arch/ia64/kernel/gate.S Mon Jul 30 11:05:55 2007 -0600
@@ -149,16 +149,16 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc)
(p6) tbit.z.unc p8,p0=r18,0 // I0 (dual-issues with "mov
b7=r18"!)
#ifdef CONFIG_XEN_IA64_VDSO_PARAVIRT
-#define XEN_SET_PSR_I(pr) \
-(pr) ld1 r31=[r22]; \
-(pr) ld1 r25=[r24]; \
- ;; \
-(pr) st1 [r22]=r0; \
-(pr) cmp.ne.unc p14,p0=r0,r31; \
- ;; \
+#define XEN_SET_PSR_I(pred) \
+(pred) ld1 r31=[r22]; \
+ ;; ; \
+(pred) st1 [r22]=r0; \
+(pred) cmp.ne.unc p14,p0=r0,r31; \
+ ;; ; \
+(p14) ld1 r25=[r24]; \
+ ;; ; \
(p14) cmp.ne.unc p11,p0=r0,r25; \
- ;; \
-(p11) st1 [r22]=r20; \
+ ;; ; \
(p11) XEN_HYPER_SSM_I;
;;
diff -r e92816da2076 -r 0f9032c33df4 include/asm-ia64/xen/privop.h
--- a/include/asm-ia64/xen/privop.h Mon Jul 30 11:03:04 2007 -0600
+++ b/include/asm-ia64/xen/privop.h Mon Jul 30 11:05:55 2007 -0600
@@ -238,12 +238,10 @@ extern void xen_set_eflag(unsigned long)
#define xen_ssm_i() \
({ \
int old = xen_get_virtual_psr_i(); \
- if (!old) { \
- if (xen_get_virtual_pend()) \
- xen_hyper_ssm_i(); \
- else \
- xen_set_virtual_psr_i(1); \
- } \
+ xen_set_virtual_psr_i(1); \
+ barrier(); \
+ if (!old && xen_get_virtual_pend()) \
+ xen_hyper_ssm_i(); \
})
#define xen_ia64_intrin_local_irq_restore(x) \
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [linux-2.6.18-xen] [IA64] Fix xen_ssm_i(),
Xen patchbot-linux-2.6.18-xen <=
|
|
|
|
|