Re: PCI interrupt response time

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance

From: Gary G. Little (gary.g.little.nospam_at_seagate.com)
Date: 07/23/04


Date: Fri, 23 Jul 2004 12:40:52 GMT


<sigh> yes your are right. You can have many DPC queues, but only one
instance in a given queue.

-- 
Gary G. Little
Seagate Technologies, LLC
"Alexander Grigoriev" <alegr@earthlink.net> wrote in message
news:%23qO30fAcEHA.4064@TK2MSFTNGP09.phx.gbl...
> You should say it in different words: a given DPC can only be inserted
once
> in the queue. If it's already queued, the call is ignored.
>
> You can have as many different DPC in the queue as you want.
>
> "Gary G. Little" <gary.g.little.nospam@seagate.com> wrote in message
> news:rQOLc.16864$g37.12767@newssvr24.news.prodigy.com...
> > Consider the possibility that you are not loosing the interrupt, but
that
> > you are throwing it away. With the interrupts occurring so close
together
> it
> > is possible that you queue a DPC and before the DPC is run the next
> > interrupt occurs and you attempt to insert it on the DPC queue. However,
> the
> > second insertion on the DPC queue goes directly to the bit bucket,
because
> > only one item can be on the DPC queue at a time. You can resolve that by
> > maintaining your own queue containing volatile interrupt data. When your
> DPC
> > runs, you process your own queue till done.
> >
> > -- 
> > Gary G. Little
> > Seagate Technologies, LLC
> >
> > "Fenster" <fenster@croctec.co.uk> wrote in message
> > news:$dZWr6Bt52$AFwEJ@FensterPC.croctec.co.uk...
> > >
> > > Thanks for the help Slobodan.
> > >
> > > The problem I have is trying to interface to a PCI board that issues a
> > > pair of interrupts every 20ms.  Unfortunately I'm not sure, at this
> > > time, just how close together the two interrupts occur but I do know
> > > that I'm not seeing any/many of the second of the interrupts.
> > >
> > > One interrupt requires a 2k memory copy, the other a 0.5k copy.  Both
> > > then have the data processed in a DPC.  I've tried moving the memory
> > > copies into the DPC as well as the data processing but that hasn't
made
> > > any difference, I'm still missing all/most of the second interrupts.
> > >
> > > This leads me to a secondary question: can I rely on scheduled DPCs
> > > being processed/run in the order they were issued?
> > >
> > > Cheers.
> > >
> > >
> > > In message <u3NkmD4bEHA.2504@TK2MSFTNGP12.phx.gbl>, "Slobodan Brcin
> > > (eMVP)" <sbrcin@ptt.yu> writes
> > > >Hi Fenster,
> > > >
> > > >Yes we are talking about microseconds. But some bad behaving driver
> > > >could monopolize processor at higher priority that your
> > > >interrupt request and this is why you can't tell for certain that on
> > > >any Windows 2000/XP you will have same behavior.
> > > >
> > > >If you find driver that does it work at DIRQL instead in
DPC/workthread
> > > >then you should get rid of that bad driver.
> > > >
> > > >Best regards,
> > > >Slobodan
> > > >
> > > >"Fenster" <fenster@croctec.co.uk> wrote in message
> > > >news:BwyJQoAATL$AFwQ8@FensterPC.croctec.co.uk...
> > > >>
> > > >> Does anyone what kind of response times I might expect with Windows
> > 2000
> > > >> (within a device driver's ISR)?  Or the minimum time between pairs
of
> > > >> interrupts that I might expect to see?  I appreciate that Windows
is
> > > >> non-deterministic in this respect but are we talking about a few
> > > >> microseconds or is it closer to milliseconds or, God forbid, worse?
> > > >>
> > > >> If it makes any difference it's a 1GHz PC.
> > > >>
> > > >> Thanks for any comments/help.
> > > >>
> > > >> --
> > > >> Fenster
> > > >
> > > >
> > >
> > > -- 
> > > Fenster
> >
> >
>
>


Relevant Pages

  • Re: Queue DPC for ISR
    ... In the DPC, you handle all information that you can get from the board. ... By doing that ("disable the device interrupts in the ISR") it is possible ... Is there a way to queue those adicional interrupts? ... ISR, queue the DPC, then enable the device interrupts back in DPC. ...
    (microsoft.public.development.device.drivers)
  • Re: Queue DPC for ISR
    ... The right way to handle interrupts is disable the device interrupts in the ... ISR, queue the DPC, then enable the device interrupts back in DPC. ...
    (microsoft.public.development.device.drivers)
  • Re: PCI interrupt response time
    ... You can have as many different DPC in the queue as you want. ... > interrupt occurs and you attempt to insert it on the DPC queue. ... > second insertion on the DPC queue goes directly to the bit bucket, ...
    (microsoft.public.win32.programmer.kernel)
  • Re: PCI interrupt response time
    ... >together it is possible that you queue a DPC and before the DPC is run ... >the next interrupt occurs and you attempt to insert it on the DPC ... separate DPCs and not do any of the copying in the ISR (as Slobodan ...
    (microsoft.public.win32.programmer.kernel)
  • Re: Interrupt Synchronization - WDF driver
    ... A DPC queue can only have one instance of a DPC. ... u should acquire the spin lock of interrupt to prevent both the ... I am getting interrupt synchronization problems for my PCI device WDF ...
    (microsoft.public.development.device.drivers)