|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
RE: [Xen-ia64-devel][PATCH] handle speculative vhpt walk
The new one
>-----Original Message-----
>From: Isaku Yamahata [mailto:yamahata@xxxxxxxxxxxxx]
>Sent: 2007年5月10日 11:20
>To: Xu, Anthony
>Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>Subject: 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
handle_speculative_vhpt_walk2.patch
Description: handle_speculative_vhpt_walk2.patch
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
|
|
|
|