WHEA_UNCORRECTABLE_ERROR(0x124)在多显卡系统中常因PCIe主从仲裁失败引发,需先通过事件查看器(ID 129/145/216)、登录阶段蓝屏及设备管理器状态确认故障;再依次执行BIOS硬隔离、PCIe资源重映射、DDU清理重建驱动栈或PowerShell强制重枚举。

显卡在多显卡系统中因PCIe主从仲裁失败触发蓝屏,表现为0x0000003B或WHEA_UNCORRECTABLE_ERROR(0x124),错误日志常含pci.sys、dxgkrnl.sys或atikmdag.sys/nvlddmkm.sys模块调用异常,根本原因是两块及以上GPU在共享PCIe根复合体时争夺总线控制权失败,导致IRP超时或地址访问冲突。
确认PCIe仲裁失败的典型特征
第一步:开机后进入Windows前反复蓝屏,且错误时间集中在登录界面加载图形驱动阶段;第二步:事件查看器中“系统”日志存在多条ID为129、145或216的PCIe相关警告,内容含“PCI Express Root Port”“Failed to complete power IRP”或“Link Training Failed”;第三步:设备管理器中显示“显示适配器”下至少两块GPU均正常识别(无黄色感叹号),但其中一块状态栏提示“该设备正在使用中,但Windows无法验证其状态”。
这一步必须先做,否则后续所有操作都可能偏离真实故障点。若日志中未出现上述关键词,说明问题不在PCIe仲裁层,应转向驱动兼容性或供电排查。
强制指定主GPU并禁用次级GPU的PCIe链路训练
方法一:BIOS/UEFI硬隔离(推荐优先尝试)
进入BIOS后定位到Advanced → PCIe Configuration或Chipset → South Bridge Configuration,找到“Primary Graphics Adapter”选项,将其设为“PEG1”或“PCIe Slot 1”(对应物理上插在第一条PCIe x16插槽的显卡);接着查找“PEG2/PEG3 Link Speed”或“Secondary PCIe Slot Speed”,将非主GPU所在插槽的链路速率强制设为“Gen1”或“Disabled”;保存退出后冷启动——此举可让主板拒绝为次级GPU执行完整链路训练,彻底规避仲裁争抢。
【关键前提】 必须确认两块显卡物理插槽分属不同PCIe根端口(即不在同一PCIe Switch下游),否则禁用链路速度无效。可通过CPU-Z的“PCIe”标签页查看每张卡的“Root Port”编号是否一致。
重映射PCIe资源避免地址冲突
1. 按Win+R输入msconfig,切换到“引导”选项卡→点击“高级选项”→勾选“最大内存”,数值填入比当前物理内存小2GB的整数(如32GB内存填30720),点击确定→重启;
2. 开机后立即按Shift+重启→疑难解答→高级选项→UEFI固件设置→进入BIOS;
3. 在Boot或Advanced页中启用“Above 4G Decoding”和“Resizable BAR Support”,同时关闭“PCIe ASPM L0s/L1”节能模式;
4. 保存退出,系统启动后以管理员身份运行cmd,执行:bcdedit /set {current} pciexpressforcedetection on;
5. 重启完成——该命令强制Windows在启动早期扫描全部PCIe配置空间,避免因资源分配延迟导致仲裁模块初始化失败。
卸载并重建多GPU设备栈
方法一:使用DDU+手动注册表清理
在安全模式下运行DDU选择“Clean and restart”,重启后不装驱动;进入注册表编辑器(regedit),导航至HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318},删除所有子项中包含“ven_10de&dev_”(NVIDIA)或“ven_1002&dev_”(AMD)的UpperFilters和LowerFilters键值;然后重新安装官网驱动,安装时务必取消勾选“NVIDIA GeForce Experience”或“AMD Adrenalin Optional Software”等附加组件。
方法二:PowerShell强制重置PCIe枚举
以管理员身份打开PowerShell,依次执行:Get-PnpDevice -Class Display | Where-Object {$_.Status -eq "Error"} | Disable-PnpDevice -Confirm:$false;等待10秒后执行:pnputil /enum-drivers | findstr "pci" | ForEach-Object {pnputil /delete-driver $_.split()[0] /uninstall};最后执行:devcon restart =pci;
注意:devcon工具需提前从Windows Driver Kit (WDK)中提取并置于系统路径,否则命令会报错。


















