EDAC: Add a memory repair control feature
authorShiju Jose <shiju.jose@huawei.com>
Wed, 12 Feb 2025 14:36:42 +0000 (14:36 +0000)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 26 Feb 2025 10:13:23 +0000 (11:13 +0100)
commit699ea5219c4b1d9d8819eb2d99e51a3fdb7b1d7b
treeb77074ec0ffac02fb59c799a179a10983fa192b5
parentbcbd069b11b024994e30c7c2f3d716a4141fdab1
EDAC: Add a memory repair control feature

Add a generic EDAC memory repair control driver to manage memory repairs in
the system, such as CXL Post Package Repair (PPR) and other soft and hard PPR
features.

For example, a CXL device with DRAM components that support PPR features may
implement PPR maintenance operations. DRAM components may support two types of
PPR:

 - hard PPR, for a permanent row repair, and
 - soft PPR,  for a temporary row repair.

Soft PPR is much faster than hard PPR, but the repair is lost with a power
cycle.

When a CXL device detects an error in a memory, it may report the need for
a repair maintenance operation by using an event record where the "maintenance
needed" flag is set. The event records contain the device physical
address (DPA) and other optional attributes of the memory to repair.

The kernel will report the corresponding CXL general media or DRAM trace event
to userspace, and userspace tools (e.g. rasdaemon) will initiate a repair
operation in response to the device request via the sysfs repair control.

Device with memory repair features registers with EDAC device driver, which
retrieves a memory repair descriptor from EDAC memory repair driver and exposes
the sysfs repair control attributes to userspace in

  /sys/bus/edac/devices/<dev-name>/mem_repairX/.

The common memory repair control interface abstracts the control of arbitrary
memory repair functionality into a standardized set of functions.  The sysfs
memory repair attribute nodes are only available if the client driver has
implemented the corresponding attribute callback function and provided
operations to the EDAC device driver during registration.

  [ bp: Massage, fixup edac_dev_register() retvals, merge
    write_overflow fix to mem_repair_create_desc() ]

Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20250212143654.1893-5-shiju.jose@huawei.com
Documentation/ABI/testing/sysfs-edac-memory-repair [new file with mode: 0644]
Documentation/edac/features.rst
Documentation/edac/index.rst
Documentation/edac/memory_repair.rst [new file with mode: 0644]
drivers/edac/Kconfig
drivers/edac/Makefile
drivers/edac/edac_device.c
drivers/edac/mem_repair.c [new file with mode: 0755]
include/linux/edac.h