diff --git a/include/xhyve/vmm/intel/vmx_controls.h b/include/xhyve/vmm/intel/vmx_controls.h index cd97cbb..e9496bb 100644 --- a/include/xhyve/vmm/intel/vmx_controls.h +++ b/include/xhyve/vmm/intel/vmx_controls.h @@ -74,6 +74,7 @@ #define PROCBASED2_ENABLE_INVPCID (1u << 12) #define PROCBASED2_VMCS_SHADOW (1u << 14) #define PROCBASED2_RDSEED_EXITING (1u << 16) +#define PROCBASED2_ENABLE_XSAVES_XRSTORS (1u << 20) /* VM Exit Controls */ #define VM_EXIT_SAVE_DEBUG_CONTROLS (1u << 2) diff --git a/src/vmm/intel/vmx.c b/src/vmm/intel/vmx.c index b5deaaa..72a3bf3 100644 --- a/src/vmm/intel/vmx.c +++ b/src/vmm/intel/vmx.c @@ -90,6 +90,7 @@ PROCBASED2_RDRAND_EXITING | \ PROCBASED2_ENABLE_INVPCID /* FIXME */ | \ PROCBASED2_RDSEED_EXITING | \ + PROCBASED2_ENABLE_XSAVES_XRSTORS | \ PROCBASED2_VMCS_SHADOW ) #define PINBASED_CTLS_ONE_SETTING \ (PINBASED_EXTINT_EXITING | \ @@ -102,12 +103,15 @@ #define VM_ENTRY_CTLS_ZERO_SETTING \ (VM_ENTRY_INTO_SMM | \ VM_ENTRY_DEACTIVATE_DUAL_MONITOR | \ + VM_ENTRY_LOAD_PERF_GLOBAL_CTRL | \ VM_ENTRY_GUEST_LMA) #define VM_EXIT_CTLS_ONE_SETTING \ (VM_EXIT_HOST_LMA | \ VM_EXIT_LOAD_EFER) #define VM_EXIT_CTLS_ZERO_SETTING \ - (VM_EXIT_SAVE_PREEMPTION_TIMER) + (VM_EXIT_SAVE_PREEMPTION_TIMER | \ + VM_EXIT_SAVE_EFER | \ + VM_EXIT_LOAD_PERF_GLOBAL_CTRL) #define NMI_BLOCKING \ (VMCS_INTERRUPTIBILITY_NMI_BLOCKING | \ VMCS_INTERRUPTIBILITY_MOVSS_BLOCKING)