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