Skip to content

Commit 45bc609

Browse files
aeglsuryasaimadhu
authored andcommitted
EDAC/{i7core,sb,pnd2,skx}: Fix error event severity
IA32_MCG_STATUS.RIPV indicates whether the return RIP value pushed onto the stack as part of machine check delivery is valid or not. Various drivers copied a code fragment that uses the RIPV bit to determine the severity of the error as either HW_EVENT_ERR_UNCORRECTED or HW_EVENT_ERR_FATAL, but this check is reversed (marking errors where RIPV is set as "FATAL"). Reverse the tests so that the error is marked fatal when RIPV is not set. Reported-by: Gabriele Paoloni <[email protected]> Signed-off-by: Tony Luck <[email protected]> Signed-off-by: Borislav Petkov <[email protected]> Cc: <[email protected]> Link: https://lkml.kernel.org/r/[email protected]
1 parent 9123e3a commit 45bc609

File tree

4 files changed

+7
-7
lines changed

4 files changed

+7
-7
lines changed

drivers/edac/i7core_edac.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1710,9 +1710,9 @@ static void i7core_mce_output_error(struct mem_ctl_info *mci,
17101710
if (uncorrected_error) {
17111711
core_err_cnt = 1;
17121712
if (ripv)
1713-
tp_event = HW_EVENT_ERR_FATAL;
1714-
else
17151713
tp_event = HW_EVENT_ERR_UNCORRECTED;
1714+
else
1715+
tp_event = HW_EVENT_ERR_FATAL;
17161716
} else {
17171717
tp_event = HW_EVENT_ERR_CORRECTED;
17181718
}

drivers/edac/pnd2_edac.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1155,7 +1155,7 @@ static void pnd2_mce_output_error(struct mem_ctl_info *mci, const struct mce *m,
11551155
u32 optypenum = GET_BITFIELD(m->status, 4, 6);
11561156
int rc;
11571157

1158-
tp_event = uc_err ? (ripv ? HW_EVENT_ERR_FATAL : HW_EVENT_ERR_UNCORRECTED) :
1158+
tp_event = uc_err ? (ripv ? HW_EVENT_ERR_UNCORRECTED : HW_EVENT_ERR_FATAL) :
11591159
HW_EVENT_ERR_CORRECTED;
11601160

11611161
/*

drivers/edac/sb_edac.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2982,9 +2982,9 @@ static void sbridge_mce_output_error(struct mem_ctl_info *mci,
29822982
if (uncorrected_error) {
29832983
core_err_cnt = 1;
29842984
if (ripv) {
2985-
tp_event = HW_EVENT_ERR_FATAL;
2986-
} else {
29872985
tp_event = HW_EVENT_ERR_UNCORRECTED;
2986+
} else {
2987+
tp_event = HW_EVENT_ERR_FATAL;
29882988
}
29892989
} else {
29902990
tp_event = HW_EVENT_ERR_CORRECTED;

drivers/edac/skx_common.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -493,9 +493,9 @@ static void skx_mce_output_error(struct mem_ctl_info *mci,
493493
if (uncorrected_error) {
494494
core_err_cnt = 1;
495495
if (ripv) {
496-
tp_event = HW_EVENT_ERR_FATAL;
497-
} else {
498496
tp_event = HW_EVENT_ERR_UNCORRECTED;
497+
} else {
498+
tp_event = HW_EVENT_ERR_FATAL;
499499
}
500500
} else {
501501
tp_event = HW_EVENT_ERR_CORRECTED;

0 commit comments

Comments
 (0)