Nested VMX: Setup the virtual NMI exiting info
authorYang Zhang <yang.z.zhang@Intel.com>
Fri, 20 Dec 2013 10:57:14 +0000 (11:57 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 20 Dec 2013 10:57:14 +0000 (11:57 +0100)
When inject a virtual nmi exit to L1, hypervisor need to set the
virtual vmcs with right vaule which is missing in current Xen.

Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
xen/arch/x86/hvm/vmx/vvmx.c

index 0daad7974856c22b485263b1b5abcfed88e6bc52..41db52be44495ce46fdc58e53ad4d4430ba3799d 100644 (file)
@@ -1293,6 +1293,12 @@ static void sync_exception_state(struct vcpu *v)
                     nvmx->intr.error_code);
         break;
     case X86_EVENTTYPE_NMI:
+        __set_vvmcs(nvcpu->nv_vvmcx, VM_EXIT_REASON,
+                    EXIT_REASON_EXCEPTION_NMI);
+        __set_vvmcs(nvcpu->nv_vvmcx, EXIT_QUALIFICATION, 0);
+        __set_vvmcs(nvcpu->nv_vvmcx, VM_EXIT_INTR_INFO,
+                    nvmx->intr.intr_info);
+        break;
     default:
         gdprintk(XENLOG_ERR, "Exception state %lx not handled\n",
                nvmx->intr.intr_info);