From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Lively Subject: Re: [PATCH] Limit MCG Cap Date: Wed, 29 Aug 2007 09:23:15 -0400 Message-ID: <46D57343.2060602@virtualiron.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050701010605010102090907" 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: xen-devel@lists.xensource.com, Ben Guthro List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------050701010605010102090907 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi Keir - Your suggestion to report 0 for reads of MSR_IA32_MCG_CAP seems to be working well on a wide variety of HVM guests (Windows & Linux, 32 & 64bit). I've attached a new patch. Thanks, Dave This patch implements a suggestion of Keir's (in response to a patch of mine): Intercept guest reads of MSR_IA32_MCG_CAP and report 0, indicating no machine check "units", which agrees more closely with Xen's super-minimal machine check architecture (just enough to allow Windows to run). This fixes a bug that occurs when migrating a RHEL4-64bit guest to a host with fewer machine check units than the original host. These host physical details shouldn't be leaking through to guests. Signed-off-by: David Lively Keir Fraser wrote: > Given that we don't properly virtualise/emulate machine check (we only set > the feature bit because some versions of Windows demand it) can we get away > with returning zero for reads of MCG_CAP? > > -- Keir > > On 27/8/07 20:11, "Ben Guthro" wrote: > > >> Intercept guest reads of MSR_IA32_MCG_CAP and limit the number of memory banks >> reported to one. >> This prevents us from trying to read status of non-existent banks when >> migrated to a machine >> with fewer banks. >> >> --------------050701010605010102090907 Content-Type: text/x-patch; name="xen-limit-mcg-cap.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="xen-limit-mcg-cap.patch" diff -r 9f111c7d648f xen/arch/x86/hvm/svm/svm.c --- a/xen/arch/x86/hvm/svm/svm.c Tue Aug 28 22:40:01 2007 -0400 +++ b/xen/arch/x86/hvm/svm/svm.c Tue Aug 28 22:40:01 2007 -0400 @@ -2058,6 +2058,9 @@ static inline void svm_do_msr_access( */ msr_content = 0; break; + case MSR_IA32_MCG_CAP: + msr_content = 0; + break; default: if ( rdmsr_hypervisor_regs(ecx, &eax, &edx) || rdmsr_safe(ecx, eax, edx) == 0 ) diff -r 9f111c7d648f xen/arch/x86/hvm/vmx/vmx.c --- a/xen/arch/x86/hvm/vmx/vmx.c Tue Aug 28 22:40:01 2007 -0400 +++ b/xen/arch/x86/hvm/vmx/vmx.c Tue Aug 28 22:40:01 2007 -0400 @@ -2554,6 +2554,9 @@ static inline int vmx_do_msr_read(struct case MSR_IA32_APICBASE: msr_content = vcpu_vlapic(v)->hw.apic_base_msr; break; + case MSR_IA32_MCG_CAP: + msr_content = 0; + break; default: if ( long_mode_do_msr_read(regs) ) goto done; --------------050701010605010102090907 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 --------------050701010605010102090907--