Skip to content

Commit 1c4522a

Browse files
sashukla1sean-jc
authored andcommitted
KVM: SVM: Add definitions for new bits in VMCB::int_ctrl related to vNMI
Add defines for three new bits in VMVC::int_ctrl that are part of SVM's Virtual NMI (vNMI) support: V_NMI_PENDING_MASK(11) - Virtual NMI is pending V_NMI_BLOCKING_MASK(12) - Virtual NMI is masked V_NMI_ENABLE_MASK(26) - Enable NMI virtualization To "inject" an NMI, the hypervisor (KVM) sets V_NMI_PENDING. When the CPU services the pending vNMI, hardware clears V_NMI_PENDING and sets V_NMI_BLOCKING, e.g. to indicate that the vCPU is handling an NMI. Hardware clears V_NMI_BLOCKING upon successful execution of IRET, or if a VM-Exit occurs while delivering the virtual NMI. Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Signed-off-by: Santosh Shukla <santosh.shukla@amd.com> Link: https://lore.kernel.org/r/20230227084016.3368-10-santosh.shukla@amd.com [sean: massage changelog] Signed-off-by: Sean Christopherson <seanjc@google.com>
1 parent 3763bf5 commit 1c4522a

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

  • arch/x86/include/asm

arch/x86/include/asm/svm.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,12 @@ struct __attribute__ ((__packed__)) vmcb_control_area {
183183
#define V_GIF_SHIFT 9
184184
#define V_GIF_MASK (1 << V_GIF_SHIFT)
185185

186+
#define V_NMI_PENDING_SHIFT 11
187+
#define V_NMI_PENDING_MASK (1 << V_NMI_PENDING_SHIFT)
188+
189+
#define V_NMI_BLOCKING_SHIFT 12
190+
#define V_NMI_BLOCKING_MASK (1 << V_NMI_BLOCKING_SHIFT)
191+
186192
#define V_INTR_PRIO_SHIFT 16
187193
#define V_INTR_PRIO_MASK (0x0f << V_INTR_PRIO_SHIFT)
188194

@@ -197,6 +203,9 @@ struct __attribute__ ((__packed__)) vmcb_control_area {
197203
#define V_GIF_ENABLE_SHIFT 25
198204
#define V_GIF_ENABLE_MASK (1 << V_GIF_ENABLE_SHIFT)
199205

206+
#define V_NMI_ENABLE_SHIFT 26
207+
#define V_NMI_ENABLE_MASK (1 << V_NMI_ENABLE_SHIFT)
208+
200209
#define AVIC_ENABLE_SHIFT 31
201210
#define AVIC_ENABLE_MASK (1 << AVIC_ENABLE_SHIFT)
202211

0 commit comments

Comments
 (0)