One issue I do know you will have to address if you decide to continue down
the WDM path using the ISA interface, is that you will have to define a
LOGCONFIG section in your INF file and assign your resources there.
Hmmm one other point I need to query, concerning “virtual SCSI miniport”.
Are you attempting to overlay this miniport ontop of another driver that
basically owns the hardware? If so … I can uncatagorically say that will
not work, unless you can live with a throughput of 10 msecs for every IO.
SCSIPORT owns the ISA and the DPC. That gives your virtual miniport two ways
to get an IO request into your DPC … either an ISR handled by SCSIPORT, or
a timer request, with a quantum of 10 msecs.
I think most virtual SCSI miniports in the last few years have gone the
iSCSI route, which you might explore if this is what you are trying to do.
My god, but how ghosts do creep back and haunt you at times … 
–
The personal opinion of
Gary G. Little
“Gary G. Little” wrote in message
news:xxxxx@ntdev…
> Xulu,
>
> I appended your post to my work address at the bottom …
>
> Mostly it seems like we have at least two threads by independent posters
> working much the same problem.
>
> What did you set PnpInterface to in the registry? Check
> HKLM..\Services<yourdriver>\Parameters\PnpInterface? Alhough there are
> several settings possible, the ONLY one that I know of that works is PCI
> or 5. You should also set hwInitData.AdapterInterfaceType to the PCI value
> as well. There was an exchange with Mark Roddy, in a thread a few years
> ago discussing what interfaces could be used, and the final result was
> that though others are enumerated, only PCI works. I’ve seen nothing in
> the SCSI/STORPORT API to change that and have seen at least one other
> thread on this forum reporting the same thing; only they were using
> Internal. Mostly it worked … except they coud not get StartIo to receive
> SRBs.
>
> ISA MIGHT work with due diligence, but you want to use the proper sizing
> for your HW_ADAPTER_(??) structure, and be sure you do not use the WDM
> form of that structure, Essentialy, it will be a legacy SCSIPORT and will
> kill most of the systems power managment.
>
> Someone may call me on this, if so I welcome new information about
> PnpInterface, but to my knowledge, using anything but PCI is pretty well
> undocumetned, simply does not work, or will work half-assed.
>
> –
> The personal opinion of
> Gary G. Little
>
>
>
> wrote in message news:xxxxx@ntdev…
>> We also have tried Internal interface, it did not solve the problem. We
>> used WinDBG to debug the driver. Up to this point, we only get a message
>> with NOT_SUPPORT. We tried checked build. It doesn’t offer much help. We
>> can trace to SCSIPORTInitPnPAdapter function. In this function, after
>> SpCallHwFindAdapter is called back, a message in ErrorLog is generated.
>> The message basically states that in IRP_MJ_Create function the driver
>> can not be supported.
>>
>
> Dear Gary:
>
> Sorry to send you an email directly. I found your reply to my earlier
> post.
>
> Hopefully, you can help me to get out of this problem. We were in a hurry
>
> since the test is on a customer’s server.
>
> We did run the debugger (WinDBG). All the message we get is NOT SUPPORT
> from
>
> SCSIPortInitPnPAdapter. Up to this point, we don’t have a way to move
>
> further.
>
> Furthermore, do you have some idea about how to set miniport to use system
>
> DMA?
>
> Thank you very much,
>
> – xulu
>
> Here is the post I sent earlier.
>
> We have a miniport driver, which has been working under 2k/xp/2k3. The
>
> problem
>
> occurs when we put it on some servers with SAS disks.
>
> There are two servers:
>
> S1: IBM server with Xeon CPU and 1GB RAM equipped;
>
> S2: AMD server with AMD 64 CPU and 4GB RAM equipped.
>
> Windows we have installed is Windows 2003(32bits).
>
> When we load our driver on both servers, the driver is unloaded
> immediately
>
> after findadapter is finished.
>
> On server S1, we modified AlignmentMask in ConfigurationInfo structure to
>
> 0x1
>
> (0x3 was the original value), the problem on S1 is gone.
>
> On server S2, we took off 2GB RAM from the server, the problem is gone,
> and
>
> the
>
> driver runs very happily. If we add 2GB RAM back (now 4GB RAM in total),
> the
>
> problem comes back.
>
> We also tested the driver on servers without SAS disks running 2k3, there
>
> was no
>
> problem at all.
>
> We also run the driver on server S2 without using SAS disks running XP,
>
> there
>
> was no problem at all.
>
> From what we have collected, could you get some idea about the source of
> the
>
> problem?
>
> Here is the information about HWInitialization and ConfigurationInfo:
>
> HWInit:
>
> hwInitData.HwDmaStarted = dma;
>
> hwInitData.HwInterrupt = intrpt;
>
> // Internal interface
>
> hwInitData.AdapterInterfaceType = Isa;
>
> // auto request sense
>
> hwInitData.AutoRequestSense = TRUE;
>
> // device extension
>
> hwInitData.DeviceExtensionSize = sizeof(MiniportExt);
>
> // adapter state
>
> hwInitData.HwAdapterState = MiniportAdapterState;
>
> // adapter control
>
> hwInitData.HwAdapterControl = MiniportAdapterControl;
>
> // find adapter
>
> hwInitData.HwFindAdapter = MiniportFindAdapter;
>
> // sizeof this struct
>
> hwInitData.HwInitializationDataSize =
>
> sizeof(HW_INITIALIZATION_DATA);
>
> // initialize
>
> hwInitData.HwInitialize = MiniportInitialize;
>
> // reset bus
>
> hwInitData.HwResetBus = MiniportResetBus;
>
> // start io
>
> hwInitData.HwStartIo = MiniportStartIo;
>
> // hwInitData.HwInterrupt = intr;
>
> // need virtual address
>
> hwInitData.MapBuffers = TRUE;
>
> hwInitData.MultipleRequestPerLu = TRUE;
>
> hwInitData.TaggedQueuing = TRUE;
>
>
> hwInitData.NeedPhysicalAddresses = FALSE;
>
> hwInitData.NumberOfAccessRanges = 1;
>
> hwInitData.ReceiveEvent = FALSE;
>
> hwInitData.SpecificLuExtensionSize = 0;
>
> hwInitData.SrbExtensionSize = sizeof(St_SRB_EXT);
>
>
>
> ConfiguationInfo:
>
> pConfigInfo->AlignmentMask = 0x00000003;
>
> pConfigInfo->AutoRequestSense = TRUE;
>
> pConfigInfo->BufferAccessScsiPortControlled = FALSE;
>
> pConfigInfo->BusInterruptLevel = 0;
>
> pConfigInfo->BusInterruptVector = 0;
>
> pConfigInfo->Dma32BitAddresses = TRUE;
>
> pConfigInfo->Master = FALSE;
>
> pConfigInfo->CachesData = TRUE;
>
> pConfigInfo->NumberOfBuses = 1;
>
> pConfigInfo->MaximumNumberOfTargets = 4;
>
> pConfigInfo->MaximumNumberOfLogicalUnits = 1;
>
> pConfigInfo->MaximumTransferLength = 0x100000;
>
> pConfigInfo->MultipleRequestPerLu = TRUE;
>
> pConfigInfo->NumberOfPhysicalBreaks = SP_UNINITIALIZED_VALUE;
>
> pConfigInfo->ScatterGather = TRUE;
>
> pConfigInfo->TaggedQueuing = TRUE;
>
> We also have tried Internal interface, it did not solve the problem. We
> used
>
> WinDBG to debug the driver. Up to this point, we only get a message with
>
> NOT_SUPPORT. We tried checked build. It doesn’t offer much help. We can
>
> trace to
>
> SCSIPORTInitPnPAdapter function. In this function, after
> SpCallHwFindAdapter
>
> is
>
> called back, a message in ErrorLog is generated. The message basically
>
> states
>
> that in IRP_MJ_Create function the driver can not be supported.
>
>
>
>
>
>
>