aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/vmx/vmx.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/arch/x86/hvm/vmx/vmx.c')
-rw-r--r--xen/arch/x86/hvm/vmx/vmx.c7
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: