Hi everyone,
Had a couple of questions about SCSI minorts
1)Is the SRB extension for every SRB sent to the
miniport contiguous?
2) Is there a way to get a peridoc timer interrupt
with microsecond resolution? The HwScsiTimer is not a
good solution cause its resolution is 10ms, but is
there another way to get a peridoic interrupt, say at
every 750 microseconds, at DIRQL of the miniport?
If not in the miniport, is it possible even otherwise,
say in a bus driver?
I would really appreciate anyone anyswering these
questions.
Thanks a lot
Kunal
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/
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
Hi Kunal,
If you’ll avoid using properly initialized HwScsiTimer and
ScsiPortNotification() for requesting a timer your routine will not be
called in SCSIPORT context.
Are you sure you want this?
Regards,
Anton
On 01/18/02, “Kunal K ” wrote:
> Hi everyone,
> Had a couple of questions about SCSI minorts
> 1)Is the SRB extension for every SRB sent to the
> miniport contiguous?
> 2) Is there a way to get a peridoc timer interrupt
> with microsecond resolution? The HwScsiTimer is not a
> good solution cause its resolution is 10ms, but is
> there another way to get a peridoic interrupt, say at
> every 750 microseconds, at DIRQL of the miniport?
> If not in the miniport, is it possible even otherwise,
> say in a bus driver?
>
> I would really appreciate anyone anyswering these
> questions.
>
> Thanks a lot
> Kunal
>
>
> __________________________________________________
> Do You Yahoo!?
> Send FREE video emails in Yahoo! Mail!
> http://promo.yahoo.com/videomail/
>
> —
> 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
—
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
NtSetTimerResolution()? 1ms…
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
> Had a couple of questions about SCSI minorts
1)Is the SRB extension for every SRB sent to the
miniport contiguous?
Do you mean “DMAble”?
If this - then yes.
DMA-enabled SCSI miniports have the following memory DMAble (suitable for ScsiPortGetPhysicalAddress):
- Srb->DataBuffer
- Srb->SenseInfoBuffer
- miniport’s device extension
- SRB extension.
That’s all. Note that LU extensions are not DMAble - not suitable for ScsiPortGetPhysicalAddress.
Internally, ScsiPortGetPhysicalAddress has 2 branches - one for Srb->DataBuffer, which uses the pre-built SG list for the MDL - yes,
HwStartIo is called after passing the MDL through IoAllocateAdapterChannel and IoMapTransfer, the SG list is prebuilt before
HwStartIo.
For other addresses, ScsiPortGetPhysicalAddress uses the HAL’s common buffer. All SRB extensions and miniport extension are
allocated from HAL’s common buffer with the known base address, ScsiPortGetPhysicalAddress recalculates using both physical and
virtual addresses of this common buffer.
- Is there a way to get a peridoc timer interrupt
with microsecond resolution?
No, even WDM itself does not allow it. There is some hackery to raise the timer IRQ resolution to 1ms, but usually, it is 1/100 or
1/64 part of second, depending on HAL and platform.
Max
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
Max,
DMA’ble means its locked. So is it non Contiguous?
If I have to DMA 2 pages from the extension, I will
have to use a SG list, I cannot just pass a base
address with a length of 2 pages, is that correct?
Kunal
— “Maxim S. Shatskih”
wrote:
> > Had a couple of questions about SCSI minorts
> > 1)Is the SRB extension for every SRB sent to the
> > miniport contiguous?
>
> Do you mean “DMAble”?
> If this - then yes.
> DMA-enabled SCSI miniports have the following memory
> DMAble (suitable for ScsiPortGetPhysicalAddress):
> - Srb->DataBuffer
> - Srb->SenseInfoBuffer
> - miniport’s device extension
> - SRB extension.
>
> That’s all. Note that LU extensions are not DMAble -
> not suitable for ScsiPortGetPhysicalAddress.
>
> Internally, ScsiPortGetPhysicalAddress has 2
> branches - one for Srb->DataBuffer, which uses the
> pre-built SG list for the MDL - yes,
> HwStartIo is called after passing the MDL through
> IoAllocateAdapterChannel and IoMapTransfer, the SG
> list is prebuilt before
> HwStartIo.
> For other addresses, ScsiPortGetPhysicalAddress uses
> the HAL’s common buffer. All SRB extensions and
> miniport extension are
> allocated from HAL’s common buffer with the known
> base address, ScsiPortGetPhysicalAddress
> recalculates using both physical and
> virtual addresses of this common buffer.
>
> > 2) Is there a way to get a peridoc timer interrupt
> > with microsecond resolution?
>
> No, even WDM itself does not allow it. There is some
> hackery to raise the timer IRQ resolution to 1ms,
> but usually, it is 1/100 or
> 1/64 part of second, depending on HAL and platform.
>
> Max
>
>
>
> —
> You are currently subscribed to ntdev as:
> xxxxx@yahoo.com
> To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/
—
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
Use ScsiPortGetPhysicalAddress, it will return you the length of the contiguous chunk, which can be lesser than requested.
In this case, repeat this call. Think of it as of IoMapTransfer.
Max
----- Original Message -----
From: “Kunal K”
To: “NT Developers Interest List”
Sent: Sunday, January 20, 2002 9:49 PM
Subject: [ntdev] Re: SRB extension contiguous?
> Max,
> DMA’ble means its locked. So is it non Contiguous?
> If I have to DMA 2 pages from the extension, I will
> have to use a SG list, I cannot just pass a base
> address with a length of 2 pages, is that correct?
>
> Kunal
>
>
>
>
>
> — “Maxim S. Shatskih”
> wrote:
> > > Had a couple of questions about SCSI minorts
> > > 1)Is the SRB extension for every SRB sent to the
> > > miniport contiguous?
> >
> > Do you mean “DMAble”?
> > If this - then yes.
> > DMA-enabled SCSI miniports have the following memory
> > DMAble (suitable for ScsiPortGetPhysicalAddress):
> > - Srb->DataBuffer
> > - Srb->SenseInfoBuffer
> > - miniport’s device extension
> > - SRB extension.
> >
> > That’s all. Note that LU extensions are not DMAble -
> > not suitable for ScsiPortGetPhysicalAddress.
> >
> > Internally, ScsiPortGetPhysicalAddress has 2
> > branches - one for Srb->DataBuffer, which uses the
> > pre-built SG list for the MDL - yes,
> > HwStartIo is called after passing the MDL through
> > IoAllocateAdapterChannel and IoMapTransfer, the SG
> > list is prebuilt before
> > HwStartIo.
> > For other addresses, ScsiPortGetPhysicalAddress uses
> > the HAL’s common buffer. All SRB extensions and
> > miniport extension are
> > allocated from HAL’s common buffer with the known
> > base address, ScsiPortGetPhysicalAddress
> > recalculates using both physical and
> > virtual addresses of this common buffer.
> >
> > > 2) Is there a way to get a peridoc timer interrupt
> > > with microsecond resolution?
> >
> > No, even WDM itself does not allow it. There is some
> > hackery to raise the timer IRQ resolution to 1ms,
> > but usually, it is 1/100 or
> > 1/64 part of second, depending on HAL and platform.
> >
> > Max
> >
> >
> >
> > —
> > You are currently subscribed to ntdev as:
> > xxxxx@yahoo.com
> > To unsubscribe send a blank email to
> leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
>
> __________________________________________________
> Do You Yahoo!?
> Send FREE video emails in Yahoo! Mail!
> http://promo.yahoo.com/videomail/
>
> —
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
—
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
Hi Anton,
I was just curious if there is a way to do it. As you
pointed out, I will not be able to use the timer since
it wont be called in SCSIPORT context.
Regards,
Kunal
— Anton Kolomyeytsev wrote:
> Hi Kunal,
>
> If you’ll avoid using properly initialized
> HwScsiTimer and
> ScsiPortNotification() for requesting a timer your
> routine will not be
> called in SCSIPORT context.
> Are you sure you want this?
>
> Regards,
> Anton
>
> On 01/18/02, “Kunal K ” wrote:
> > Hi everyone,
> > Had a couple of questions about SCSI minorts
> > 1)Is the SRB extension for every SRB sent to the
> > miniport contiguous?
> > 2) Is there a way to get a peridoc timer interrupt
> > with microsecond resolution? The HwScsiTimer is
> not a
> > good solution cause its resolution is 10ms, but is
> > there another way to get a peridoic interrupt, say
> at
> > every 750 microseconds, at DIRQL of the miniport?
> > If not in the miniport, is it possible even
> otherwise,
> > say in a bus driver?
> >
> > I would really appreciate anyone anyswering these
> > questions.
> >
> > Thanks a lot
> > Kunal
> >
> >
> >
> > Do You Yahoo!?
> > Send FREE video emails in Yahoo! Mail!
> > http://promo.yahoo.com/videomail/
> >
> > —
> > You are currently subscribed to ntdev as:
> xxxxx@yahoo.com
> > To unsubscribe send a blank email to
> leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
> —
> You are currently subscribed to ntdev as:
> xxxxx@yahoo.com
> To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/
—
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
As of what I read, this function doesnt seem to be
available to kernel mode drivers?
And wont this change the resolution of the system
timer?
Regards
Kunal
— Anton Kolomyeytsev wrote:
> NtSetTimerResolution()? 1ms…
>
> —
> You are currently subscribed to ntdev as:
> xxxxx@yahoo.com
> To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/
—
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