misc: smpro-errmon: Add DIMM 2x Refresh rate event
authorQuan Nguyen <quan@os.amperecomputing.com>
Fri, 10 Mar 2023 08:34:15 +0000 (15:34 +0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2023 08:47:16 +0000 (09:47 +0100)
In high temperature condition, JEDEC spec requires memory controller to
double the refresh rate. This commit adds event_dimm_2x_refresh sysfs
to report that events for all memory channels.

Signed-off-by: Quan Nguyen <quan@os.amperecomputing.com>
Link: https://lore.kernel.org/r/20230310083416.3670980-2-quan@os.amperecomputing.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/ABI/testing/sysfs-bus-platform-devices-ampere-smpro
drivers/misc/smpro-errmon.c

index ca93c21..14b58c8 100644 (file)
@@ -234,8 +234,8 @@ Description:
                For details, see section `5.10 RAS Internal Error Register Definitions,
                Altra Family Soc BMC Interface Specification`.
 
-What:          /sys/bus/platform/devices/smpro-errmon.*/event_[vrd_warn_fault|vrd_hot|dimm_hot]
-KernelVersion: 6.1
+What:          /sys/bus/platform/devices/smpro-errmon.*/event_[vrd_warn_fault|vrd_hot|dimm_hot|dimm_2x_refresh]
+KernelVersion: 6.1 (event_[vrd_warn_fault|vrd_hot|dimm_hot]), 6.4 (event_dimm_2x_refresh)
 Contact:       Quan Nguyen <quan@os.amperecomputing.com>
 Description:
                (RO) Contains the detail information in case of VRD/DIMM warning/hot events
@@ -258,8 +258,11 @@ Description:
                +---------------+---------------------------------------------------------------+---------------------+
                | DIMM HOT      | /sys/bus/platform/devices/smpro-errmon.*/event_dimm_hot       | DIMM Hot            |
                +---------------+---------------------------------------------------------------+---------------------+
+               | DIMM 2X       | /sys/bus/platform/devices/smpro-errmon.*/event_dimm_2x_refresh| DIMM 2x refresh rate|
+               | REFRESH RATE  |                                                               | event in high temp  |
+               +---------------+---------------------------------------------------------------+---------------------+
 
-               For more details, see section `5.7 GPI Status Registers,
+               For more details, see section `5.7 GPI Status Registers and 5.9 Memory Error Register Definitions,
                Altra Family Soc BMC Interface Specification`.
 
 What:          /sys/bus/platform/devices/smpro-misc.*/boot_progress
index d1431d4..1635e88 100644 (file)
@@ -67,6 +67,7 @@
 #define VRD_WARN_FAULT_EVENT_DATA      0x78
 #define VRD_HOT_EVENT_DATA             0x79
 #define DIMM_HOT_EVENT_DATA            0x7A
+#define DIMM_2X_REFRESH_EVENT_DATA     0x96
 
 #define MAX_READ_BLOCK_LENGTH  48
 
@@ -190,6 +191,7 @@ enum EVENT_TYPES {
        VRD_WARN_FAULT_EVENT,
        VRD_HOT_EVENT,
        DIMM_HOT_EVENT,
+       DIMM_2X_REFRESH_EVENT,
        NUM_EVENTS_TYPE,
 };
 
@@ -198,6 +200,7 @@ static u8 smpro_event_table[NUM_EVENTS_TYPE] = {
        VRD_WARN_FAULT_EVENT_DATA,
        VRD_HOT_EVENT_DATA,
        DIMM_HOT_EVENT_DATA,
+       DIMM_2X_REFRESH_EVENT_DATA,
 };
 
 static ssize_t smpro_event_data_read(struct device *dev,
@@ -463,6 +466,7 @@ static DEVICE_ATTR_RO(warn_pmpro);
 EVENT_RO(vrd_warn_fault, VRD_WARN_FAULT_EVENT);
 EVENT_RO(vrd_hot, VRD_HOT_EVENT);
 EVENT_RO(dimm_hot, DIMM_HOT_EVENT);
+EVENT_RO(dimm_2x_refresh, DIMM_2X_REFRESH_EVENT);
 
 static struct attribute *smpro_errmon_attrs[] = {
        &dev_attr_overflow_core_ce.attr,
@@ -488,6 +492,7 @@ static struct attribute *smpro_errmon_attrs[] = {
        &dev_attr_event_vrd_warn_fault.attr,
        &dev_attr_event_vrd_hot.attr,
        &dev_attr_event_dimm_hot.attr,
+       &dev_attr_event_dimm_2x_refresh.attr,
        NULL
 };