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] why xen use x86_emulat ion() in page_fault

To: cc Luit <universalbillow@xxxxxxxxx>
Subject: Re: [Xen-devel] why xen use x86_emulat ion() in page_fault
From: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
Date: Tue, 11 Oct 2011 12:39:37 +0100
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 11 Oct 2011 04:40:31 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=2xg8cr01oJ5P8+FBc3GhWI68Ozb3EK56n0zEeY1r0tU=; b=rHGWvrgHM47y93liyuP25M/zb96xjjuRaNMYtsxDoL9CnAgRzH7rKcPaOMOehVZJBw BK68Y4vpSA7MPzZEseb9PmsDH93mL3g59Kne/YqAspFKAKSN2c/HaLcSK2y12QQA30YC tBw+y7JxQ0CiqrcO3YZ1PeFpDKxivpEyqZKD4=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <CADWh-PF1BOSN22-Ua41fuRDP9HsHJ3j=T9j7_Kc2Un8XnVMKOQ@xxxxxxxxxxxxxx>
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <CAFLBxZbLcqpcJfFRSnT_C=5krhen44EzMD5pKcDNGhvLYmck=g@xxxxxxxxxxxxxx> <CADWh-PF1BOSN22-Ua41fuRDP9HsHJ3j=T9j7_Kc2Un8XnVMKOQ@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Tue, Oct 11, 2011 at 11:12 AM, cc Luit <universalbillow@xxxxxxxxx> wrote:
> Yeah, I've seen this comments, I understand what it says in the before part,
> but not the last sentence, what does it mean by "non-user write"?

As you know, pagetables have a write-protect bit, such that writes to
that virtual address will cause a fault.

But there's an option in CR0 that can make the WP bit only work in
user mode, and not kernel mode.

So if the guest has CR0.WP clear, and the guest PTE is read-only, the
guest needs to see this:
1. In user mode, writes cause a page fault
2. In kernel mode, writes do not cause a page fault

But Xen needs to protect pagetables to detect changes to them.  So
what Xen needs is this:
1. In user mode, writes cause a page fault to be delivered to the guest
2. In kernel mode, writes to non-PTs do not cause a page fault to be
delivered to the guest
3. In kernel mode, writes to PTs cause a trap to xen, but do not cause
a page fault to be delivered to the guest

Unfortunately, there's no way to cause traps to xen in the case of #3
without also causing traps to Xen in case #2.  So the if statement is
designed to handle case #2.

> another question is that if for some reasons I want to design that the Guest
> PTE is not read-only, which means in the page_fault situation I don't want
> xen to emulate, is there any functionability or feasibility problems?

The basic problem is that in shadow mode, changes to the guest's
pagetables need to be propagated into the shadow pagetables.  If you
can figure out how to make that happen without trapping to Xen and
emulating, all the better. :-)

> thanks for your answer:)

bu ke qi! ;-)

 -George

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