AMD地址翻译库(ATL)正在为基于Zen的系统清理和集中Linux内核中的现有代码。在内核邮件列表上进行了审查后,AMD ATL将作为即将到来的Linux 6.8内核周期。
AMD地址翻译库本身并不是什么闪亮的新功能,而是已在Linux内核中存在多年的现有AMD Zen地址转换代码的演变。随着AMD服务器硬件功能的扩展和像CXL这样的新创新的出现,这个以前独立于AMD EDAC(错误检测和纠正)驱动程序的代码现在被剥离到它自己的公共内核“库”中,可以更好地在多个AMD硬件驱动程序之间进行利用。
AMD地址转换库现在可以跨驱动程序使用,主要用于错误处理场景(如内存ECC错误)的地址转换。这块补丁在下周的Linux6.8合并窗口之前,添加AMD ATL库已经在TIP.git中排队。这个承诺很好地总结了一切:
“基于AMD ZEN的系统通过代表统一内存控制器(UMC)的机器检查库报告内存错误。为DRAM ECC错误报告的地址值是相对于UMC的”标准化地址“。此标准化地址必须转换为操作系统可以使用的系统物理地址。
在带有Zen1系统的MCA子系统中引入了对此地址转换的支持。该代码后来被转移到AMD64 EDAC模块,因为这是当时该代码的唯一用户。
但是,此翻译在EDAC之外也有用处。系统物理地址可以在MCA中用于抢占式页面脱机,就像在一些MCA通知器功能中所做的那样。此外,此转换也是AMD系统上某些CXL配置所需的类似功能的基础。
引入一个通用地址转换库,可用于多个子系统,包括MCA、EDAC和CXL。
包括对当前CPU系统UMC归一化到系统物理地址转换的支持。
数据结构间接寄存器访问偏移量和其中一个寄存器字段已更改。默认为当前偏移量和寄存器字段定义。如果在“传统”系统上运行,则会退回到较旧的值。
除了添加AMD地址转换库之外,另一个贴片 in TIP.git drops the former amd64_edac-specific address translation code and switches to using this new library for Linux 6.8.