mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
QEMU: MCE: Add MCE simulation to qemu/tcg
- MCE features are initialized when VCPU is intialized according to CPUID. - A monitor command "mce" is added to inject a MCE. - A new interrupt mask: CPU_INTERRUPT_MCE is added to inject the MCE. aliguori: fix build for linux-user Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
2152390dca
commit
79c4f6b080
8 changed files with 217 additions and 2 deletions
|
@ -158,7 +158,20 @@ void cpu_save(QEMUFile *f, void *opaque)
|
|||
qemu_put_sbe32s(f, &pending_irq);
|
||||
qemu_put_be32s(f, &env->mp_state);
|
||||
qemu_put_be64s(f, &env->tsc);
|
||||
}
|
||||
|
||||
/* MCE */
|
||||
qemu_put_be64s(f, &env->mcg_cap);
|
||||
if (env->mcg_cap) {
|
||||
qemu_put_be64s(f, &env->mcg_status);
|
||||
qemu_put_be64s(f, &env->mcg_ctl);
|
||||
for (i = 0; i < (env->mcg_cap & 0xff); i++) {
|
||||
qemu_put_be64s(f, &env->mce_banks[4*i]);
|
||||
qemu_put_be64s(f, &env->mce_banks[4*i + 1]);
|
||||
qemu_put_be64s(f, &env->mce_banks[4*i + 2]);
|
||||
qemu_put_be64s(f, &env->mce_banks[4*i + 3]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USE_X86LDOUBLE
|
||||
/* XXX: add that in a FPU generic layer */
|
||||
|
@ -349,6 +362,20 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id)
|
|||
qemu_get_be64s(f, &env->tsc);
|
||||
}
|
||||
|
||||
if (version_id >= 10) {
|
||||
qemu_get_be64s(f, &env->mcg_cap);
|
||||
if (env->mcg_cap) {
|
||||
qemu_get_be64s(f, &env->mcg_status);
|
||||
qemu_get_be64s(f, &env->mcg_ctl);
|
||||
for (i = 0; i < (env->mcg_cap & 0xff); i++) {
|
||||
qemu_get_be64s(f, &env->mce_banks[4*i]);
|
||||
qemu_get_be64s(f, &env->mce_banks[4*i + 1]);
|
||||
qemu_get_be64s(f, &env->mce_banks[4*i + 2]);
|
||||
qemu_get_be64s(f, &env->mce_banks[4*i + 3]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* XXX: ensure compatiblity for halted bit ? */
|
||||
/* XXX: compute redundant hflags bits */
|
||||
env->hflags = hflags;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue