[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] fix vDSO paravirtualization.
# HG changeset patch # User awilliam@xxxxxxxxxxx # Node ID 147144f9ec51c5963c878af8acc5bb9830b04608 # Parent 47a5dfd1bcd6203c5c57fc01fc32c94e332ccbb3 [IA64] fix vDSO paravirtualization. sometimes it fails to clear event mask. It results in domain's unstability. And one typo. Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx> --- linux-2.6-xen-sparse/arch/ia64/kernel/gate.S | 2 - linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S | 41 ++++++++++++++----------- 2 files changed, 24 insertions(+), 19 deletions(-) diff -r 47a5dfd1bcd6 -r 147144f9ec51 linux-2.6-xen-sparse/arch/ia64/kernel/gate.S --- a/linux-2.6-xen-sparse/arch/ia64/kernel/gate.S Thu Aug 03 11:05:59 2006 -0600 +++ b/linux-2.6-xen-sparse/arch/ia64/kernel/gate.S Thu Aug 03 11:10:53 2006 -0600 @@ -130,7 +130,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) // r20 = 1 // r22 = &vcpu->evtchn_mask // r23 = &vpsr.ic - // r24 = vcpu->pending_interruption + // r24 = &vcpu->pending_interruption // r25 = tmp // r28 = &running_on_xen // r30 = running_on_xen diff -r 47a5dfd1bcd6 -r 147144f9ec51 linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S --- a/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S Thu Aug 03 11:05:59 2006 -0600 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S Thu Aug 03 11:10:53 2006 -0600 @@ -379,30 +379,35 @@ GLOBAL_ENTRY(xen_get_psr) ;; END(xen_get_psr) + // see xen_ssm_i() in privop.h + // r22 = &vcpu->evtchn_mask + // r23 = &vpsr.ic + // r24 = &vcpu->pending_interruption + // r25 = tmp + // r31 = tmp + // p11 = tmp + // p14 = tmp +#define XEN_SET_PSR_I \ + ld4 r31=[r22]; \ + ld4 r25=[r24]; \ + ;; \ + st4 [r22]=r0; \ + cmp.ne.unc p14,p0=r0,r31; \ + ;; \ +(p14) cmp.ne.unc p11,p0=r0,r25; \ + ;; \ +(p11) st4 [r22]=r20; \ +(p11) st4 [r23]=r0; \ +(p11) XEN_HYPER_SSM_I; + GLOBAL_ENTRY(xen_ssm_i_0) - st4 [r22]=r20 - ld4 r25=[r24] - ;; - cmp.ne.unc p11,p0=r0, r25 - ;; -(p11) st4 [r22]=r0 -(p11) st4 [r23]=r0 -(p11) XEN_HYPER_SSM_I - + XEN_SET_PSR_I brl.cond.sptk .vdso_ssm_i_0_ret ;; END(xen_ssm_i_0) GLOBAL_ENTRY(xen_ssm_i_1) - st4 [r22]=r20 - ld4 r25=[r24] - ;; - cmp.ne.unc p11,p0=r0, r25 - ;; -(p11) st4 [r22]=r0 -(p11) st4 [r23]=r0 -(p11) XEN_HYPER_SSM_I - ;; + XEN_SET_PSR_I brl.cond.sptk .vdso_ssm_i_1_ret ;; END(xen_ssm_i_1) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |