From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gianluca Guida Subject: [PATCH] Fix OOS typecounting [was: Test report for Xen-3.3.0-rc4 (#18314)] Date: Thu, 14 Aug 2008 16:14:28 +0100 Message-ID: <48A44BD4.9090505@eu.citrix.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030801080706080703080804" Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: "Xu, Jiajun" , "Li, Haicheng" , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------030801080706080703080804 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hello, Keir Fraser wrote: > We still need to decide whether to fix the second issue or disable OOS. The attached patch should fix this issue. It was an all-my-fault breakage of set_l1e atomicity. > We're not decided on that just yet. If it reproed more reliably for us then > I'd be more optimistic about fixing it. Perhaps I will switch to 32pae as so > far I've been running 32e host. A very easy way to reproduce this bug is to set SHADOW_OOS_FIXUPS to 1 in xen/include/asm-x86/mm.h. This will reproduce very quickly the typecount corruption. Gianluca --------------030801080706080703080804 Content-Type: text/x-patch; name="fix-oos-typecount.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="fix-oos-typecount.patch" diff -r d3947223dfae xen/arch/x86/mm/shadow/multi.c --- a/xen/arch/x86/mm/shadow/multi.c Thu Aug 14 13:46:48 2008 +0100 +++ b/xen/arch/x86/mm/shadow/multi.c Thu Aug 14 10:31:12 2008 -0400 @@ -1415,6 +1415,15 @@ static int shadow_set_l1e(struct vcpu *v mfn_t new_gmfn = shadow_l1e_get_mfn(new_sl1e); #endif ASSERT(sl1e != NULL); + +#if SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC + if ( mfn_valid(new_gmfn) && mfn_oos_may_write(new_gmfn) + && ((shadow_l1e_get_flags(new_sl1e) & (_PAGE_RW|_PAGE_PRESENT)) + == (_PAGE_RW|_PAGE_PRESENT)) ) + { + oos_fixup_add(v, new_gmfn, sl1mfn, pgentry_ptr_to_slot(sl1e)); + } +#endif old_sl1e = *sl1e; @@ -1434,14 +1443,6 @@ static int shadow_set_l1e(struct vcpu *v else { shadow_vram_get_l1e(new_sl1e, sl1e, sl1mfn, d); -#if SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC - if ( mfn_valid(new_gmfn) && mfn_oos_may_write(new_gmfn) - && (shadow_l1e_get_flags(new_sl1e) & _PAGE_RW) ) - { - oos_fixup_add(v, new_gmfn, sl1mfn, pgentry_ptr_to_slot(sl1e)); - } -#endif - } } } --------------030801080706080703080804 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------030801080706080703080804--