[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-ia64-devel][PATCH] handle speculative vhpt walk
On Thu, May 10, 2007 at 11:12:46AM +0800, Xu, Anthony wrote: > >> diff -r eabda101b0c5 xen/arch/ia64/xen/vhpt.c > >> --- a/xen/arch/ia64/xen/vhpt.c Tue May 08 13:12:52 2007 -0600 > >> +++ b/xen/arch/ia64/xen/vhpt.c Wed May 09 14:27:16 2007 +0800 > >> @@ -78,10 +78,13 @@ void vhpt_insert (unsigned long vadr, un > >> struct vhpt_lf_entry *vlfe = (struct vhpt_lf_entry *)ia64_thash(vadr); > >> unsigned long tag = ia64_ttag (vadr); > >> > >> - /* No need to first disable the entry, since VHPT is per LP > >> - and VHPT is TR mapped. */ > >> + /* Even though VHPT is per VCPU, still need to first disable the entry, > >> + * because the processor may support speculative VHPT walk. */ > >> + vlfe->ti_tag = INVALID_TI_TAG; > >> + wmb(); > >> vlfe->itir = logps; > >> vlfe->page_flags = pte | _PAGE_P; > >> + wmb(); > >> vlfe->ti_tag = tag; > >> } > >> > >> > > > >ditto. > > vlfe->ti_tag = INVALID_TI_TAG; > > *(volatile unsigned long*)&vlfe->itir = logps; > > *(volatile unsigned long*)&vlfe->page_flags = pte | _PAGE_P; > > *(volatile unsigned long*)&vlfe->ti_tag = tag; > > Another choice is, > vlfe->ti_tag = INVALID_TI_TAG; > wmb(); > vlfe->itir = logps; > vlfe->page_flags = pte | _PAGE_P; > *(volatile unsigned long*)&vlfe->ti_tag = tag; > > > Do you know which one is the fastest? Unfortunately no. You may know better than me, I guess. -- yamahata _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |