From: Kai Huang Date: Wed, 14 May 2014 08:54:39 +0000 (+0200) Subject: x86/MCE: bypass uninitialized vcpu in vMCE injection X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~5012 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a07084525c126c596326dc1442dd218f522f51b4;p=xen.git x86/MCE: bypass uninitialized vcpu in vMCE injection 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 Acked-by: Christoph Egger --- diff --git a/xen/arch/x86/cpu/mcheck/vmce.c b/xen/arch/x86/cpu/mcheck/vmce.c index 3f3ef3cc63..ba1693c371 100644 --- a/xen/arch/x86/cpu/mcheck/vmce.c +++ b/xen/arch/x86/cpu/mcheck/vmce.c @@ -356,6 +356,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 ( (has_hvm_container_domain(d) || guest_has_trap_callback(d, v->vcpu_id, TRAP_machine_check)) && !test_and_set_bool(v->mce_pending) )