From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gianluca Guida Subject: [PATCH] [shadow] Disable higher level pagetables early unshadow only when the "process dying" hypercall is used. Date: Wed, 16 Nov 2011 05:44:50 -0800 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com, Keir Fraser Cc: Tim Deegan , Jan Beulich , Gianluca Guida List-Id: xen-devel@lists.xenproject.org This patch fixes a performance problem in fully virtualized guests. Should be backported to xen-4.0 and xen-4.1. This patch applies (with slightly different offsets) to all three versions. Signed-off-by: Gianluca Guida Tested-by: Jan Beulich diff -r 068d3d55ce6e xen/arch/x86/mm/shadow/multi.c --- a/xen/arch/x86/mm/shadow/multi.c Tue Nov 01 19:03:38 2011 +0000 +++ b/xen/arch/x86/mm/shadow/multi.c Wed Nov 16 14:30:57 2011 -0800 @@ -2723,8 +2723,9 @@ || ( !v->domain->arch.paging.shadow.pagetable_dying_op && v->arch.paging.shadow.last_emulated_mfn_for_unshadow == mfn_x(gmfn) ) ) && sh_mfn_is_a_page_table(gmfn) - && !(mfn_to_page(gmfn)->shadow_flags - & (SHF_L2_32|SHF_L2_PAE|SHF_L2H_PAE|SHF_L4_64)) ) + && (!v->domain->arch.paging.shadow.pagetable_dying_op || + !(mfn_to_page(gmfn)->shadow_flags + & (SHF_L2_32|SHF_L2_PAE|SHF_L2H_PAE|SHF_L4_64))) ) { perfc_incr(shadow_early_unshadow); sh_remove_shadows(v, gmfn, 1, 0 /* Fast, can fail to unshadow */ );