linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: eric lescouet <eric.lescouet@Jaluna.COM>
To: Kent Borg <kentborg@borg.org>
Cc: "linuxppc-embedded@lists.linuxppc.org"
	<linuxppc-embedded@lists.linuxppc.org>
Subject: Re: Why ack interrupt before calling handler?
Date: Wed, 11 Jun 2003 14:24:23 +0200	[thread overview]
Message-ID: <3EE71F77.80200@Jaluna.COM> (raw)
In-Reply-To: 1055327622.26152.70.camel@spawn


Kent,

The acq_irq() routine called at the beginning of ppc_irq_dispatch_handler() is
mapped to the associated routine of the PIC driver that handles the irq.
Typically such routine would mask the interrupt source at PIC level, than
acknowledge the PIC in some way, if required (any kind of EOI).
This would prevent a level triggered interrupt to be raised again when enabling
interrupts at processor level, until the called handler clear the interrupt
condition on the device.
The, the interrupt source unmasked after processing by the handler.

Any way, note that these routines called from irq.c are PIC driver specific,
thus allowing such drivers to implement different policies depending on the
underlaying hardware capabilities:
- edge vs level triggered interrupts,
- relative priority schemes,
- "in service" interrupt management internal capability, or required explicit
masking (of currently in service interrupt).
... etc

Regards,

	Eric Lescouet.

Kenneth Johansson wrote:
> On Fri, 2003-06-06 at 20:29, Kent Borg wrote:
>
>>I am confused by something in ppc_irq_dispatch_handler().  It looks to
>>me that the interrupt is ack-ed before the handler is called.  Maybe I
>>am misunderstanding, but doesn't the ack only reset the interrupt
>>controller?  If so, the interrupting hardware could still be
>>presenting a level-triggered interrupt.  Wouldn't it make more sense
>>to let the interrupt routine get service the hardware first, then
>>reset the interrupt controller?
>>
>
>
> I don't know what code you are looking at but generally you want to
> first ack to avoid the race condition that would otherwise be present if
> you first run your interrupt routine then ack. How would you know that
> it was in fact not a new interrupt condition that you have not taken
> care of you just removed.
>
> ps. and never ever use edge triggered interrupts


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

  parent reply	other threads:[~2003-06-11 12:24 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-06 18:29 Why ack interrupt before calling handler? Kent Borg
2003-06-11 10:33 ` Kenneth Johansson
2003-06-11 11:28   ` Wolfgang Denk
2003-06-11 12:24   ` eric lescouet [this message]
2003-06-11 12:51     ` Kent Borg
2003-06-11 12:39   ` Kent Borg
2003-06-11 12:58     ` Kenneth Johansson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3EE71F77.80200@Jaluna.COM \
    --to=eric.lescouet@jaluna.com \
    --cc=kentborg@borg.org \
    --cc=linuxppc-embedded@lists.linuxppc.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).