27 lines
1.0 KiB
Diff
27 lines
1.0 KiB
Diff
|
# Commit a07084525c126c596326dc1442dd218f522f51b4
|
||
|
# Date 2014-05-14 10:54:39 +0200
|
||
|
# Author Kai Huang <kai.huang@linux.intel.com>
|
||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||
|
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 <kai.huang@linux.intel.com>
|
||
|
Acked-by: Christoph Egger <chegger@amazon.de>
|
||
|
|
||
|
--- a/xen/arch/x86/cpu/mcheck/vmce.c
|
||
|
+++ b/xen/arch/x86/cpu/mcheck/vmce.c
|
||
|
@@ -357,6 +357,10 @@ int inject_vmce(struct domain *d, int vc
|
||
|
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) )
|