show_execution_state(regs);
}
x86_mcinfo_dump(mc_data);
- panic("End of MCE. Use mcelog to decode above error codes.\n");
+ mc_panic("End of MCE. Use mcelog to decode above error codes.\n");
}
/* If Dom0 registered a machine check handler, which is only possible
/* Dom0 is impacted. Since noone can't handle
* this error, panic! */
x86_mcinfo_dump(mc_data);
- panic("MCE occured in Dom0, which it can't handle\n");
+ mc_panic("MCE occured in Dom0, which it can't handle\n");
/* UNREACHED */
} else {
}
if (recover&2)
- panic ("CPU context corrupt");
+ mc_panic ("CPU context corrupt");
if (recover&1)
- panic ("Unable to continue");
+ mc_panic ("Unable to continue");
printk (KERN_EMERG "Attempting to continue.\n");
mcgstl &= ~(1<<2);
wrmsr (MSR_IA32_MCG_STATUS,mcgstl, mcgsth);
#include <xen/config.h>
#include <xen/smp.h>
#include <xen/errno.h>
+#include <xen/console.h>
#include <asm/processor.h>
#include <asm/system.h>
return ret;
}
+
+void mc_panic(char *s)
+{
+ console_start_sync();
+ printk("Fatal machine check: %s\n", s);
+ printk("\n"
+ "****************************************\n"
+ "\n"
+ " The processor has reported a hardware error which cannot\n"
+ " be recovered from. Xen will now reboot the machine.\n");
+ panic("HARDWARE ERROR");
+}
void x86_mcinfo_clear(struct mc_info *mi);
int x86_mcinfo_add(struct mc_info *mi, void *mcinfo);
void x86_mcinfo_dump(struct mc_info *mi);
+void mc_panic(char *s);
/* Global variables */
extern int mce_disabled;
}
if (recover & 2)
- panic ("CPU context corrupt");
+ mc_panic ("CPU context corrupt");
if (recover & 1)
- panic ("Unable to continue");
+ mc_panic ("Unable to continue");
printk(KERN_EMERG "Attempting to continue.\n");
/*
}
if (recover & 2)
- panic ("CPU context corrupt");
+ mc_panic ("CPU context corrupt");
if (recover & 1)
- panic ("Unable to continue");
+ mc_panic ("Unable to continue");
printk (KERN_EMERG "Attempting to continue.\n");
/*