From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olaf Hering Subject: [PATCH] xenpaging: allow only one xenpaging call per guest Date: Wed, 22 Sep 2010 17:41:46 +0200 Message-ID: <20100922154145.GC25088@aepfle.de> References: <20100915160521.GA16644@aepfle.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Return-path: Content-Disposition: inline In-Reply-To: <20100915160521.GA16644@aepfle.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Patrick Colp Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Make sure only one xenpaging binary is active per domain. Print info when the host lacks the required features for xenpaging. Signed-off-by: Olaf Hering --- tools/xenpaging/xenpaging.c | 12 +++++++++++- xen/arch/x86/mm/mem_event.c | 7 +++++++ 2 files changed, 18 insertions(+), 1 deletion(-) --- xen-unstable.hg-4.1.22155.orig/tools/xenpaging/xenpaging.c +++ xen-unstable.hg-4.1.22155/tools/xenpaging/xenpaging.c @@ -123,7 +123,17 @@ xenpaging_t *xenpaging_init(xc_interface paging->mem_event.ring_page); if ( rc != 0 ) { - ERROR("Error initialising shared page"); + switch ( errno ) { + case EBUSY: + ERROR("xenpaging is (or was) active on this domain"); + break; + case ENODEV: + ERROR("EPT not supported for this guest"); + break; + default: + ERROR("Error initialising shared page"); + break; + } goto err; } --- xen-unstable.hg-4.1.22155.orig/xen/arch/x86/mm/mem_event.c +++ xen-unstable.hg-4.1.22155/xen/arch/x86/mm/mem_event.c @@ -226,6 +226,13 @@ int mem_event_domctl(struct domain *d, x mfn_t ring_mfn; mfn_t shared_mfn; + /* Only one xenpaging at a time. If xenpaging crashed, + * the cache is in an undefined state and so is the guest + */ + rc = -EBUSY; + if ( d->mem_event.enabled ) + break; + /* Currently only EPT is supported */ rc = -ENODEV; if ( !(hap_enabled(d) &&