Avoiding DPC Watchdog timeout problems in StorPort Miniports
This article helps you resolve the DPC Watchdog timeout problems in StorPort Miniports.
Original product version: Windows DPC Watchdog
Original KB number: 2569413
The system stops responding; for example, the keyboard and mouse don't work. If a kernel debugger is attached to the system, the debugger may show an assertion.
StorPort.sys handles I/O completions in a routine that runs at
DISPATCH_LEVEL and that serially calls the I/O completion routines of all IRPs that have completed. If I/O completion routines singly or together take too much time, the keyboard and/or mouse may stop responding. It is also possible that the Windows DPC Watchdog timer routine will decide that the StorPort routine has taken excessive time to finish.
A kernel driver in the storage stack can reduce the problem's likelihood by efficient coding of the driver's I/O completion routine. If it is still not possible to do all necessary processing in the completion routine in enough time, the routine can create a work element for the I/O work, queue up the element to a work queue and return
STATUS_MORE_PROCESSING_REQUIRED; a worker thread of the driver should then find the work element, do the work and do
IoCallerDriver for the IRP to ensure the IRP's further I/O processing.
For more information about handling IRPs, see Different ways of handling IRPs - Cheat sheet - (part 1 of 2)
In a kernel dump or in a live kernel debugging session, storport!RaidUnitCompleteRequest may appear in the execution stack running on a CPU.