On Fri, Jul 25, 2008 at 05:47:37PM +0900, SUZUKI Kazuhiro wrote:
> The following patch fixes the mca handler so as not to destroy ar
> and some bugs.
Thank you for fixing some bugs and it looks basically good.
Some comments below.
> @@ -524,24 +457,111 @@ ia64_reload_tr:
> srlz.d
> ;;
> #ifdef XEN
> -.reload_vhpt:
> - // 5. VHPT
> - GET_THIS_PADDR(r1, inserted_vhpt);;
> - cmp.eq p7,p0=r2,r0
> -(p7) br.cond.sptk .overlap_vhpt // vhpt isn't mapped.
> + // 5. shared_info
> + GET_THIS_PADDR(r2, inserted_shared_info);;
> + ld8 r16=[r2]
> + mov r18=XSI_SHIFT<<2
> + movl r20=__pgprot(__DIRTY_BITS | _PAGE_PL_PRIV | _PAGE_AR_RW)
> + ;;
> + GET_THIS_PADDR(r2, domain_shared_info);;
> + ld8 r17=[r2]
> + ;;
> + dep r17=0,r17,60,4
> + ;;
> + or r17=r17,r20 // construct PA | page properties
> + mov cr.itir=r18
> + mov cr.ifa=r16
> + ;;
> + mov r16=IA64_TR_SHARED_INFO
> + ;;
> + itr.d dtr[r16]=r17 // wire in new mapping...
> + ;;
> + srlz.d
> + ;;
Unconditionally pinning down shared_info into inserted_shared_info
is wrong because shared_info is shared only with PV domain and xen VMM.
So In VMX domain case, it shouldn't pinned down. Otherwise VMX guest
wrongly accesses to shared_info.
In ia64_do_tlb_purge() case, unconditionally purging
DTR[IA64_TR_SHARED_INFO] is okay, but unconditionally inserting
DTR[IA64_TR_SHARED_INFO] is bad.
thanks,
--
yamahata
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|