Commit 23f3e991 authored by Joseph Cihula's avatar Joseph Cihula Committed by Marcelo Tosatti
Browse files

KVM: VMX: fix detection of BIOS disabling VMX



This patch fixes the logic used to detect whether BIOS has disabled VMX, for
the case where VMX is enabled only under SMX, but tboot is not active.

Signed-off-by: default avatarJoseph Cihula <joseph.cihula@intel.com>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent e935b837
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -1333,19 +1333,25 @@ static __init int vmx_disabled_by_bios(void)

	rdmsrl(MSR_IA32_FEATURE_CONTROL, msr);
	if (msr & FEATURE_CONTROL_LOCKED) {
		/* launched w/ TXT and VMX disabled */
		if (!(msr & FEATURE_CONTROL_VMXON_ENABLED_INSIDE_SMX)
			&& tboot_enabled())
			return 1;
		/* launched w/o TXT and VMX only enabled w/ TXT */
		if (!(msr & FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SMX)
			&& (msr & FEATURE_CONTROL_VMXON_ENABLED_INSIDE_SMX)
			&& !tboot_enabled()) {
			printk(KERN_WARNING "kvm: disable TXT in the BIOS or "
				"activate TXT before enabling KVM\n");
			return 1;
		}
		/* launched w/o TXT and VMX disabled */
		if (!(msr & FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SMX)
			&& !tboot_enabled())
			return 1;
	}

	return 0;
	/* locked but not enabled */
}

static void kvm_cpu_vmxon(u64 addr)