|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
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
|
|
|
|
|