From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joe Bonasera Subject: Re: Live migration leaves page tables read-only? Date: Mon, 11 Dec 2006 09:00:37 -0800 Message-ID: <457D8EB5.2030105@sun.com> References: <456CD0A5.1060701@hp.com> <456CD2DC.2020201@hp.com> <8A87A9A84C201449A0C56B728ACF491E01FA12@liverpoolst.ad.cl.cam.ac.uk> <456CF5F9.7070009@hp.com> <456F6AF5.2090005@hp.com> <8A87A9A84C201449A0C56B728ACF491E01FA69@liverpoolst.ad.cl.cam.ac.uk> <457A4C68.6050800@hp.com> <8A87A9A84C201449A0C56B728ACF491E04EE29@liverpoolst.ad.cl.cam.ac.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <8A87A9A84C201449A0C56B728ACF491E04EE29@liverpoolst.ad.cl.cam.ac.uk> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Pratt Cc: Christian Limpach , xen-devel , John Byrne List-Id: xen-devel@lists.xenproject.org Ian Pratt wrote: > >> I finally ran down the problem. SAP is protecting the pages PROT_NONE, >> so the page-present bit in the pte is not set and >> canonicalize/uncanonicalize code in save/restore ignore the pte. I've >> attached a patch. It is possible that this change should be made to > the >> l1e tests in xc_ptrace.c; I'm not sure. > > That's a good catch, thanks. Interesting that we hadn't seen this > before. > > Although your patch works today, it will break when we add PSE (super > page) support for PV guests as it will confuse PROT_NONE with PSE. > Assuming PROT_NONE only makes sense for L1 entries, we can probably gate > the tests on whether the page table page is an L1 or not to fix this. > > However, it does point out an issue for other OSes: Taking this patch > effectively makes Linux's PROT_NONE (flags 0x80 for a not present PTE) > part of the Xen API. We need to find out whether this is compatible with > *BSD and Solaris' use of flags for not present ptes. > > Ian Solaris implements PROT_NONE by entirely invalidating the PTE (ie. it becomes zero). Hence our PTEs always had either zero or have the PRESENT bit set. The only exception to this was adding some fixage to allow for the old Xen writable page table approach which temporarily made the upper table non-PRESENT. So you can make not-present, but non-zero entries mean anything you want. As long as it's the guest OS that creates the entries, we'll just not do it. Joe