EDAC 内存修复控制

版权所有 (c) 2024-2025 海思半导体有限公司。

作者:

Shiju Jose <shiju.jose@huawei.com>

许可证:

GNU 自由文档许可证,版本 1.2,不包含不变章节、封面文本和封底文本。(根据 GPL v2 双重许可)

原始审阅者:

  • 编写版本: 6.15

简介

某些内存设备支持修复操作以解决其内存介质中的问题。封装后修复 (PPR) 和内存备用是此类功能的示例。

封装后修复 (PPR)

封装后修复是一种维护操作,它请求内存设备对其介质执行修复操作。它是一种内存自愈功能,通过用 DRAM 设备中的备用行替换失效的内存位置来修复故障内存位置。

例如,具有支持 PPR 功能的 DRAM 组件的 CXL 内存设备实现了维护操作。DRAM 组件支持以下类型的 PPR 功能:

  • 硬 PPR,用于永久行修复,以及

  • 软 PPR,用于临时行修复。

软 PPR 比硬 PPR 快得多,但修复会在断电重启后丢失。

在修复操作期间,数据可能无法保留,内存请求可能无法正确处理。在这种情况下,修复操作不应在运行时执行。

例如,对于 CXL 内存设备,请参阅 CXL 规范修订版 3.1 [1] 的 8.2.9.7.1.1 PPR 维护操作、8.2.9.7.1.2 sPPR 维护操作和 8.2.9.7.1.3 hPPR 维护操作部分以获取更多详细信息。

内存备用

内存备用是一种修复功能,它以特定的粒度用一部分功能内存替换一部分内存。内存备用具有缓存行/行/bank/rank 备用粒度。例如,在 rank 内存备用模式下,一个内存 rank 在同一通道上的其他 rank 发生故障时作为备用。

备用 rank 被保留,直到指示故障发生才用作活动内存,保留容量从系统中总可用内存中扣除。

在受内存备用保护的系统中,当错误阈值被超出后,故障 DIMM rank 的内容会复制到备用 rank。然后故障 rank 下线,备用 rank 上线,用作代替故障 rank 的活动内存。

例如,CXL 内存设备可以支持各种备用操作子类,这些子类在执行备用的范围方面有所不同。

缓存行备用子类指可以替换整个缓存行的备用操作。行备用是 PPR 备用功能的替代方案,其范围是单个 DDR 行。Bank 备用允许替换整个 bank。Rank 备用定义为替换整个 DDR rank 的操作。

有关更多详细信息,请参阅 CXL 规范 3.1 [1] 的 8.2.9.7.1.4 内存备用维护操作部分。

通用内存修复功能控制的使用场景

  1. 软 PPR、硬 PPR 和内存备用功能共享相似的控制属性。因此,需要一个标准化、通用的 sysfs 修复控制,该控制暴露给用户空间并由管理员、脚本和工具使用。

  2. 当 CXL 设备检测到内存组件中的错误时,它会通过使用一个事件记录(其中设置了“需要维护”标志)来通知主机需要执行修复维护操作。该事件记录指定了需要修复的内存的设备物理地址 (DPA) 和属性。内核将相应的 CXL 通用介质或 DRAM 跟踪事件报告给用户空间,并且用户空间工具(例如 rasdaemon)使用 sysfs 修复控制响应设备请求来启动修复维护操作。

  3. 用户空间工具(例如 rasdaemon)在以下情况下请求对内存区域执行修复操作:设置了维护需要标志,或报告了未纠正的内存错误,或纠正的内存错误超过阈值,或该内存的纠正错误阈值超出标志被设置。

  4. 每个内存设备可能存在多个 PPR/备用实例。

  5. 驱动程序应确保在线修复是安全的。在内存映射功能可能在不同引导之间变化的系统中,一种方法是记录本次引导中遇到的内存错误,并以此检查在线内存修复请求。

文件系统

已注册内存修复实例的控制属性可以在 /sys/bus/edac/devices/<dev-name>/mem_repairX/ 中访问。

sysfs

Sysfs 文件在 ABI 文件测试/sysfs-edac-memory-repair 中有详细说明。

示例

内存修复的使用方法如本例所示

  1. CXL 内存备用

内存备用定义为一种修复功能,它在相同的 DPA 处用一部分功能内存替换一部分内存。此操作的子类,即缓存行/行/bank/rank 备用,在执行备用的范围方面有所不同。

实现 CXL.mem 协议的 CXL 设备可能支持内存备用维护操作。备用维护操作请求 CXL 设备对其介质执行修复操作。例如,具有支持内存备用功能的 DRAM 组件的 CXL 设备可能实现备用维护操作。

  1. CXL 内存软封装后修复 (sPPR)

实现 CXL.mem 协议的 CXL 设备可能支持封装后修复 (PPR) 维护操作。PPR 维护操作请求 CXL 设备对其介质执行修复操作。例如,具有支持 PPR 功能的 DRAM 组件的 CXL 设备可能实现 PPR 维护操作。软 PPR (sPPR) 是一种临时行修复。软 PPR 可能更快,但修复会在断电重启后丢失。

内存修复的 Sysfs 文件在 ABI 文件测试/sysfs-edac-memory-repair 中有详细说明