From: tglx@linutronix.de (Thomas Gleixner)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: gic: use handle_fasteoi_irq for SPIs
Date: Thu, 17 Feb 2011 12:21:32 +0100 (CET) [thread overview]
Message-ID: <alpine.LFD.2.00.1102171203280.2701@localhost6.localdomain6> (raw)
In-Reply-To: <20110217105611.GE24627@n2100.arm.linux.org.uk>
On Thu, 17 Feb 2011, Russell King - ARM Linux wrote:
> On Thu, Feb 17, 2011 at 11:43:38AM +0100, Thomas Gleixner wrote:
> > > There is a lot of difference between using a conventional 'flow' handler
> > > which does masking/unmasking of the parent interrupt and a properly
> > > written chained handler which avoids that masking.
> >
> > Depends on the underlying flow handler. fasteoi does not mask, but I
> > can see your point. If you have that oddball SA11xx thing, you are
> > forced to do that, but that is tied into SA11xx and confined.
>
> It isn't - what I highlight above is the correct way to deal with
> chained interrupts - which is to leave the parent interrupt enabled
> _unless_ there is a good reason not to.
>
> It also needs to be symetrical otherwise you unbalance the interrupt
> handling such that those interrupts which are downstream of the primary
> controller become less likely to be handled, and you end up with some
> interrupts being soo pessimistic its untrue. This commonly happens
> when people don't think and just throw loop after loop into their
> flow handlers.
>
> The last reason for this is to ensure that IRQ handling is *fast* and
> *efficient*. Using the standard handlers adds a hell of a lot of
> unnecessary overhead which just isn't required.
>
> Look, I put a lot of time and effort into giving ARM an interrupt handling
> subsystem which actually _works_ for the hardware that we commonly have,
> and I'm not having all that thrown out in the name of 'generalization'.
> If genirq can't cope with it, then ARM needs to avoid genirq.
>
> Chained flow handlers are here to stay on ARM.
I have no intention to remove them. If they are done correct they are
not a problem at all. And correct means: tied to the underlying
primary chip.
The shit hits the fan when a chained handler implementation is trying
to be agnostic about the actual underlying primary chip. That won't
ever work and is broken. The only way to make a demux handler agnostic
is to use a regular requested interrupt handler. That's all what I'm
saying.
You have to actually use your brain when implementing a chained
handler. Looking through a bunch of implementations I found stuff,
which is basically a poorly implemented flow handler. Worst example:
fsl_msi_cascade().
ARM ones are mostly sane, but e.g. nmk_gpio_irq_handler() is not
really one which fits your description. It's trying to deal with
different underlying primary chips obviously, which is wrong in the
first place.
Thanks,
tglx
next prev parent reply other threads:[~2011-02-17 11:21 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-14 15:26 [PATCH] ARM: gic: use handle_fasteoi_irq for SPIs Will Deacon
2011-02-16 11:29 ` Rabin Vincent
2011-02-16 13:09 ` Will Deacon
[not found] ` <-4413647205110644369@unknownmsgid>
2011-02-16 14:05 ` Rabin Vincent
2011-02-16 16:17 ` Will Deacon
[not found] ` <146267380211262372@unknownmsgid>
2011-02-16 17:35 ` Rabin Vincent
2011-02-16 19:20 ` Thomas Gleixner
2011-02-17 9:17 ` Russell King - ARM Linux
2011-02-17 9:38 ` Thomas Gleixner
2011-02-17 10:19 ` Russell King - ARM Linux
2011-02-17 10:43 ` Thomas Gleixner
2011-02-17 10:56 ` Russell King - ARM Linux
2011-02-17 11:21 ` Thomas Gleixner [this message]
2011-02-17 16:26 ` Will Deacon
2011-02-17 17:34 ` Thomas Gleixner
2011-02-17 23:38 ` Abhijeet Dharmapurikar
2011-02-18 11:29 ` Will Deacon
2011-02-18 11:42 ` Thomas Gleixner
2011-02-18 12:09 ` Will Deacon
[not found] ` <-8083923411736601789@unknownmsgid>
2011-02-18 18:30 ` Colin Cross
2011-02-18 18:36 ` Santosh Shilimkar
2011-02-18 18:57 ` Will Deacon
-- strict thread matches above, loose matches on Subject: below --
2011-02-10 12:29 Will Deacon
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=alpine.LFD.2.00.1102171203280.2701@localhost6.localdomain6 \
--to=tglx@linutronix.de \
--cc=linux-arm-kernel@lists.infradead.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