summaryrefslogtreecommitdiffstats
path: root/sys/amd64/vmm/intel/vmcs.h
diff options
context:
space:
mode:
authorneel <neel@FreeBSD.org>2014-01-17 04:21:39 +0000
committerneel <neel@FreeBSD.org>2014-01-17 04:21:39 +0000
commit77ef1cf9973690eed027f1f25f0924865126f733 (patch)
tree8a4c6fba8af0f7c8269e5e402537fe850315a466 /sys/amd64/vmm/intel/vmcs.h
parentd34702f4cf296668c3511d6c1728b1fa03f3951d (diff)
downloadFreeBSD-src-77ef1cf9973690eed027f1f25f0924865126f733.zip
FreeBSD-src-77ef1cf9973690eed027f1f25f0924865126f733.tar.gz
If a VM-exit happens during an NMI injection then clear the "NMI Blocking" bit
in the Guest Interruptibility-state VMCS field. If we fail to do this then a subsequent VM-entry will fail because it is an error to inject an NMI into the guest while "NMI Blocking" is turned on. This is described in "Checks on Guest Non-Register State" in the Intel SDM. Submitted by: David Reed (david.reed@tidalscale.com)
Diffstat (limited to 'sys/amd64/vmm/intel/vmcs.h')
-rw-r--r--sys/amd64/vmm/intel/vmcs.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/amd64/vmm/intel/vmcs.h b/sys/amd64/vmm/intel/vmcs.h
index fde93e5..cd2f84b 100644
--- a/sys/amd64/vmm/intel/vmcs.h
+++ b/sys/amd64/vmm/intel/vmcs.h
@@ -333,10 +333,10 @@ vmcs_write(uint32_t encoding, uint64_t val)
/*
* VMCS interrupt information fields
*/
-#define VMCS_INTR_INFO_VALID (1U << 31)
-#define VMCS_INTR_INFO_TYPE(info) (((info) >> 8) & 0x7)
-#define VMCS_INTR_INFO_HW_INTR (0 << 8)
-#define VMCS_INTR_INFO_NMI (2 << 8)
+#define VMCS_INTR_VALID (1U << 31)
+#define VMCS_INTR_T_MASK 0x700 /* Interruption-info type */
+#define VMCS_INTR_T_HWINTR (0 << 8)
+#define VMCS_INTR_T_NMI (2 << 8)
/*
* VMCS IDT-Vectoring information fields
OpenPOWER on IntegriCloud