[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.