Hello there,
I am implementing hibernate feature of my Windows PV drivers for Xen. My bus driver will enumerate network and disk child devices which are serviced by a NDIS miniport and SCSI miniport drivers. The problem I meet is that if I attach 1 disk and 1 network device. My disk driver can pass Sleep Stress with I/O test case, which will hibernate and resume system for several times. But if I attach 7 disk and 1 network device, system can be hibernated and resumed for 2 times but BSOD with error code 0x9F in my bus driver when system resumes from hibernation for the 3rd time. From memory dump file analyzing, my bus driver blocks a set power IRP for a child device PDO. In that routine, I just set IRP status to success and call IoCompleleRequest to finish the IRP. It seems that some IRP complete routine block that IRP. Why does it just happen in a multi disk system? How can I address the problem?
WLK version: 1.5
WDK version: 7600.16385.0
OS version: Windows server 2008 x86 with SP2
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DRIVER_POWER_STATE_FAILURE (9f)
A driver is causing an inconsistent power state.
Arguments:
Arg1: 00000003, A device object has been blocking an Irp for too long a time
Arg2: 86316030, Physical Device Object of the stack
Arg3: 863bc018, Functional Device Object of the stack
Arg4: 97aecf20, The blocked IRP
Debugging Details:
PEB is paged out (Peb.Ldr = 7ffd800c). Type “.hh dbgerr001” for details
PEB is paged out (Peb.Ldr = 7ffd800c). Type “.hh dbgerr001” for details
DRVPOWERSTATE_SUBCODE: 3
IRP_ADDRESS: 97aecf20
DEVICE_OBJECT: 863bc018
DRIVER_OBJECT: 8631bb48
IMAGE_NAME: mybus.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 4ba89595
MODULE_NAME: mybus
FAULTING_MODULE: 8250c000 mybus
DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
BUGCHECK_STR: 0x9F
PROCESS_NAME: cscript.exe
CURRENT_IRQL: 2
LAST_CONTROL_TRANSFER: from 8184a3fb to 818e6b8d
STACK_TEXT:
8039dd6c 8184a3fb 0000009f 00000003 86316030 nt!KeBugCheckEx+0x1e
8039ddc8 8184a018 8039de40 81913878 81913800 nt!PopCheckIrpWatchdog+0x1ad
8039de08 818c330b 819274e0 00000000 97dcf31a nt!PopCheckForIdleness+0x343
8039df28 818c2ecb 8039df70 00000002 8039df78 nt!KiTimerListExpire+0x367
8039df88 818c3635 00000000 00000000 00045656 nt!KiTimerExpiration+0x22a
8039dff4 818c12f5 94c7dbf0 00000000 00000000 nt!KiRetireDpcList+0xba
8039dff8 94c7dbf0 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x45
WARNING: Frame IP not in any known module. Following frames may be wrong.
818c12f5 00000000 0000001b 00c7850f bb830000 0x94c7dbf0
STACK_COMMAND: kb
FOLLOWUP_NAME: MachineOwner
FAILURE_BUCKET_ID: 0x9F_VRF_IMAGE_mybus.sys
BUCKET_ID: 0x9F_VRF_IMAGE_mybus.sys
Followup: MachineOwner
0: kd> !irql
Debugger saved IRQL for processor 0x0 – 2 (DISPATCH_LEVEL)
0: kd> !irp 97aecf20
Irp is active with 3 stacks 2 is current (= 0x97aecfb4)
No Mdl: No System Buffer: Thread 00000000: Irp stack trace.
cmd flg cl Device File Completion-Context
[0, 0] 0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
[16, 2] 0 e1 863bc018 00000000 81af1bf3-93aa4760 Success Error Cancel pending
\Driver\mybus nt!PopSystemIrpCompletion
Args: 00015500 00000000 00000005 00000003
[0, 0] 0 0 00000000 00000000 00000000-93aa4760
Args: 00000000 00000000 00000000 00000000
0: kd> !devobj 86316030
Device object (86316030) is for:
NTPNP_PCI0006 \Driver\pci DriverObject 862e1b28
Current Irp 00000000 RefCount 0 Type 00000022 Flags 00001040
Dacl 85970e90 DevExt 863160e8 DevObjExt 86316480 DevNode 863138b0
ExtensionFlags (0x80000000) DOE_DESIGNATED_FDO
AttachedDevice (Upper) 863bc018 \Driver\mybus
Device queue is not busy.
0: kd> !devobj 863bc018
Device object (863bc018) is for:
\Driver\mybus DriverObject 8631bb48
Current Irp 00000000 RefCount 0 Type 00000022 Flags 00000000
DevExt 863bc0d0 DevObjExt 863c2050
ExtensionFlags (0xb0000800) DOE_RAW_FDO, DOE_DESIGNATED_FDO
Unknown flags 0x10000800
AttachedTo (Lower) 86316030 \Driver\pci
Device queue is not busy.
--------------end---------------
Any more info you need, please let me know.
Thanks
Wayne