WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

[Xen-ia64-devel] [PATCH] fix xen_ssm_i()

To: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-ia64-devel] [PATCH] fix xen_ssm_i()
From: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Date: Mon, 30 Jul 2007 13:21:39 +0900
Delivery-date: Sun, 29 Jul 2007 21:19:23 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ia64-devel-request@lists.xensource.com?subject=help>
List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
List-post: <mailto:xen-ia64-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.4.2.1i
# 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

Attachment: 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>