diff options
Diffstat (limited to 'xen/arch/x86/hvm/vmx/vmx.c')
-rw-r--r-- | xen/arch/x86/hvm/vmx/vmx.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 1aba4c4d4d..140066bf97 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1677,7 +1677,8 @@ static int vmx_msr_read_intercept(struct cpu_user_regs *regs) break; } - if ( rdmsr_hypervisor_regs(ecx, &eax, &edx) || + if ( rdmsr_viridian_regs(ecx, &eax, &edx) || + rdmsr_hypervisor_regs(ecx, &eax, &edx) || rdmsr_safe(ecx, eax, edx) == 0 ) { regs->eax = eax; @@ -1852,6 +1853,10 @@ static int vmx_msr_write_intercept(struct cpu_user_regs *regs) default: if ( vpmu_do_wrmsr(regs) ) return X86EMUL_OKAY; + + if ( wrmsr_viridian_regs(ecx, regs->eax, regs->edx) ) + break; + switch ( long_mode_do_msr_write(regs) ) { case HNDL_unhandled: |