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-changelog

[Xen-changelog] [linux-2.6.18-xen] [IA64] Fix xen_ssm_i()

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [linux-2.6.18-xen] [IA64] Fix xen_ssm_i()
From: "Xen patchbot-linux-2.6.18-xen" <patchbot-linux-2.6.18-xen@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 07 Sep 2007 09:10:23 -0700
Delivery-date: Fri, 07 Sep 2007 09:11:16 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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 <=