KVM: x86: Move nEPT exit_qualification field from kvm_vcpu_arch to x86_exception
authorSean Christopherson <seanjc@google.com>
Fri, 9 Feb 2024 22:16:59 +0000 (14:16 -0800)
committerSean Christopherson <seanjc@google.com>
Tue, 9 Apr 2024 17:24:36 +0000 (10:24 -0700)
commita9466078687fb740298a52a095ee4832738efbea
treeda2e4f7ffb5df53ec85460f914098b69b97bd145
parent0c4765140351e22d1568eca2c62c505e07151887
KVM: x86: Move nEPT exit_qualification field from kvm_vcpu_arch to x86_exception

Move the exit_qualification field that is used to track information about
in-flight nEPT violations from "struct kvm_vcpu_arch" to "x86_exception",
i.e. associate the information with the actual nEPT violation instead of
the vCPU.  To handle bits that are pulled from vmcs.EXIT_QUALIFICATION,
i.e. that are propagated from the "original" EPT violation VM-Exit, simply
grab them from the VMCS on-demand when injecting a nEPT Violation or a PML
Full VM-exit.

Aside from being ugly, having an exit_qualification field in kvm_vcpu_arch
is outright dangerous, e.g. see commit d7f0a00e438d ("KVM: VMX: Report
up-to-date exit qualification to userspace").

Opportunstically add a comment to call out that PML Full and EPT Violation
VM-Exits use the same bit to report NMI blocking information.

Link: https://lore.kernel.org/r/20240209221700.393189-3-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/kvm_emulate.h
arch/x86/kvm/mmu/paging_tmpl.h
arch/x86/kvm/vmx/nested.c
arch/x86/kvm/vmx/vmx.c