|
@@ -7553,6 +7553,12 @@ static bool vmx_mpx_supported(void)
|
|
(vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_BNDCFGS);
|
|
(vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_BNDCFGS);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static bool vmx_xsaves_supported(void)
|
|
|
|
+{
|
|
|
|
+ return vmcs_config.cpu_based_2nd_exec_ctrl &
|
|
|
|
+ SECONDARY_EXEC_XSAVES;
|
|
|
|
+}
|
|
|
|
+
|
|
static void vmx_recover_nmi_blocking(struct vcpu_vmx *vmx)
|
|
static void vmx_recover_nmi_blocking(struct vcpu_vmx *vmx)
|
|
{
|
|
{
|
|
u32 exit_intr_info;
|
|
u32 exit_intr_info;
|
|
@@ -9329,6 +9335,7 @@ static struct kvm_x86_ops vmx_x86_ops = {
|
|
.check_intercept = vmx_check_intercept,
|
|
.check_intercept = vmx_check_intercept,
|
|
.handle_external_intr = vmx_handle_external_intr,
|
|
.handle_external_intr = vmx_handle_external_intr,
|
|
.mpx_supported = vmx_mpx_supported,
|
|
.mpx_supported = vmx_mpx_supported,
|
|
|
|
+ .xsaves_supported = vmx_xsaves_supported,
|
|
|
|
|
|
.check_nested_events = vmx_check_nested_events,
|
|
.check_nested_events = vmx_check_nested_events,
|
|
|
|
|