KVM: x86: Move synthetic PFERR_* sanity checks to SVM's #NPF handler
authorSean Christopherson <seanjc@google.com>
Wed, 17 Apr 2024 11:30:29 +0000 (07:30 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 7 May 2024 15:59:18 +0000 (11:59 -0400)
commitdee281e4b4355286c76d1788dc8e65ec236d6e04
tree271587a963ee4d1e65d735a8b9496d2103212298
parent9b62e03e192ce9300608f9be69be9854a166eae3
KVM: x86: Move synthetic PFERR_* sanity checks to SVM's #NPF handler

Move the sanity check that hardware never sets bits that collide with KVM-
define synthetic bits from kvm_mmu_page_fault() to npf_interception(),
i.e. make the sanity check #NPF specific.  The legacy #PF path already
WARNs if _any_ of bits 63:32 are set, and the error code that comes from
VMX's EPT Violatation and Misconfig is 100% synthesized (KVM morphs VMX's
EXIT_QUALIFICATION into error code flags).

Add a compile-time assert in the legacy #PF handler to make sure that KVM-
define flags are covered by its existing sanity check on the upper bits.

Opportunistically add a description of PFERR_IMPLICIT_ACCESS, since we
are removing the comment that defined it.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Kai Huang <kai.huang@intel.com>
Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
Message-ID: <20240228024147.41573-8-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/mmu/mmu.c
arch/x86/kvm/svm/svm.c