Driver verfier fails on Win2k3 build 3790 Service Pack 1.1421

Hi All ,

I am running HCT 12.1 RC1. The driver verifier is giving us a
blue screen. The message that I get in the debugger is

======================= Debugger
OUTPUT=================================================

* * * * * * * * HAL Verifier Detected Violation * * * * * * * *

* *

* * VF: Driver did not flush adapter buffers – bytes mapped: 10000 (0 max)

* *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

*** Verifier assertion failed ***

(B)reak, (I)gnore, (W)arn only, (R)emove assert? B

Break instruction exception - code 80000003 (first chance)

nt!DbgBreakPoint:

fffff800`0102e230 cc int 3

0: kd> g

*** Verifier assertion failed ***

(B)reak, (I)gnore, (W)arn only, (R)emove assert? I

I

* * * * * * * * HAL Verifier Detected Violation * * * * * * * *

* *

* * VF: Driver did not flush adapter buffers – bytes mapped: 20000 (0 max)

* *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

*** Verifier assertion failed ***

(B)reak, (I)gnore, (W)arn only, (R)emove assert? R

======================= Debugger
OUTPUT=================================================

After this I “removed” this assertion and the test passed successfully.

I checked that this happens during hibernation and I also checked that I am
flushing all the caches.

Please advise me so that I can debug it in correct direction.

Thanks,

Ajitabh

Saxena, Ajitabh Prakash wrote:

* * * * * * * * HAL Verifier Detected Violation * * * * * * * *

* * VF: Driver did not flush adapter buffers – bytes mapped: 10000 (0 max)

Please advise me so that I can debug it in correct direction.

Sounds to me like you’re not calling
DmaAdapter->DmaOperations->FlushAdapterBuffers(…) after you’ve
completed your DMA transfer.

You don’t say which DMA model you’re using. If you’re using classic
model (that is, calling ->MapTransfer) (a) you should consider changing
it, and (b) you’ll need to call ->FlushAdapterBuffers after your DMA
operation completes. That’d be my best guess as to what’s going on.

If you’re using the NEW DMA model (calling ->GetScatterGatherList, which
I highly recommend) then the ONLY thing I can think of is that you’re
not calling ->PutScatterGatherList. But I think you’d have bigger
troubles than a small error in Verifier if this were so.

Is that enough help? Or can you provide us more details??

Peter
OSR