[NTDev] Chasing white rabbits down PnP holes ...

I have enabled Verifier on my drivers during development. I have enabled all
of the tests since obviously I am in debug. During the course of a test run
I receive a “Insufficient quota” status (1453) from the driver.

I have set break points at all the spots in the driver that would return an
error status, but none of them trigger. What does trigger is a breakpoint in
the application that tests immediate status from a WriteFileEx. This status
would normally indicate an operation pending return, but sometimes it gets
an ERROR_WORKING_SET_QUOTA. That breakpoint, plus the status returned, plus
the fact that my driver is not rejecting the packet with an error, indicates
to me that the IoManager is rejecting it.

The test is a loop that transfers buffers, concurrently, 10,000 times. The
buffer size is then doubled and another 10,000 iteration loop begun. The
beginning buffer size is 1024, and the ending buffer size is 2Meg. 4
concurrent transfers are always active. When one transfer ends another is
begun, so the device is always transferring at least 4 buffers. Normally the
test will not fail until the buffer size is > 256K, but I have seen it fail
while transferring the 1024 size buffer.

When I allocate the DMA adapter, I allocated16K map registers, for a maximum
transfer size of 64M. However our adapter can handle only a maximum of 1024
elements in a scatter/gather list. There should be PLENTY of map registers
to satisfy at least 4 concurrent 2 meg requests.

Is this:

  1. Expected behavior. This is a soft failure, best handled by retrying
    the transfer in the application.
  2. Unexpected behavior. Working set too small? Map registers? PTEs?

Gary


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com