summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHuang Ying <ying.huang@intel.com>2010-01-05 16:32:24 +0800
committerAnthony Liguori <aliguori@us.ibm.com>2010-01-11 09:56:30 -0600
commitaf364b418cc57c53275c76ee5e0e0645908605b9 (patch)
tree573cb096511d2b5d6884f2b8ed57593510051c35
parent0b987f19342802dec38d0f257d2b5e0a0630a4ac (diff)
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>
-rw-r--r--target-i386/helper.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/target-i386/helper.c b/target-i386/helper.c
index c39a99390..049fccfc7 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)