diff options
author | Huang Ying <ying.huang@intel.com> | 2010-01-05 16:32:24 +0800 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-01-11 10:02:55 -0600 |
commit | 8033c42abdfa7b583b3a42c8877f35164e5f776b (patch) | |
tree | 193ff6f407c6c75fb8e7be1f089e1f29ae5b69d8 /target-i386 | |
parent | linuxboot: fix gdt address calculation (diff) | |
download | qemu-kvm-8033c42abdfa7b583b3a42c8877f35164e5f776b.tar.gz qemu-kvm-8033c42abdfa7b583b3a42c8877f35164e5f776b.tar.bz2 qemu-kvm-8033c42abdfa7b583b3a42c8877f35164e5f776b.zip |
MCE: Fix bug of IA32_MCG_STATUS after system reset
Now, if we inject a fatal MCE into guest OS, for example Linux, Linux
will go panic and then reboot. But if we inject another MCE now,
system will reset directly instead of go panic firstly, because
MCG_STATUS.MCIP is set to 1 and not cleared after reboot. This is does
not follow the behavior in real hardware.
This patch fixes this via set env->mcg_status to 0 during system reset.
Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit af364b418cc57c53275c76ee5e0e0645908605b9)
Diffstat (limited to 'target-i386')
-rw-r--r-- | target-i386/helper.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/target-i386/helper.c b/target-i386/helper.c index 730e396a6..9d7fec3c7 100644 --- a/target-i386/helper.c +++ b/target-i386/helper.c @@ -617,6 +617,8 @@ void cpu_reset(CPUX86State *env) env->dr[7] = DR7_FIXED_1; cpu_breakpoint_remove_all(env, BP_CPU); cpu_watchpoint_remove_all(env, BP_CPU); + + env->mcg_status = 0; } void cpu_x86_close(CPUX86State *env) |