aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2022-08-05 17:40:57 +0000
committerAlexander Motin <mav@FreeBSD.org>2022-08-05 17:48:05 +0000
commitac64943ca8514382289e6054e8127726a7c40ea3 (patch)
treeb892a70eefa2c2c6639a6f2e4f127b194cf8e78d
parentc39eecd84b3e1e486fc6082653891c8f4506aff1 (diff)
downloadsrc-ac64943ca8514382289e6054e8127726a7c40ea3.tar.gz
src-ac64943ca8514382289e6054e8127726a7c40ea3.zip
mca: Add sysctl to mute corrected errors.
Setting hw.mca.log_corrected to 0 will mute corrected errors logging except ones marked as reaching Yellow threshold by hardware. MFC after: 1 week
-rw-r--r--sys/x86/x86/mca.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c
index e3386b5b7459..58630fae0781 100644
--- a/sys/x86/x86/mca.c
+++ b/sys/x86/x86/mca.c
@@ -109,6 +109,10 @@ static int mca_enabled = 1;
SYSCTL_INT(_hw_mca, OID_AUTO, enabled, CTLFLAG_RDTUN, &mca_enabled, 0,
"Administrative toggle for machine check support");
+static int log_corrected = 1;
+SYSCTL_INT(_hw_mca, OID_AUTO, log_corrected, CTLFLAG_RWTUN, &log_corrected, 0,
+ "Log corrected errors to the console");
+
static int amd10h_L1TP = 1;
SYSCTL_INT(_hw_mca, OID_AUTO, amd10h_L1TP, CTLFLAG_RDTUN, &amd10h_L1TP, 0,
"Administrative toggle for logging of level one TLB parity (L1TP) errors");
@@ -426,7 +430,12 @@ mca_log(const struct mca_record *rec)
uint16_t mca_error;
if (mca_mute(rec))
- return;
+ return;
+
+ if (!log_corrected && (rec->mr_status & MC_STATUS_UC) == 0 &&
+ (!tes_supported(rec->mr_mcg_cap) ||
+ ((rec->mr_status & MC_STATUS_TES_STATUS) >> 53) != 0x2))
+ return;
printf("MCA: Bank %d, Status 0x%016llx\n", rec->mr_bank,
(long long)rec->mr_status);