linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
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

             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).