]> xenbits.xensource.com Git - xen.git/commitdiff
x86/MCE: bypass uninitialized vcpu in vMCE injection
authorKai Huang <kai.huang@linux.intel.com>
Fri, 23 May 2014 13:30:22 +0000 (15:30 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 23 May 2014 13:30:22 +0000 (15:30 +0200)
Dom0 may bring up less number of vCPUs than xen hypervisor actually created for
it, and in this case, on Intel platform, vMCE injection to dom0 will fail due to
injecting vMCE to uninitialized vcpu, and cause dom0 crash.

Signed-off-by: Kai Huang <kai.huang@linux.intel.com>
Acked-by: Christoph Egger <chegger@amazon.de>
master commit: a07084525c126c596326dc1442dd218f522f51b4
master date: 2014-05-14 10:54:39 +0200

xen/arch/x86/cpu/mcheck/vmce.c

index af3b491742c378bfbf00e04de4429ab2e0729868..58afe28cf2af364b3a951187020d83a514a0e173 100644 (file)
@@ -357,6 +357,10 @@ int inject_vmce(struct domain *d, int vcpu)
         if ( vcpu != VMCE_INJECT_BROADCAST && vcpu != v->vcpu_id )
             continue;
 
+        /* Don't inject to uninitialized VCPU. */
+        if ( !v->is_initialised )
+            continue;
+
         if ( (is_hvm_domain(d) ||
               guest_has_trap_callback(d, v->vcpu_id, TRAP_machine_check)) &&
              !test_and_set_bool(v->mce_pending) )