KVM: Document KVM_NMI
authorAvi Kivity <avi@redhat.com>
Wed, 7 Dec 2011 10:42:47 +0000 (12:42 +0200)
committerAvi Kivity <avi@redhat.com>
Tue, 27 Dec 2011 09:22:18 +0000 (11:22 +0200)
Signed-off-by: Avi Kivity <avi@redhat.com>
Documentation/virtual/kvm/api.txt

index e2a4b5287361d25c0800954cbc79eccea88291d3..e1d94bf4056e77ab6df7dbc6d9c72b35f183190a 100644 (file)
@@ -1466,6 +1466,31 @@ is supported; 2 if the processor requires all virtual machines to have
 an RMA, or 1 if the processor can use an RMA but doesn't require it,
 because it supports the Virtual RMA (VRMA) facility.
 
+4.64 KVM_NMI
+
+Capability: KVM_CAP_USER_NMI
+Architectures: x86
+Type: vcpu ioctl
+Parameters: none
+Returns: 0 on success, -1 on error
+
+Queues an NMI on the thread's vcpu.  Note this is well defined only
+when KVM_CREATE_IRQCHIP has not been called, since this is an interface
+between the virtual cpu core and virtual local APIC.  After KVM_CREATE_IRQCHIP
+has been called, this interface is completely emulated within the kernel.
+
+To use this to emulate the LINT1 input with KVM_CREATE_IRQCHIP, use the
+following algorithm:
+
+  - pause the vpcu
+  - read the local APIC's state (KVM_GET_LAPIC)
+  - check whether changing LINT1 will queue an NMI (see the LVT entry for LINT1)
+  - if so, issue KVM_NMI
+  - resume the vcpu
+
+Some guests configure the LINT1 NMI input to cause a panic, aiding in
+debugging.
+
 5. The kvm_run structure
 
 Application code obtains a pointer to the kvm_run structure by