From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Egger Subject: [PATCH 12/18] Nested Virtualization: MSR Date: Thu, 15 Apr 2010 14:36:58 +0200 Message-ID: <201004151436.58751.Christoph.Egger@amd.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary-00=_qhwxL2y0YF320aX" 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 List-Id: xen-devel@lists.xenproject.org --Boundary-00=_qhwxL2y0YF320aX Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Signed-off-by: Christoph Egger -- ---to satisfy European Law for business letters: Advanced Micro Devices GmbH Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen Geschaeftsfuehrer: Andrew Bowd, Thomas M. McCoy, Giuliano Meroni Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632 --Boundary-00=_qhwxL2y0YF320aX Content-Type: text/x-diff; charset="iso 8859-15"; name="xen_nh12_msr.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xen_nh12_msr.diff" # HG changeset patch # User cegger # Date 1271330306 -7200 Emulate MSRs needed for Nested Virtualization diff -r 01758c6195f4 -r 9731aece91ac xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -2097,14 +2097,21 @@ int hvm_msr_read_intercept(struct cpu_us break; default: + ret = nestedhvm_rdmsr(v, ecx, &msr_content); + if ( ret < 0 ) + goto gp_fault; + else if ( ret ) + break; + + BUG_ON( ret ); ret = mce_rdmsr(ecx, &msr_content); if ( ret < 0 ) goto gp_fault; else if ( ret ) break; - /* ret == 0, This is not an MCE MSR, see other MSRs */ - else if (!ret) - return hvm_funcs.msr_read_intercept(regs); + + BUG_ON( ret ); + return hvm_funcs.msr_read_intercept(regs); } regs->eax = (uint32_t)msr_content; @@ -2196,13 +2203,21 @@ int hvm_msr_write_intercept(struct cpu_u break; default: + ret = nestedhvm_wrmsr(v, ecx, msr_content); + if ( ret < 0 ) + goto gp_fault; + else if ( ret ) + break; + + BUG_ON( ret ); ret = mce_wrmsr(ecx, msr_content); if ( ret < 0 ) goto gp_fault; else if ( ret ) break; - else if (!ret) - return hvm_funcs.msr_write_intercept(regs); + + BUG_ON( ret ); + return hvm_funcs.msr_write_intercept(regs); } return X86EMUL_OKAY; --Boundary-00=_qhwxL2y0YF320aX 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 --Boundary-00=_qhwxL2y0YF320aX--