x86/entry: KVM: Use dedicated VMX NMI entry for 32-bit kernels too
authorSean Christopherson <seanjc@google.com>
Tue, 13 Dec 2022 06:09:10 +0000 (06:09 +0000)
committerSean Christopherson <seanjc@google.com>
Tue, 24 Jan 2023 18:36:40 +0000 (10:36 -0800)
commit54a3b70a75dcde8173e3d8ccc60f9ecd7af7b5f2
treee71e2120900e0637a539bfaba1470deb00cc7dc0
parent432727f1cb6e35cb3416d5aeea3dd281e460cbab
x86/entry: KVM: Use dedicated VMX NMI entry for 32-bit kernels too

Use a dedicated entry for invoking the NMI handler from KVM VMX's VM-Exit
path for 32-bit even though using a dedicated entry for 32-bit isn't
strictly necessary.  Exposing a single symbol will allow KVM to reference
the entry point in assembly code without having to resort to more #ifdefs
(or #defines).  identry.h is intended to be included from asm files only
once, and so simply including idtentry.h in KVM assembly isn't an option.

Bypassing the ESP fixup and CR3 switching in the standard NMI entry code
is safe as KVM always handles NMIs that occur in the guest on a kernel
stack, with a kernel CR3.

Cc: Andy Lutomirski <luto@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Lai Jiangshan <jiangshanlai@gmail.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20221213060912.654668-6-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/include/asm/idtentry.h
arch/x86/kernel/nmi.c
arch/x86/kvm/vmx/vmx.c