Re: PCI interrupt response time

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

From: Alexander Grigoriev (alegr_at_earthlink.net)
Date: 07/23/04


Date: Fri, 23 Jul 2004 06:43:50 -0700

Because of PCI interrupt nature (level-triggered), if they go very close
(like your interrupt pair), your ISR will only be entered once. You should
not assume you get one ISR call on each event in your device. Every time
your ISR enters, you should check and clear all possible interrupt events in
your hardware.

"Fenster" <fenster@croctec.co.uk> wrote in message
news:ahNfknBBbKABFw$g@FensterPC.croctec.co.uk...
> In message <rQOLc.16864$g37.12767@newssvr24.news.prodigy.com>, Gary G.
> Little <gary.g.little.nospam@seagate.com> writes
> >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.
> >
> That's interesting about DPC queue but I'm not convinced it's the whole
> story. I increment a counter in the ISR that can be queried from user
> mode and it was indicating 50Hz rather than 100Hz interrupts.
>
> Maybe I need to split the processing of my two blocks of memory into
> separate DPCs and not do any of the copying in the ISR (as Slobodan
> suggested elsewhere in the thread).
>
> Thanks.
>
> --
> Fenster



Relevant Pages

  • Re: Interrupts are not coming sometime in NIC miniport
    ... An ISR should do only what is absolutely necessary, ... This is usually done by reading some interrupt register on the ... The DPC then does all the real work. ... Fill up blob with data from the NICs data buffers. ...
    (microsoft.public.development.device.drivers)
  • Re: Interrupts are not coming sometime in NIC miniport
    ... Is this HandleInterrupt routine your ISR or your DPC? ... After this the ISR should return because it has nothing else to do. ... Is this interrupt for me? ...
    (microsoft.public.development.device.drivers)
  • Re: writing ISR for UART
    ... i add "case" in side ISR? ... most compilers have an _interrupt_ keyword or similar ... so if the interrupt handler adds a character to the queue while ... c)The interrupt runs and overwrites the character that was to be retrieved. ...
    (comp.arch.embedded)
  • Re: Shared Data Problem
    ... In that case the ISR also needs to set a flag ... This works of course if the background task ... If you must ensure no data is ever lost, the queue is necessary. ... It depends on the timing of the interrupt. ...
    (comp.arch.embedded)
  • Re: Access serial port from WDM driver ?
    ... you would have to queue a DPC and do any IRP operations there. ... touch your hw in your ISR and queue DPCs. ... Please do not send e-mail directly to this alias. ...
    (microsoft.public.development.device.drivers)