[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Question on shadow_invlpg return value handling.



At 10:21 +0530 on 27 Mar (1174990916), aditya shevalkar wrote:
> Can anyone explain me where does this return values from sh_invlpg are used.
>  The comment is given below:
> /* Called when the guest requests an invlpg.  Returns 1 if the invlpg
> * instruction should be issued on the hardware, or 0 if it's safe not
>  * to do so. */
> I have followed the following path of function call in my study of the 
> function.
> vmx_vmexit_do_invlpg(va) à  shadow_invlpg(v, va) à sh_invlpg(struct vcpu *v, 
> unsigned long va).

The VMX (and SVM) code ignores the return code of shadow_invlpg at the
moment, because they both flush the entire TLB on every VM entry anyway
(AMD's hardware support for tagged TLBs is apparently not quite useable
yet).

arch/x86/mm.c, which handles PV guests, uses the return code correctly,
e.g.:

  case MMUEXT_INVLPG_LOCAL:
       if ( !shadow_mode_enabled(d) 
            || shadow_invlpg(v, op.arg1.linear_addr) != 0 )
           local_flush_tlb_one(op.arg1.linear_addr);
       break;

Cheers,

Tim.

-- 
Tim Deegan <Tim.Deegan@xxxxxxxxxxxxx>, XenSource UK Limited
Registered office c/o EC2Y 5EB, UK; company number 05334508

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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