DMA 卡假死与冷启动
为什么 Windows 重启之后,假死的 DMA 卡依旧假死,以及如何正确地给两台机器冷启动。教你分辨卡是假死还是真坏,以及反复假死说明了什么。
简短回答
Windows 重启并不能让假死的 DMA 卡恢复:PCIe 插槽始终带电,FPGA 可能一直卡在原来的状态。把两台机器彻底关机,拔掉电源线或关掉电源开关十秒,然后先开游戏主机。
本页内容9
为什么重启解决不了卡假死?
重启是热复位:操作系统自行关闭再重新启动。但电源自始至终都在供电,PCIe 插槽的供电轨也一直在线。所以卡上的 FPGA 会保持已配置的状态,复位也不一定能清除它当时所处的状态。这个状态可能是一条卡住的传输队列,也可能是一个名义上仍然挂在副机(第二台电脑)上的 USB 端点。机器重新回到了桌面,卡却带着三十秒前一模一样的问题回来了。
警告
快速启动如何把“关机”变成热启动
Windows 的快速启动(Fast Startup)会把内核会话保存到硬盘上再重新加载,这就是现在的电脑几秒钟就能开机的原因。这也意味着点“关机”不一定真的会让机器断电。如果风扇还在转,或者机器开机快得可疑,那你并没有冷启动,卡也从来没断过电。点“关机”时按住 Shift 可以绕过快速启动;排查期间也可以在两台机器的“电源选项”里把它关掉。
如何给两台机器冷启动
把这套流程养成习惯:它只要四十秒,却是整套环境里最有效的单项排查步骤。
- 先关掉副机上的软件,这样卡断开时不会有读取正在进行
- 按住 Shift 点“关机”,关闭副机
- 用同样的方式关闭游戏主机,等所有风扇和指示灯都停下
- 关掉游戏主机背后的电源开关,或者拔掉电源线,然后等十秒
- 在断电状态下,按住游戏主机的电源键五秒,放掉残余电量
- 确认卡上自带的指示灯已经熄灭;如果还亮着,说明插槽仍然带电,你根本没做成冷启动
- 恢复供电,先开游戏主机(注意是游戏主机),等它进入桌面
- 再开副机,然后启动软件
提示
为什么必须先开游戏主机?
卡插在游戏主机的插槽里,由游戏主机供电和枚举。只有卡完成上电启动之后,FTDI 桥接芯片才会出现,而副机只能看到一个已经存在的设备。如果开机顺序反过来,副机就会报设备错误,看起来和线坏了一模一样。结果大家花一整晚换线,而真正的问题只是开机顺序。
卡是假死还是真坏?
区别在于真正冷启动之后有没有任何变化。申请换货之前先对照这张表过一遍,因为一张从没冷启动过的假死卡,看起来和坏卡一模一样。
| 观察项 | 假死 | 真坏 |
|---|---|---|
| 彻底断电冷启动之后 | 恢复正常,或者报错转移到了别的层 | 报错完全相同,每次都一样,毫无变化 |
| 游戏主机通电时卡上的指示灯 | 亮着,且表现符合板卡厂商文档的说明 | 不亮,或者停在厂商文档里没有列出的某种状态 |
| 副机的设备管理器 | 桥接设备存在,可能带黄色感叹号 | 换任何口、任何线都不会出现新的 USB 设备 |
| 放到另一台确认正常的机器上 | 正常枚举 | 在那台机器上同样识别不到 |
| 刷写口和刷写工具 | 能正常读出芯片 ID | 通过刷写口也连不上 |
| 单次使用中的规律 | 能用,过一阵停止工作,冷启动后又能用 | 自某件事发生之后一次都没正常工作过 |
只有在真正冷启动之后,换两台机器、两根线、两个接口都失败的卡,才值得判定为坏了。
报告之前如何测试这张卡
每一步都排除一个变量,所以不要直接跳到最后一步。
- 按完整关机流程给两台机器冷启动,然后在不改动任何其他东西的情况下重试一次
- 换一根确认正常的数据线,仍然直接插在后置 USB 3 口上
- 换一个后置 USB 3 口,最好是在另一个控制器上
- 断电,把卡换到游戏主机的另一个 PCIe 插槽
- 如果你有另一台游戏主机,用同样的线和软件把卡放到那台机器上测试
- 做完这些再报告,列出你测过的内容,以及每次尝试的报错原文
如果每次使用都会假死,说明什么?
偶尔假死一次可能是巧合,但每次使用都假死就是一条实打实的线索,而且通常逃不出四种原因。读取没有实际内存对应的物理地址,会让读取链路挂掉。这种情况出现在 AMD 平台和 Thunderbolt 链路上,所以在这些环境里内存映射(MMAP)实际上是必需的。信号余量不足的 USB 链路会产生不完整的传输,最终卡死。封闭机箱里没有风道的卡,会在一段可以预料的升温时间之后开始出故障。与你的板卡不匹配的固件镜像,可能稳定运行几分钟后就停止工作。按这个顺序检查:映射、线材和端口、散热风道、固件。
如果每次使用都会假死,检查这些
- 正在使用内存映射,而且是最近一次硬件变动之后在这台机器上生成的
- USB 链路是直连的:后置 USB 3 口、数据线,没有集线器、扩展坞或延长线
- 间隔几分钟跑两次,读取速度都稳定
- 卡周围有一定的气流,没有紧贴着发热的显卡
- 已经检查过除了卡以外有没有别的东西变了,比如任意一台机器最近更新了 Windows
- 记录了假死发生的时间:记下使用多少分钟后出现,因为如果时间点固定,就指向发热或 USB 选择性暂停
冷启动常见问题
拔电源线会伤卡吗?
不会。机器已经关机后再断电,是复位 PCIe 设备的正常、安全的做法。真正会损坏板卡的是在插槽带电时插拔它。
副机也需要冷启动吗?
通常不需要,但排查期间最好也做。它能清掉副机上失效的 USB 句柄,否则这种情况看起来就像是卡出了故障。
睡眠或休眠算断电吗?
不算。两者都会让插槽保持供电,所以假死的卡依旧假死;快速启动也一样,这就是为什么要按住 Shift。
卡会发热,这有问题吗?
FPGA 和 USB 3 桥接芯片正常工作时都会发热。只有当故障和它在机箱里运行的时长相关时,才算问题。买任何东西之前,先打开侧板、让板卡上有空气流动,再测试一下。
开工单之前应该冷启动几次?
正确地做两次,两次之间不改动任何其他东西。然后把两次的结果都发过来,因为结果一致和结果不一致都是有用的信息。
资料来源
来自实测:冷启动流程和“假死还是真坏”对照表,出自团队亲手复位后退还给客户的那些卡。
继续阅读
仍然没有解决?在 Discord 提交工单
全部指南