10 月 20 日消息,科技媒体 NeoWin 昨日(10 月 19 日)发布博文,报道称 Linux 7.3 内核已合并补丁,针对三星 990 PRO、990 EVO Plus 固态硬盘,修复兼容该系列“即时就绪”(Immediate Readiness)功能。
注:“即时就绪”并非三星独有的 SSD 加速技术,相关标志由 PCIe 4.0 引入,表示设备复位后可以立即响应系统的配置访问,系统据此跳过等待,以缩短复位后的恢复过程。

根据 Linux 7.3 内核的相关修复说明,“设备声明的能力”与“固件实际行为”存在不一致问题:
涉及设备/固件报道中的情况三星 990 PRO,旧版固件如 1B2QJXD7声明支持 Immediate Readiness,但功能级复位后,配置读取在 7ms 内未返回有效数据三星 990 PRO,固件 8B2QJXD7修复说明指出,该版本可以在复位后立即响应三星 990 EVO Plus,固件 2B2QKXG7被报告存在类似问题该修复程序现已合并到 Linux 7.3 版本中,在 Git 信息中写道:
三星 990 PRO [144d:a80c] 宣称具有“立即就绪”功能,因此 pcie_flr () 在 FLR 后不会等待,但硬盘会在最多 7 毫秒内返回 ~0。
自提交 10baa9b4df40(“PCI:恢复 BAR 时丢弃不必要的重试”)以来,FLR 后的配置恢复会丢失,从而破坏硬盘的 VFIO 直通功能。固件 8B2QJXD7 在 FLR 后会立即响应,但较旧的固件(例如 1B2QJXD7)则不会,并且此处无法显示固件版本。
[bhelgaas: 固件版本为 2B2QKXG7 的三星 990 EVO Plus [144d:a80d] 似乎也存在同样的问题。]
这里涉及 FLR(Function Level Reset,功能级复位)。Linux 因为相信设备的 Immediate Readiness 标志,在 FLR 后不再等待;但设备实际上尚未准备好,接下来的配置恢复就可能失败。
修复方案上,Linux 的应对方式是“不再直接相信”受影响设备上报的能力,在功能级别重置后先等待,再恢复 PCI 配置。由于相关内核代码无法获取固件版本,这种处理避免了逐一识别固件,也有助于提升虚拟机直通的可靠性。
【来源:IT之家】

