WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

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

To: aditya shevalkar <aditya27783@xxxxxxxxxxx>
Subject: Re: [Xen-devel] Question on shadow_invlpg return value handling.
From: Tim Deegan <Tim.Deegan@xxxxxxxxxxxxx>
Date: Tue, 27 Mar 2007 08:32:25 +0000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 27 Mar 2007 01:33:10 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <604922.39574.qm@xxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <604922.39574.qm@xxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.13 (2006-08-11)
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