linux/arch/arm
Matt Reimer e2f04e1894 [ARM] 3546/1: PATCH: subtle lost interrupts bug on i.MX
Patch from Matt Reimer

There is a subtle bug in the GPIO interrupt status register
handling in arch/arm/mach-imx/irq.c:imx_gpio_ack_irq(). The
documentation states that a 1 should be written to the relevant bit to
acknowledge a GPIO interrupt, but that is not what the code does.

The problem is that the |= writes back 1s for all the *other*
interrupts represented in the register, so interrupts could get lost.
For example, if interrupts are pending for GPIO B10 and B12, ISR_B
would have the value 0x00001400. Then when the interrupt code handles
GPIO B10, it eventually calls imx_gpio_ack_irq(IRQ_GPIOB(10)), which
effectively does this:

ISR_B |= 1 << 10;

with the result that (0x00001400 | 0x00000400) is written, clearing
the interrupt status bits for *both* GPIO B10 and B12.

The fix is to write 1s only for the interrupts we want to clear.

The same problem seems to be occurring in the DMA code; this patch
does not address those issues.

Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Matt Reimer <mreimer@vpop.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2006-06-08 22:46:48 +01:00
..
boot [ARM] 3488/1: make icedcc_putc do the right thing 2006-05-02 20:40:56 +01:00
common [ARM] 3478/1: SharpSL SCOOP: Fix potenial build failure 2006-04-18 23:18:53 +01:00
configs [ARM] 3508/1: Update collie defconfig 2006-05-09 22:27:51 +01:00
kernel [ARM] arch/arm/kernel/dma-isa.c: named initializers 2006-05-16 22:09:46 +01:00
lib [ARM] 3524/1: ARM EABI: more 64-bit aligned stack fixes 2006-05-16 11:39:31 +01:00
mach-aaec2000 [ARM] 3507/1: Replace map_desc.physical with map_desc.pfn: aaed2000 2006-05-07 22:49:24 +01:00
mach-at91rm9200 Fix AT91RM9200 build breakage 2006-04-14 18:38:01 -07:00
mach-clps711x [ARM] 3304/1: Add help descriptions to ARCH config items that don't have one 2006-02-08 21:09:05 +00:00
mach-clps7500 [ARM] 3260/1: remove phys_ram from struct machine_desc (part 2) 2006-01-13 20:51:52 +00:00
mach-ebsa110 [ARM] 3260/1: remove phys_ram from struct machine_desc (part 2) 2006-01-13 20:51:52 +00:00
mach-ep93xx [ARM] 3451/1: ep93xx: use the m48t86 rtc driver on the ts72xx platform 2006-04-02 16:17:40 +01:00
mach-footbridge [PATCH] RTC: Remove RTC UIP synchronization on ARM 2006-03-28 09:16:00 -08:00
mach-h720x [ARM] 3260/1: remove phys_ram from struct machine_desc (part 2) 2006-01-13 20:51:52 +00:00
mach-imx [ARM] 3546/1: PATCH: subtle lost interrupts bug on i.MX 2006-06-08 22:46:48 +01:00
mach-integrator Merge master.kernel.org:/home/rmk/linux-2.6-serial 2006-03-28 13:52:37 -08:00
mach-iop3xx [ARM] 3391/1: use PLAT8250_DEV_PLATFORM{,1} for platform device id instead of 0/1 2006-03-23 12:59:08 +00:00
mach-ixp4xx [ARM] Trivial typo fixes 2006-06-04 21:22:11 +01:00
mach-ixp23xx [ARM] 3540/1: ixp23xx: deal with gap in interrupt bitmasks 2006-06-02 19:51:51 +01:00
mach-ixp2000 [ARM] 3383/3: ixp2000: ixdp2x01 platform serial conversion 2006-03-25 23:03:13 +00:00
mach-l7200 [ARM] 3260/1: remove phys_ram from struct machine_desc (part 2) 2006-01-13 20:51:52 +00:00
mach-lh7a40x [ARM] Remove asm/arch/irq.h 2006-03-21 22:05:46 +00:00
mach-omap1 [ARM] 3460/1: ARM: OMAP: Remove unnecessary nop_release() 2006-04-09 22:21:02 +01:00
mach-omap2 [ARM] 3460/1: ARM: OMAP: Remove unnecessary nop_release() 2006-04-09 22:21:02 +01:00
mach-pxa [ARM] 3547/1: PXA-OHCI: Allow platforms to specify a power budget 2006-06-08 22:44:07 +01:00
mach-realview [ARM] 3527/1: MPCore Boot Lockup Fix 2006-05-16 16:50:21 +01:00
mach-rpc [ARM] 3260/1: remove phys_ram from struct machine_desc (part 2) 2006-01-13 20:51:52 +00:00
mach-s3c2410 [ARM] Trivial typo fixes 2006-06-04 21:22:11 +01:00
mach-sa1100 [ARM] Fix Neponset IRQ handling 2006-06-08 17:59:31 +01:00
mach-shark [ARM] 3260/1: remove phys_ram from struct machine_desc (part 2) 2006-01-13 20:51:52 +00:00
mach-versatile [ARM] Adapt vic.c to allow for multiple VICs in a system. 2006-03-21 22:05:52 +00:00
mm [PATCH] ARM: Fix XScale PMD setting 2006-05-31 16:27:44 -07:00
nwfpe [ARM] 3111/2: old ABI compat: adjust NWFPE to be operational within an EABI kernel 2006-01-14 16:36:50 +00:00
oprofile [ARM] Use kcalloc to allocate counter_config array rather than kmalloc 2006-03-21 23:30:02 +00:00
plat-omap [ARM] 3461/1: ARM: OMAP: Fix clk_get() when using id and name 2006-04-09 22:21:05 +01:00
tools [ARM] Update mach-types 2006-05-08 20:31:11 +01:00
vfp [ARM] 3499/1: Fix VFP FPSCR corruption for double exception case 2006-05-05 22:32:23 +01:00
Kconfig [ARM] 3487/1: IXP4xx: Support non-PCI systems 2006-04-30 15:34:29 +01:00
Kconfig-nommu [ARM] nommu: fixups for the exception vectors 2006-03-27 15:18:50 +01:00
Kconfig.debug [ARM] Trivial typo fixes 2006-06-04 21:22:11 +01:00
Makefile [ARM] 3484/1: Correct AEABI CFLAGS for correct enum handling 2006-04-25 20:36:04 +01:00