[PATCH v5 12/17] ras: AEST: Allow configuring CE threshold via debugfs
Ruidong Tian
tianruidong at linux.alibaba.com
Tue Dec 30 01:12:51 PST 2025
This commit introduces the ability to configure the Corrected Error (CE)
threshold for AEST records through debugfs. This allows administrators to
dynamically adjust the CE threshold for error reporting.
Signed-off-by: Ruidong Tian <tianruidong at linux.alibaba.com>
---
Documentation/ABI/testing/debugfs-aest | 16 ++++++++++
drivers/ras/aest/aest-sysfs.c | 42 ++++++++++++++++++++++++++
2 files changed, 58 insertions(+)
diff --git a/Documentation/ABI/testing/debugfs-aest b/Documentation/ABI/testing/debugfs-aest
index 295df9e9b455..4d160072d37a 100644
--- a/Documentation/ABI/testing/debugfs-aest
+++ b/Documentation/ABI/testing/debugfs-aest
@@ -24,6 +24,14 @@ Description:
See more at:
https://developer.arm.com/documentation/den0085/latest/
+What: /sys/kernel/debug/aest/<name>.<id>/<node_name>/ce_threshold
+Date: Dec 2025
+KernelVersion 6.19
+Contact: Ruidong Tian <tianruidong at linux.alibaba.com>
+Description:
+ (WO) Write the ce threshold to all records of this node. Failed
+ if input exceeded the maximum threshold
+
What: /sys/kernel/debug/aest/<name>.<id>/<node_name>/err_count
Date: Dec 2025
KernelVersion 6.19
@@ -38,6 +46,14 @@ Contact: Ruidong Tian <tianruidong at linux.alibaba.com>
Description:
(RO) Read err_* register and return val.
+What: /sys/kernel/debug/aest/<name>.<id>/<node_name>/record<index>/ce_threshold
+Date: Dec 2025
+KernelVersion 6.19
+Contact: Ruidong Tian <tianruidong at linux.alibaba.com>
+Description:
+ (RW) Read and write the ce threshold to this record. Failed
+ if input exceeded the maximum threshold
+
What: /sys/kernel/debug/aest/<name>.<id>/<node_name>/record<index>/err_count
Date: Dec 2025
KernelVersion 6.19
diff --git a/drivers/ras/aest/aest-sysfs.c b/drivers/ras/aest/aest-sysfs.c
index b54e879506aa..392e7ad8328e 100644
--- a/drivers/ras/aest/aest-sysfs.c
+++ b/drivers/ras/aest/aest-sysfs.c
@@ -7,6 +7,25 @@
#include "aest.h"
+static void
+aest_store_threshold(struct aest_record *record, void *data)
+{
+ u64 err_misc0, *threshold = data;
+ struct ce_threshold *ce = &record->ce;
+
+ if (*threshold > ce->info->max_count)
+ return;
+
+ ce->threshold = *threshold;
+ ce->count = ce->info->max_count - ce->threshold + 1;
+
+ err_misc0 = record_read(record, ERXMISC0);
+ ce->reg_val = (err_misc0 & ~ce->info->mask) |
+ (ce->count << ce->info->shift);
+
+ record_write(record, ERXMISC0, ce->reg_val);
+}
+
static void
aest_error_count(struct aest_record *record, void *data)
{
@@ -77,6 +96,27 @@ DEFINE_AEST_DEBUGFS_ATTR(err_misc1, ERXMISC1);
DEFINE_AEST_DEBUGFS_ATTR(err_misc2, ERXMISC2);
DEFINE_AEST_DEBUGFS_ATTR(err_misc3, ERXMISC3);
+static int record_ce_threshold_get(void *data, u64 *val)
+{
+ struct aest_record *record = data;
+
+ *val = record->ce.threshold;
+ return 0;
+}
+
+static int record_ce_threshold_set(void *data, u64 val)
+{
+ u64 threshold = val;
+ struct aest_record *record = data;
+
+ aest_store_threshold(record, &threshold);
+
+ return 0;
+}
+
+DEFINE_DEBUGFS_ATTRIBUTE(record_ce_threshold_ops, record_ce_threshold_get,
+ record_ce_threshold_set, "%llu\n");
+
static int aest_record_err_count_show(struct seq_file *m, void *data)
{
struct aest_record *record = m->private;
@@ -116,6 +156,8 @@ static void aest_record_init_debugfs(struct aest_record *record)
&err_misc3_ops);
debugfs_create_file("err_count", 0400, record->debugfs, record,
&aest_record_err_count_fops);
+ debugfs_create_file("ce_threshold", 0600, record->debugfs, record,
+ &record_ce_threshold_ops);
}
static void
--
2.47.3
More information about the linux-arm-kernel
mailing list