diff options
author | Alex Williamson <alex.williamson@hp.com> | 2007-12-30 12:56:16 -0700 |
---|---|---|
committer | Alex Williamson <alex.williamson@hp.com> | 2007-12-30 12:56:16 -0700 |
commit | 3be10ebb0105449915b29d3fa393cc5b07b1b7ca (patch) | |
tree | 75fa241ea38b785c9d70c59b4f374dd429f05696 | |
parent | cb01185e0e63ae1191771b13fba9cdffe8b9afd0 (diff) | |
download | xen-3be10ebb0105449915b29d3fa393cc5b07b1b7ca.tar.gz xen-3be10ebb0105449915b29d3fa393cc5b07b1b7ca.tar.bz2 xen-3be10ebb0105449915b29d3fa393cc5b07b1b7ca.zip |
[IA64] Fix PV break fault handler.
PV domain break fault handler calls C routine reflect_event() with psr.ic = 0.
It might cause unrecoverable tlb miss. set psr.ic=1 before calling it.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
-rw-r--r-- | xen/arch/ia64/xen/ivt.S | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/xen/arch/ia64/xen/ivt.S b/xen/arch/ia64/xen/ivt.S index f0f8c5f62c..b9eb05e50c 100644 --- a/xen/arch/ia64/xen/ivt.S +++ b/xen/arch/ia64/xen/ivt.S @@ -714,15 +714,20 @@ fast_hypercall: adds r2=PT(CR_IFS)+16,r12 ;; st8 [r2]=r20 - ;; + ssm psr.ic | PSR_DEFAULT_BITS + ;; + srlz.i + ;; br.call.sptk.many b0=reflect_event ;; + rsm psr.i|psr.ic adds r2=PT(R14)+16,r12 adds r3=PT(R8)+16,r12 ;; //r16 contains ar.bsp before cover ld8 r16=[r2] ld8 r8=[r3] + srlz.i ;; br.sptk.many ia64_ret_from_syscall ;; |