>
What would cause scsiport to not call my HwScsiStartIo on resume from
hibernation? The first and second resumes always appear to work
correctly, but the third or fourth fail. HwScsiAdapterControl is
called,
and it returns ScsiAdapterControlSuccess as it should. This is under
XP.
No scsi reset is issued (but then that’s kind of expected if there are
no outstanding requests), and I can ping the system, and it doesn’t
crash or anything even after 2 days, it just sits there at the
textmode
‘restore from hibernation’ screen.
Given that it’s failing after the third or fourth hibernate I’m
guessing
that I’m leaking some resource, but I can’t see what. Is there
anything
useful the debugger could tell me (not that it’s much fun debugging
over
a hibernate/resume cycle).
All suggestions appreciated!
I’m trying to work my way through the debugger… my driver is called
XenVbd:
kd> !devobj 0x81fb4458
Device object (81fb4458) is for:
XenVbd1Port0Path0Target0Lun0 \Driver\XenVbd DriverObject 81ec4328
Current Irp 00000000 RefCount 0 Type 00000007 Flags 00001050
Dacl e10192bc DevExt 81fb4510 DevObjExt 81fb49f0 Dope 81eab8f8 DevNode
82140008
ExtensionFlags (0xc0000000) DOE_BOTTOM_OF_FDO_STACK, DOE_DESIGNATED_FDO
AttachedDevice (Upper) 81d78ab8 \Driver\Disk
DeviceQueue: 81e62270 81ce9008 81aa2500 81cf7608
81df29a0 82016e68 81dfc8e8 81d0fda8
81d185a8 81d4e668 81d731c8 81fc1f48
81d102a0 81f22b48 81fc3c50 81d089e8
81cf81b0 81d17e50 81d0c2a0 81c8b398
81d1a878 81c8b138 81cf8410 81cfc008
81e5cda8 81cc2230 81d73da8 81d4fce8
81cceda8 81d1ae50 81c7a990
So that looks like there are a bunch of IRP’s banked up there right?
kd> !devobj 0x81e785a8
Device object (81e785a8) is for:
0000003b \Driver\XenPCI DriverObject 8217dad8
Current Irp 00000000 RefCount 0 Type 00000004 Flags 00001044
Dacl e13634e4 DevExt 81e78210 DevObjExt 81e78678 DevNode 81d79ee8
ExtensionFlags (0xc0000000) DOE_BOTTOM_OF_FDO_STACK, DOE_DESIGNATED_FDO
AttachedDevice (Upper) 81ee0d28 \DRIVER\VERIFIER
Device queue is not busy.
kd> !devobj 81ee0d28
Device object (81ee0d28) is for:
\DRIVER\VERIFIER DriverObject 81e47340
Current Irp 00000000 RefCount 0 Type 00000022 Flags 00000004
DevExt 81ee0de0 DevObjExt 81ee0df0
ExtensionFlags (0xd0000000) DOE_BOTTOM_OF_FDO_STACK, DOE_DESIGNATED_FDO
Unknown flags 0x10000000
AttachedDevice (Upper) 81ee0738 \Driver\XenVbd
AttachedTo (Lower) 81e785a8 \Driver\XenPCI
Device queue is not busy.
kd> !devobj 81ee0738
Device object (81ee0738) is for:
XenVbd1 \Driver\XenVbd DriverObject 81ec4328
Current Irp 81d22408 RefCount 0 Type 00000004 Flags 00000050
Dacl e13634e4 DevExt 81ee07f0 DevObjExt 81ee0cd8
ExtensionFlags (0xe0000000) DOE_RAW_FDO, DOE_BOTTOM_OF_FDO_STACK,
DOE_DESIGNATED_FDO
AttachedDevice (Upper) 81ee0610 \DRIVER\VERIFIER
AttachedTo (Lower) 81ee0d28 \DRIVER\VERIFIER
Device queue is busy – Queue empty.
So there’s a current IRP…
kd> !irp 81d22408
Irp is active with 5 stacks 1 is current (= 0x81d22478)
No Mdl: No System Buffer: Thread 00000000: Irp stack trace. Pending
has been returned
cmd flg cl Device File Completion-Context
[f, 0] 0 e1 81fb4458 00000000 f84f48f2-81d78dc0 Success Error
Cancel pending
\Driver\XenVbd CLASSPNP!ClasspPowerUpCompletion
Args: 81d78de4 00000000 00000000 00000000
[16, 2] 0 e1 81d78ab8 00000000 f872776e-00000000 Success Error
Cancel pending
\Driver\Disk PartMgr!PmPowerCompletion
Args: 00000003 00000001 00000001 00000003
[16, 2] 0 e1 81e38938 00000000 80522322-badc780a Success Error
Cancel pending
\Driver\PartMgr nt!PopCompleteRequestIrp
Args: 00000003 00000001 00000001 00000003
[0, 0] 0 0 81e38938 00000000 00000000-00000000
\Driver\PartMgr
Args: 81fb4458 00000002 00000001 00000000
[0, 0] 0 0 00000000 00000000 00000000-00000000
Args: 80558f60 80558f60 81d22408 00000000
So there’s an outstanding power request, I think, but I’m a bit lost
with what the above is telling me. What does “Success Error Cancel
pending” mean? I type “power” into the debugger help index and it
doesn’t have any hits.
XenVbd is my scsiport driver. XenPCI is the bus driver for my scsiport
(and other) devices. XenPCI is a KMDF driver and I see the D0Entry get
called as expected.
Thanks
James