Nested Virtualization: MSR
PATCH 9/15 Nested Virtualization: MSR
Signed-off-by Christoph Egger <[email protected]>
Signature · 6 lines
---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach b. Muenchen Geschaeftsfuehrer: Andrew Bowd, Thomas M. McCoy, Giuliano Meroni Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632
# HG changeset patch
# User cegger
# Date 1275382031 -7200
Emulate MSRs needed for Nested Virtualization
xen/arch/x86/hvm/hvm.c +20 -5
@@ -2148,14 +2148,21 @@ int hvm_msr_read_intercept(struct cpu_usbreak ;default : + ret =nestedhvm_rdmsr (v, ecx, &msr_content); +if ( ret <0 ) + goto gp_fault; +else if ( ret ) +break ; + +BUG_ON ( ret ); ret =vmce_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;
@@ -2247,13 +2254,21 @@ int hvm_msr_write_intercept(struct cpu_ubreak ;default : + ret =nestedhvm_wrmsr (v, ecx, msr_content); +if ( ret <0 ) + goto gp_fault; +else if ( ret ) +break ; + +BUG_ON ( ret ); ret =vmce_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 ;
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel