|
|
|
|
|
|
|
|
|
|
xen-changelog
[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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] [IA64] fix vDSO paravirtualization.,
Xen patchbot-unstable <=
|
|
|
|
|