|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
[Xen-ia64-devel] [PATCH] fix xen_ssm_i()
# HG changeset patch
# User yamahata@xxxxxxxxxxxxx
# Date 1185765493 -32400
# Node ID a28df3d821260d96b234f7133353be347bd4b140
# Parent b0bf9ba32bfe341af07da97d57572659c920fd30
fix xen_ssm_i(). otherwise interruption may not be delivered.
PATCHNAME: fix_xen_ssm_i
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
diff -r b0bf9ba32bfe -r a28df3d82126 arch/ia64/kernel/gate.S
--- a/arch/ia64/kernel/gate.S Fri Jul 27 08:15:50 2007 -0600
+++ b/arch/ia64/kernel/gate.S Mon Jul 30 12:18:13 2007 +0900
@@ -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 b0bf9ba32bfe -r a28df3d82126 include/asm-ia64/xen/privop.h
--- a/include/asm-ia64/xen/privop.h Fri Jul 27 08:15:50 2007 -0600
+++ b/include/asm-ia64/xen/privop.h Mon Jul 30 12:18:13 2007 +0900
@@ -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) \
--
yamahata
158_a28df3d82126_fix_xen_ssm_i.patch
Description: Text Data
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-ia64-devel] [PATCH] fix xen_ssm_i(),
Isaku Yamahata <=
|
|
|
|
|