Windows 10 蓝屏 DRIVER POWER STATE FAILURE 的解决方案

Update (Apr 27, 2021): 似乎可以通过关闭网络信号的形式绕过这个问题。离开办公室前,把laptop wifi置于关闭,然后laptop sleep,到家正常启来laptop后,再把wifi打开,没有发生因为此问题导致的蓝屏。在右侧taskbar 的wifi icon有开关wifi 的按钮。

Update (Dec 9, 2020): 今天蓝屏重现,从sleep唤醒,插入AC电源,蓝屏。另外发现好像是在我把笔记本给办公室拿回家后打开发生的。问题是出在iscsi是逃不了了。

大概是几周前,thinkpad x270开始蓝屏,一般是在sleep 唤醒之后几分钟内,突然蓝屏。提示的信息是 Driver Power State Failure,代码是 9f,并且在蓝屏后不会重启。

在网上简单搜索,发现这个问题是与设备驱动的供电有关,一般是某设备驱动需要变化电源状态,但没有成功,就出现这个蓝屏。所以我怀疑的是否电源管理的问题,将几个power plan 里的Battery 和Plug-in下的USB, wifi, PCI express 等都设为 maximum performance。但问题继续存在。

我在Event Viewer 里查看最早出现蓝屏的时间,以及蓝屏出现前后的错误,发现前后出现了一些 iSCSIPrt 的错误。我用bluescreenview 这个小工具检查了一下DMP file, 提示 Caused by ntoskrnl.exe,这等于没说,因为 ntoskrnl 是win最核心的代码,不可能是其本身的问题。

从网上深度搜索,有报告各种原因,但与我的情况不一致,或者对应修改后还是无法解决。

最后一招就是看看蓝屏时存储的DMP文件本身,看有没有线索。安装Windows Toolkit,只需要里面的WinDbg 工具即可。全部的windows toolkit很大,我们通过其提供的在线安装程序,在里面只选择 Windows Debugger (WinDbg) 就可以,很快就完成安装。

打开 WinDbg (x64)——我的是64位机器——Open crash Dump …,把dump文件装载进来。windows 在蓝屏的时候会生成 minidump 和完整的dump文件,我在 C:\Windows\Minidump目录下找到一个120120-9859-01.dump文件,将之COPY 出来到桌面 (一定要拷贝出来,否则会提示Access denied)。

WinDbg 的Command 里运行 !analyze -v,可以看到:

BUGCHECK_CODE:  9f

BUGCHECK_P1: 3

BUGCHECK_P2: ffffda024ef51050

BUGCHECK_P3: ffff80017ca57ba0

BUGCHECK_P4: ffffda0255ee1de0

DRVPOWERSTATE_SUBCODE:  3

IMAGE_NAME:  msiscsi.sys

MODULE_NAME: msiscsi

FAULTING_MODULE: fffff8021c6a0000 msiscsi

CUSTOMER_CRASH_COUNT:  1

PROCESS_NAME:  MsMpEng.exe

DPC_STACK_BASE:  FFFF80017CA57FB0

IMAGE_VERSION:  10.0.19041.631

STACK_COMMAND:  .thread ; .cxr ; kb

FAILURE_BUCKET_ID:  0x9F_3_disk_IMAGE_msiscsi.sys

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {5882332e-2e47-a9bd-4094-b6bb2ab2211e}

果然里面提供了详细信息,大概是因为 msiscsi.sys 驱动导致。另方面说,bluescreenview小工具就不大顶用。我联想到最近我用iscsi 连接到实验室NAS上面,时间大概与首发蓝屏时间差不多,并且iscsi error 在event viewer里多次出现,大概确定了蓝屏源头所在。

我搜索了下iscisi 导致的9f 蓝屏情况,有人说要更新一下驱动,但我没有找到相关的报道说这个驱动有问题,所以不大可行。看到有人报告 fast startup 与iscsi 驱动电源的关系,我取消了 fast startup,这两天测试一下,好像蓝屏问题得以成功解决了。

两者之间的背后的逻辑大概是,如果fast startup 在开启情况下,会将一些driver 的启动延后以提高启动速度,启动完成后再加载这些驱动,这也是为什么这个蓝屏总是发生在启动后,正常使用几分钟后突然蓝屏,这时候试图加载msiscsi.sys,并改变电源状态,发生错误。

Win 10下面禁止 fast startup 在如下位置:

Power options > choose what the power buttons do,在最下面 turn on fast startup前的勾取消掉 (uncheck)。

Leave a Reply

Your email address will not be published. Required fields are marked *