Broadcast MCA signal is not supported by the CPUs whose version is below 06H_EH. Signed-off-by: Jin Dongming <jin.dongming@xxxxxxxxxxxxxxxxxx> --- target-i386/helper.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/target-i386/helper.c b/target-i386/helper.c index 7e07ebd..437290b 100644 --- a/target-i386/helper.c +++ b/target-i386/helper.c @@ -1077,10 +1077,23 @@ void cpu_inject_x86_mce(CPUState *cenv, int bank, uint64_t status, unsigned bank_num = cenv->mcg_cap & 0xff; CPUState *env; int flag = 0; + int family, model, cpuver = first_cpu->cpuid_version; if (bank >= bank_num || !(status & MCI_STATUS_VAL)) return; + if (broadcast) { + family = (cpuver >> 8) & 0x0f; + model = ((cpuver >> 12) & 0xf0) + ((cpuver >> 4) & 0x0f); + + if ((family == 6 && model >= 14) || family > 6) + broadcast = 1; + else { + fprintf(stderr, "Current CPU does not support broadcast\n"); + return; + } + } + if (kvm_enabled()) { if (broadcast) flag |= 0x02; /* bit 1: 1(broadcast); 0(not broadcast) */ -- 1.7.1.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html