|
@@ -772,23 +772,25 @@ EXPORT_SYMBOL_GPL(machine_check_poll);
|
|
static int mce_no_way_out(struct mce *m, char **msg, unsigned long *validp,
|
|
static int mce_no_way_out(struct mce *m, char **msg, unsigned long *validp,
|
|
struct pt_regs *regs)
|
|
struct pt_regs *regs)
|
|
{
|
|
{
|
|
- int i, ret = 0;
|
|
|
|
char *tmp;
|
|
char *tmp;
|
|
|
|
+ int i;
|
|
|
|
|
|
for (i = 0; i < mca_cfg.banks; i++) {
|
|
for (i = 0; i < mca_cfg.banks; i++) {
|
|
m->status = mce_rdmsrl(msr_ops.status(i));
|
|
m->status = mce_rdmsrl(msr_ops.status(i));
|
|
- if (m->status & MCI_STATUS_VAL) {
|
|
|
|
- __set_bit(i, validp);
|
|
|
|
- if (quirk_no_way_out)
|
|
|
|
- quirk_no_way_out(i, m, regs);
|
|
|
|
- }
|
|
|
|
|
|
+ if (!(m->status & MCI_STATUS_VAL))
|
|
|
|
+ continue;
|
|
|
|
+
|
|
|
|
+ __set_bit(i, validp);
|
|
|
|
+ if (quirk_no_way_out)
|
|
|
|
+ quirk_no_way_out(i, m, regs);
|
|
|
|
|
|
if (mce_severity(m, mca_cfg.tolerant, &tmp, true) >= MCE_PANIC_SEVERITY) {
|
|
if (mce_severity(m, mca_cfg.tolerant, &tmp, true) >= MCE_PANIC_SEVERITY) {
|
|
|
|
+ mce_read_aux(m, i);
|
|
*msg = tmp;
|
|
*msg = tmp;
|
|
- ret = 1;
|
|
|
|
|
|
+ return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return ret;
|
|
|
|
|
|
+ return 0;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|