下一个内核周期将被称为 Linux 6.20 或 Linux 7.0,这取决于 Linus Torvalds 如何处理这个下一个 x.20 里程碑的版本号。更有可能的是 Linux 7.0,鉴于他历史上的版本命名方案,但不管怎样,这个新内核周期之前,一些针对 CXL 子系统的初始化更改正在逐步构建。
Linux 对计算表达链接(CXL)的适配工作仍在继续,许多补丁仍然来自 Intel,但最近 AMD 和其他硬件厂商也增加了更多工作。现在在 CXL.git 中有一个新的 Git 分支 for-7.0/cxl-init。该分支包含一组补丁,用于重新设计 CXL 的初始化流程,以支持软保留恢复和加速内存功能。

AMD 工程师提交了补丁,用于实现对 CXL Soft-Reserve Recovery 和 Accelerator Memory 的支持,而这些由 Intel 工程师 Dan Williams 提交的补丁则是一些必要的准备工作。Williams 在邮件列表中提出这些 CXL 初始化更改时解释道:
CXL子系统是模块化的。这种模块化有利于关注点分离和测试。它通常适用于支持热插拔并能动态添加CXL个性(与PCI个性并存)的设备。然而,模块化的一个代价是:设备(如cxl_memdevs、cxl_ports、cxl_regions)何时有机会在@cxl_bus_type上挂载到对应驱动,存在不确定性。
无法可靠地确定设备是否已经连接到其驱动程序,还是仍在等待模块加载,这是“Soft Reserve Recovery”和“Accelerator Memory”启用工作中的一个常见问题。”
对于“Soft Reserve Recovery”,它希望使用 wait_for_device_probe()作为同步点,以便在启动时已存在的 CXL 设备有机会连接到 cxl_pci 驱动程序(通用 CXL 内存扩展类驱动程序)。如果 wait_for_device_probe()仅刷新 PCI 设备探测,而没有刷新 cxl_pci_probe()创建的 cxl_memdev 的 cxl_mem_probe(),则这种机制将失效。
对于“Accelerator Memory”,驱动程序并非 cxl_pci,而是任何希望使用 devm_cxl_add_memdev() ABI 来连接到 CXL 内存域的潜在 PCI 驱动程序。这些驱动程序需要知道 CXL 链路是否是端到端活跃的(从端点,经过交换机,到主机桥),以及 CXL 内存操作是否已启用。如果没有,CXL 加速器可能能够回退到仅 PCI 操作。与“Soft Reserve Memory”类似,它需要知道 CXL 子系统是否已经探测了设备的祖先拓扑结构,并让该驱动程序在同步状态下决定 CXL 操作。
我们将看到在二月的 Linux 6.20~7.0 合并窗口之前,接下来几周 CXL.git 中还有哪些工作被安排,以及 Soft Reserve Recovery 和 Accelerator Memory 功能是否都能及时完成。
转自 Linux 6.20~7.0 To Bring Prep Changes For CXL Soft Reserve Recovery & Accelerator Memory – Phoronix
Linuxeden开源社区