linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* plat-orion gpio regression for mixed level and edge sensitive IRQs
@ 2011-07-19 19:32 Joey Oravec
  2011-07-20 23:45 ` Simon Guinot
  0 siblings, 1 reply; 15+ messages in thread
From: Joey Oravec @ 2011-07-19 19:32 UTC (permalink / raw)
  To: linux-arm-kernel

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2013-03-11 21:08 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-19 19:32 plat-orion gpio regression for mixed level and edge sensitive IRQs Joey Oravec
2011-07-20 23:45 ` 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

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