[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |