ia64/xen-unstable

changeset 10926:147144f9ec51

[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@valinux.co.jp>
author awilliam@xenbuild.aw
date Thu Aug 03 11:10:53 2006 -0600 (2006-08-03)
parents 47a5dfd1bcd6
children 3d6c1af609bf
files linux-2.6-xen-sparse/arch/ia64/kernel/gate.S linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S
line diff
     1.1 --- a/linux-2.6-xen-sparse/arch/ia64/kernel/gate.S	Thu Aug 03 11:05:59 2006 -0600
     1.2 +++ b/linux-2.6-xen-sparse/arch/ia64/kernel/gate.S	Thu Aug 03 11:10:53 2006 -0600
     1.3 @@ -130,7 +130,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc)
     1.4  	// r20 = 1
     1.5  	// r22 = &vcpu->evtchn_mask
     1.6  	// r23 = &vpsr.ic
     1.7 -	// r24 = vcpu->pending_interruption
     1.8 +	// r24 = &vcpu->pending_interruption
     1.9  	// r25 = tmp
    1.10  	// r28 = &running_on_xen
    1.11  	// r30 = running_on_xen
     2.1 --- a/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S	Thu Aug 03 11:05:59 2006 -0600
     2.2 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S	Thu Aug 03 11:10:53 2006 -0600
     2.3 @@ -379,30 +379,35 @@ GLOBAL_ENTRY(xen_get_psr)
     2.4  	;; 
     2.5  END(xen_get_psr)
     2.6  
     2.7 +	// see xen_ssm_i() in privop.h
     2.8 +	// r22 = &vcpu->evtchn_mask
     2.9 +	// r23 = &vpsr.ic
    2.10 +	// r24 = &vcpu->pending_interruption
    2.11 +	// r25 = tmp
    2.12 +	// r31 = tmp
    2.13 +	// p11 = tmp
    2.14 +	// p14 = tmp
    2.15 +#define XEN_SET_PSR_I			\
    2.16 +	ld4 r31=[r22];			\
    2.17 +	ld4 r25=[r24];			\
    2.18 +	;;				\
    2.19 +	st4 [r22]=r0;			\
    2.20 +	cmp.ne.unc p14,p0=r0,r31;	\
    2.21 +	;;				\
    2.22 +(p14)	cmp.ne.unc p11,p0=r0,r25;	\
    2.23 +	;;				\
    2.24 +(p11)	st4 [r22]=r20;			\
    2.25 +(p11)	st4 [r23]=r0;			\
    2.26 +(p11)	XEN_HYPER_SSM_I;
    2.27 +		
    2.28  GLOBAL_ENTRY(xen_ssm_i_0)
    2.29 -	st4 [r22]=r20
    2.30 -	ld4 r25=[r24]
    2.31 -	;;
    2.32 -	cmp.ne.unc p11,p0=r0, r25
    2.33 -	;; 
    2.34 -(p11)	st4 [r22]=r0
    2.35 -(p11)	st4 [r23]=r0
    2.36 -(p11)	XEN_HYPER_SSM_I
    2.37 -	
    2.38 +	XEN_SET_PSR_I
    2.39  	brl.cond.sptk	.vdso_ssm_i_0_ret
    2.40  	;; 
    2.41  END(xen_ssm_i_0)
    2.42  
    2.43  GLOBAL_ENTRY(xen_ssm_i_1)
    2.44 -	st4 [r22]=r20
    2.45 -	ld4 r25=[r24]
    2.46 -	;; 
    2.47 -	cmp.ne.unc p11,p0=r0, r25
    2.48 -	;; 
    2.49 -(p11)	st4 [r22]=r0
    2.50 -(p11)	st4 [r23]=r0
    2.51 -(p11)	XEN_HYPER_SSM_I
    2.52 -	;;
    2.53 +	XEN_SET_PSR_I
    2.54  	brl.cond.sptk	.vdso_ssm_i_1_ret
    2.55  	;; 
    2.56  END(xen_ssm_i_1)