STORport hang while attempting to use MSI-X

Follow up on the PnP questions. The port driver must be handling them
because they never hit my StartIo function.

On Tue, Mar 22, 2011 at 12:34 PM, Robert Randall
wrote:
> Many thanks. ?I was able to turn on the debug output for the pci bus
> driver and for storport.
>
> I belive I have a correct stack trace now. ?I am still experiencing
> the same problem.
>
> I am going to instrument my PnP routines a bit more. ?The request for
> a minor of 18 is curious.
>
> I can’t find an IRP_MN_PNP of 0x18.
>
> The stack appears to be stuck waiting for a DPC as part of the
> PerfOpts initialization which
> appears to be occuring at passive given the function name.
>
> I have heard from other sources that the Flag
> STOR_PERF_INTERRUPT_MESSAGE_RANGES
> is MANDATORY for MSI-X messages to work properly.
>
> STORport is NOT setting this flag when the PerfOpts are queried.
>
> Can anyone confirm what I have heard?
>
> Thanks for your attention.
>
> Best regards,
> Robert Randall
>
> Debug output:
>
> fffff80002080490 cc ? ? ? ? ? ? ?int ? ? 3<br>&gt; kd&gt; .reload /f<br>&gt; Connected to Windows 7 7601 x64 target at (Tue Mar 22 11:25:28.456<br>&gt; 2011 (GMT-5)), ptr64 TRUE<br>&gt; Loading Kernel Symbols<br>&gt; ......................................***ERROR: Module load completed<br>&gt; but symbols could not be loaded for spldr.sys<br>&gt; ....<br>&gt; Loading User Symbols<br>&gt;<br>&gt; kd&gt; x nt!Kd_STOR*<br>&gt; fffff80002211214 nt!Kd_STORMINIPORT_Mask =
> fffff800022110d8 nt!Kd_STORPROP_Mask = <no type information><br>&gt; fffff80002211210 nt!Kd_STORPORT_Mask =
> fffff800022112d0 nt!Kd_STORVSP_Mask = <no type information><br>&gt; kd&gt; ed nt!Kd_STORPORT_Mask 0xffffffff<br>&gt; kd&gt; ed nt!Kd_STORMINIPORT_Mask 0xffffffff<br>&gt; kd&gt; g<br>&gt;<br>&gt; After this there is a bit of noise since the iSCSI initiator is installed...<br>&gt;<br>&gt; 2 FFFFFA8003CE4040 DriverEntry 62 Storport Driver - Built Mar 21 2011 16:27:22<br>&gt; 2 FFFFFA8003CE4040 DriverEntry 65 System has 0x1 NUMA nodes<br>&gt; 2 FFFFFA8003CE4040 DriverEntry 67 Driver running on NUMA node 0x0 NUMA<br>&gt; 2 FFFFFA8003CE4040 DriverEntry 70 Driver running on processor 0x2 in group 0x0<br>&gt; STOR: RaidPortInitialize: DriverObject=FFFFFA80044795F0,<br>&gt; RegistryPath=FFFFFA800447C000, HwInitData=FFFFF880027551D0,<br>&gt; HwContext=0000000000000000<br>&gt; STOR: AddDevice: DriverObject FFFFFA80044795F0, PhysicalDeviceObject<br>&gt; FFFFFA800479C9C0<br>&gt; STOR: DeviceObject FFFFFA800447C060, Irp FFFFFA8007B319A0 PnP, Minor 18<br>&gt; STOR: Adapter FFFFFA800447C1B0, Irp FFFFFA8007B319A0, Pnp 18<br>&gt; STOR: Adapter FFFFFA800447C1B0, Irp FFFFFA8007B319A0, Pnp 18 ret = c00000bb<br>&gt; STOR: DeviceObject FFFFFA800447C060, Irp FFFFFA8007B319A0 PnP, ret = c00000bb<br>&gt; STOR: DeviceObject FFFFFA800447C060, Irp FFFFFA8007B319A0 PnP, Minor d<br>&gt; STOR: Adapter FFFFFA800447C1B0, Irp FFFFFA8007B319A0, Pnp d<br>&gt; STOR: Adapter FFFFFA800447C1B0, Irp FFFFFA8007B319A0, Pnp d ret = 0<br>&gt; STOR: DeviceObject FFFFFA800447C060, Irp FFFFFA8007B319A0 PnP, ret = 00000000<br>&gt; STOR: DeviceObject FFFFFA800447C060, Irp FFFFFA8007B319A0 PnP, Minor 0<br>&gt; STOR: Adapter FFFFFA800447C1B0, Irp FFFFFA8007B319A0, Pnp 0<br>&gt; STOR: Adapter FFFFFA800447C1B0, Irp FFFFFA8007B319A0, Pnp StartDevice<br>&gt; 0 FFFFFA8003CE4040 FindAdapter 157 entry<br>&gt; 0 FFFFFA8003CE4040 FindAdapter 281 exit<br>&gt; 3 FFFFFA8003CE4040 Initialize 309 entry<br>&gt; 3 FFFFFA8003CE4040 Initialize 310 assuming no MSI support<br>&gt; 3 FFFFFA8003CE4040 Initialize 312 Checking for MSI support using<br>&gt; StorPortGetMSIInfo<br>&gt; STOR: StorPortExtendedFunction: Function code: 13<br>&gt; STOR: StorPortExtendedFunction: Function code: 13<br>&gt; STOR: StorPortExtendedFunction: Function code: 13<br>&gt; <repeats times for each msi-x message found which is correct><br>&gt; 3 FFFFFA8003CE4040 Initialize 327 found 256 MSI-X interrupts available<br>&gt; STOR: StorPortExtendedFunction: Function code: 14<br>&gt; Break instruction exception - code 80000003 (first chance)<br>&gt; Initialize+0x2bb:<br>&gt; fffff880053eaa1b cc ? ? ? ? ? ? ?int ? ? 3
> 3: kd> p
> Initialize+0x2bc:
> fffff880053eaa1c 488b442440 ? ? ?mov ? ? rax,qword ptr [rsp+40h]<br>&gt; 3: kd&gt; p<br>&gt; 3 FFFFFA8003CE4040 Initialize 380 PerfOpts flags available<br>&gt; ? ? ? ? STOR_PERF_DPC_REDIRECTION yes<br>&gt; ? ? ? ? STOR_PERF_CONCURRENT_CHANNELS yes<br>&gt; ? ? ? ? STOR_PERF_INTERRUPT_MESSAGE_RANGES no<br>&gt; ? ? ? ? STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO no<br>&gt; ? ? ? ? STOR_PERF_ADV_CONFIG_LOCALITY no<br>&gt; Initialize+0x3fb:<br>&gt; fffff880053eab5b 488b442440 ? ? ?mov ? ? rax,qword ptr [rsp+40h]
> 3: kd> p
> Initialize+0x488:
> fffff880053eabe8 ba28000000 ? ? ?mov ? ? edx,28h<br>&gt; 3: kd&gt; g<br>&gt; 3 FFFFFA8003CE4040 Initialize 413 requesting use of 3 MSI-X interrupts<br>&gt; STOR: StorPortExtendedFunction: Function code: 14<br>&gt; 3 FFFFFA8003CE4040 Initialize 454 StorPortInitializePerfOpts Flags<br>&gt; driver is USING<br>&gt; ? ? ? ? STOR_PERF_DPC_REDIRECTION yes<br>&gt; ? ? ? ? STOR_PERF_CONCURRENT_CHANNELS no<br>&gt; ? ? ? ? STOR_PERF_INTERRUPT_MESSAGE_RANGES no<br>&gt; ? ? ? ? STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO no<br>&gt; ? ? ? ? STOR_PERF_ADV_CONFIG_LOCALITY no<br>&gt; 3 FFFFFA8003CE4040 Initialize 455 Driver is using MSI-X MessageNumbers<br>&gt; 0 through 2<br>&gt; 3 FFFFFA8003CE4040 Initialize 456 StorPortInitializePerfOpts was successful<br>&gt; 3 FFFFFA8003CE4040 Initialize 468 setting up passive init<br>&gt; 3 FFFFFA8003CE4040 Initialize 475 exit<br>&gt; 3 FFFFFA8003CE4040 PassiveInitialize 502 entry<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1192 entry MessageID 0<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1246 exit<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1192 entry MessageID 0<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1246 exit<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1192 entry MessageID 0<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1246 exit<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1192 entry MessageID 0<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1246 exit<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1192 entry MessageID 0<br>&gt; 3 FFFFFA8003CE4040 PassiveInitialize 529 exit<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1246 exit<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1192 entry MessageID 0<br>&gt; 6 FFFFF88001FEE2C0 MsiInterrupt 1246 exit<br>&gt; nt!RtlpBreakWithStatusInstruction:<br>&gt; fffff80002085490 cc ? ? ? ? ? ? ?int ? ? 3
> 0: kd> .reload /f
> Connected to Windows 7 7601 x64 target at (Tue Mar 22 11:45:30.580
> 2011 (GMT-5)), ptr64 TRUE
> Loading Kernel Symbols
> …*** ERROR: Module load completed
> but symbols could not be loaded for spldr.sys
> …
> … ERROR: Module load completed but symbols could not be
> loaded for astgrp.sys
> …
WARNING: Unable to verify
> timestamp for ASTGRV.dll
> ERROR: Module load completed but symbols could not be loaded for ASTGRV.dll
> …
ERROR: Module load completed but symbols could not be
> loaded for peauth.sys
> .*** ERROR: Module load completed but symbols could not be loaded for secdrv.SYS
> …
> Loading User Symbols
>
> Loading unloaded module list
> …
> 14: kd> ~3
> 3: kd> kv
> Child-SP ? ? ? ? ?RetAddr ? ? ? ? ? : Args to Child
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : Call Site
> fffff88002755558 fffff8800344ad26 : 0000000000000001<br>&gt; 0000000000002000 fffffa800447c1b0 0000000000000000 :
> nt!KiDpcInterrupt+0x10 (TrapFrame @ fffff880027553f0)<br>&gt; fffff88002755580 fffff8800344a81f : fffffa800447c1b0
> fffffa800447c1b0 0000000000000000 0000000000000000 :<br>&gt; storport!RaidInitializePerfOptsPassive+0x3ca<br>&gt; fffff88002755600 fffff880034a71c5 : fffffa800447c1b0
> fffffa8003dcd940 fffff8a001bd2000 fffffa800447c1b0 :<br>&gt; storport!RaidAdapterStartMiniport+0x23f<br>&gt; fffff88002755670 fffff880034a6cf9 : fffffa800447c1b0
> fffffa8007b319a0 fffffa800447c1b0 0000000000000000 :<br>&gt; storport!RaidAdapterStartDeviceIrp+0x185<br>&gt; fffff880027556d0 fffff880034a8b5d : fffffa800447c1b0
> fffffa8007b319a0 fffffa8007b319a0 fffffa800447c060 :<br>&gt; storport!RaidAdapterPnpIrp+0x2fd<br>&gt; fffff88002755750 fffff8000244417e : fffffa800447c060
> fffffa8007b319a0 fffffa8007b319a0 fffffa800447c060 :<br>&gt; storport!RaDriverPnpIrp+0x139<br>&gt; fffff88002755790 fffff8000217ab2d : fffffa800479c9c0
> fffffa8007c580e0 fffff80002184250 0000000000000000 :<br>&gt; nt!PnpAsynchronousCall+0xce<br>&gt; fffff880027557d0 fffff800024534c6 : fffff80002289200
> fffffa800479b6e0 fffffa8007c580e0 fffffa800479b888 :<br>&gt; nt!PnpStartDevice+0x11d<br>&gt; fffff88002755890 fffff80002453764 : fffffa800479b6e0
> fffffa800479003e fffffa800479b6e0 0000000000000001 :<br>&gt; nt!PnpStartDeviceNode+0x156<br>&gt; fffff88002755920 fffff80002476e96 : fffffa800479b6e0
> fffffa800479b6e0 0000000000000000 0000000000000000 :<br>&gt; nt!PipProcessStartPhase1+0x74<br>&gt; fffff88002755950 fffff80002477287 : fffffa800479b6e0
> 0000000000000000 0000000000000001 fffff800022f8c38 :<br>&gt; nt!PipProcessDevNodeTree+0x296<br>&gt; fffff88002755bc0 fffff80002186b83 : 0000000100000003
> 0000000000000000 0000000000000001 0000000000000000 :<br>&gt; nt!PiRestartDevice+0xc7<br>&gt; fffff88002755c10 fffff80002097a21 : fffff80002186870
> fffff80002383f01 fffffa8003ce4000 fffffa8003ce4040 :<br>&gt; nt!PnpDeviceActionWorker+0x313<br>&gt; fffff88002755cb0 fffff8000232acce : 0000000000000000
> fffffa8003ce4040 0000000000000080 fffffa8003cd1040 :<br>&gt; nt!ExpWorkerThread+0x111<br>&gt; fffff88002755d40 fffff8000207efe6 : fffff880020a3180
> fffffa8003ce4040 fffff880020ae2c0 0000000000000000 :<br>&gt; nt!PspSystemThreadStartup+0x5a<br>&gt; fffff88002755d80 0000000000000000 : fffff88002756000
> fffff88002750000 fffff88002753210 00000000`00000000 :
> nt!KxStartSystemThread+0x167
>
>
> –
> Robert Randall | xxxxx@gmail.com
>


Robert Randall | xxxxx@gmail.com