Refuse to load KVM if NX support is not available and EPT is not enabled.
Shadow paging has assumed NX support since commit 
9167ab799362 ("KVM:
vmx, svm: always run with EFER.NXE=1 when shadow paging is active"), so
for all intents and purposes this has been a de facto requirement for
over a year.
Do not require NX support if EPT is enabled purely because Intel CPUs let
firmware disable NX support via MSR_IA32_MISC_ENABLES.  If not for that,
VMX (and KVM as a whole) could require NX support with minimal risk to
breaking userspace.
Fixes: 9167ab799362 ("KVM: vmx, svm: always run with EFER.NXE=1 when shadow paging is active")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Jim Mattson <jmattson@google.com>
Message-Id: <
20210615164535.
2146172-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
 
            !cpu_has_vmx_invept_global())
                enable_ept = 0;
 
+       /* NX support is required for shadow paging. */
+       if (!enable_ept && !boot_cpu_has(X86_FEATURE_NX)) {
+               pr_err_ratelimited("kvm: NX (Execute Disable) not supported\n");
+               return -EOPNOTSUPP;
+       }
+
        if (!cpu_has_vmx_ept_ad_bits() || !enable_ept)
                enable_ept_ad_bits = 0;