经过数月十轮代码审查,AMD EPYC Zen 5 平台这项长期开发的功能现已合并到 Linux 7.0 内核中,这是基于 ACPI PRMT 的 Compute Express Link(CXL)子系统地址转换。
经过过去数月的十轮代码审查,这项 AMD Zen 5 平台的功能现已进入主线 Linux 内核。其中一个内核补丁中解释如下:
“Zen5 系统可以配置为使用 ‘规范化地址’。然后,主机物理地址 (HPA) 与其系统物理地址 (SPA) 不同。端点拥有自己的物理地址空间,并且传入的 HPA 已经转换为设备的物理地址 (DPA)。因此它禁用了交错,并且 CXL 端点被编程为直通 (DPA == HPA)。
主机物理地址(HPAs)需要从端点转换到其 CXL 主机桥接器,特别是为了识别端点的根解码器和区域的地址范围。ACPI 平台运行机制(PRM)提供了一个处理器来将 DPA 转换为其 SPA。
…
使用标准化地址时,这个 PRM 处理器必须用于将端点的 HPA 转换为其 SPA。要实现 AMD Zen5 地址转换,请执行以下操作:
引入一个新文件 core/atl.c 来处理 ACPI PRM 特定的地址转换代码。命名与内核的 AMD 地址转换库(CONFIG_AMD_ATL)松散相关,但实现不依赖于它,也不是特定于供应商的。使用 Kbuild 和 Kconfig 选项分别根据架构和平台选项启用代码。
AMD Zen5 系统支持 ACPI PRM CXL 地址转换固件调用(参见 ACPI v6.5 移植指南,地址转换 – CXL DPA 到系统物理地址)。如果平台实现了地址转换,固件将启用 PRM 处理程序。
还有一个单独的文档补丁,该补丁本身经过了五轮审查。这份文档更详细地涵盖了 ACPI PRM CXL 地址转换。

这项 ACPI 平台运行机制(PRM)/平台运行机制表(PRMT)最初随 AMD EPYC 9005 系列推出,但预计也将继续用于下一代 EPYC Zen 6 平台。虽然它加入主线内核较晚,但至少现在已经加入并准备好迎接未来。
Linux 7.0 的 CXL 合并还带来了 CXL 端口错误协议处理和报告的添加,以及各种其他代码清理和修复。
转自 Linux 7.0 CXL Enables AMD Zen 5 Address Translation Feature – Phoronix
Linuxeden开源社区