From: joravec@drewtech.com (Joey Oravec)
To: linux-arm-kernel@lists.infradead.org
Subject: plat-orion gpio regression for mixed level and edge sensitive IRQs
Date: Tue, 19 Jul 2011 15:32:21 -0400 [thread overview]
Message-ID: <4E25DBC5.9010308@drewtech.com> (raw)
Orion maintainers,
I've found a problem on plat-orion when requesting IRQs on GPIO lines in
the linux-3.0rc. This was introduced with the change to generic IRQ chip.
Processors in this family have separate mask registers for level and
edge sensitive interrupts, but generic IRQ chip functions like
irq_gc_mask_set_bit() are designed for chips with a single mask
register. Test with the following sequence:
1. Register a level sensitive interrupt on pinA
2. Register an edge sensitive interrupt on pinB
During #2, the mask_cache (with pinA unmasked) gets written to the edge
sensitive mask register. At the end of this call pinA is unmasked for
edge sensitive interrupts. Now you can get into a state where an edge
interrupt is asserted for pinA, but that edge interrupt never gets
ack'ed since pinA is registered to handle level IRQs.
The older version of arch/arm/plat-orion/gpio.c does not have the
problem because it treats the registers separately and doesn't use a
cache. I've only tested this on MV78200 but any processor that uses
plat-orion with separate registers will experience this problem.
-joey
next reply other threads:[~2011-07-19 19:32 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-19 19:32 Joey Oravec [this message]
2011-07-20 23:45 ` plat-orion gpio regression for mixed level and edge sensitive IRQs Simon Guinot
2011-07-22 0:49 ` [PATCH] genirq: move mask_cache into struct irq_chip_type Simon Guinot
2011-07-26 14:11 ` Simon Guinot
2011-07-26 14:35 ` saeed bishara
2011-07-26 15:39 ` Simon Guinot
2011-07-27 8:45 ` saeed bishara
2013-03-04 14:28 ` Gerlando Falauto
2013-03-04 15:44 ` Simon Guinot
2013-03-04 17:20 ` Gerlando Falauto
2013-03-05 10:15 ` Thomas Gleixner
2013-03-06 13:29 ` Simon Guinot
2013-03-06 15:19 ` Thomas Gleixner
2013-03-11 15:40 ` Simon Guinot
2013-03-11 21:08 ` Thomas Gleixner
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=4E25DBC5.9010308@drewtech.com \
--to=joravec@drewtech.com \
--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;
as well as URLs for NNTP newsgroup(s).