mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 00:50:50 +07:00
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 <gabriele.paoloni@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Borislav Petkov <bp@suse.de> Cc: <stable@vger.kernel.org> Link: https://lkml.kernel.org/r/20200707194324.14884-1-tony.luck@intel.com
This commit is contained in:
parent
9123e3a74e
commit
45bc6098a3
@ -1710,9 +1710,9 @@ static void i7core_mce_output_error(struct mem_ctl_info *mci,
|
||||
if (uncorrected_error) {
|
||||
core_err_cnt = 1;
|
||||
if (ripv)
|
||||
tp_event = HW_EVENT_ERR_FATAL;
|
||||
else
|
||||
tp_event = HW_EVENT_ERR_UNCORRECTED;
|
||||
else
|
||||
tp_event = HW_EVENT_ERR_FATAL;
|
||||
} else {
|
||||
tp_event = HW_EVENT_ERR_CORRECTED;
|
||||
}
|
||||
|
@ -1155,7 +1155,7 @@ static void pnd2_mce_output_error(struct mem_ctl_info *mci, const struct mce *m,
|
||||
u32 optypenum = GET_BITFIELD(m->status, 4, 6);
|
||||
int rc;
|
||||
|
||||
tp_event = uc_err ? (ripv ? HW_EVENT_ERR_FATAL : HW_EVENT_ERR_UNCORRECTED) :
|
||||
tp_event = uc_err ? (ripv ? HW_EVENT_ERR_UNCORRECTED : HW_EVENT_ERR_FATAL) :
|
||||
HW_EVENT_ERR_CORRECTED;
|
||||
|
||||
/*
|
||||
|
@ -2982,9 +2982,9 @@ static void sbridge_mce_output_error(struct mem_ctl_info *mci,
|
||||
if (uncorrected_error) {
|
||||
core_err_cnt = 1;
|
||||
if (ripv) {
|
||||
tp_event = HW_EVENT_ERR_FATAL;
|
||||
} else {
|
||||
tp_event = HW_EVENT_ERR_UNCORRECTED;
|
||||
} else {
|
||||
tp_event = HW_EVENT_ERR_FATAL;
|
||||
}
|
||||
} else {
|
||||
tp_event = HW_EVENT_ERR_CORRECTED;
|
||||
|
@ -493,9 +493,9 @@ static void skx_mce_output_error(struct mem_ctl_info *mci,
|
||||
if (uncorrected_error) {
|
||||
core_err_cnt = 1;
|
||||
if (ripv) {
|
||||
tp_event = HW_EVENT_ERR_FATAL;
|
||||
} else {
|
||||
tp_event = HW_EVENT_ERR_UNCORRECTED;
|
||||
} else {
|
||||
tp_event = HW_EVENT_ERR_FATAL;
|
||||
}
|
||||
} else {
|
||||
tp_event = HW_EVENT_ERR_CORRECTED;
|
||||
|
Loading…
Reference in New Issue
Block a user