android_kernel_xiaomi_sm8350/arch
David Gibson 868afce21f [POWERPC] Fix irq flow handler for 4xx UIC
At present the driver for the UIC (the embedded interrupt controller
in 4xx chips) uses the handle_level_irq() flow handler.  It turns out
this does not correctly handle level triggered interrupts on the UIC.

Specifically, acknowledging an irq on the UIC (i.e. clearing the
relevant bit in UIC_SR) will have no effect for a level interrupt
which is still asserted by the external device, even if the irq is
already masked.  Therefore, unlike handle_level_irq() we must ack the
interrupt after invoking the ISR (which should cause the device to
stop asserting the irq) instead of acking it when we mask it, before
the ISR.

This patch implements this change, in a new handle_uic_irq(), a
customised irq flow handler for the UIC.  For edge triggered
interrupts, handle_uic_irq() still uses the old flow - we must ack
edge triggered interrupt before the ISR not after, or we could miss a
second event which occurred between invoking the ISR and acking the
irq.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Acked-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2007-08-17 11:02:05 +10:00
..
alpha alpha: -Werror fixes for sys_titan.c 2007-08-11 15:47:42 -07:00
arm [ARM] rpc: update defconfig 2007-08-06 16:48:49 +01:00
avr32 Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds 2007-07-22 11:22:01 -07:00
blackfin Blackfin arch: after removing fs.h from mm.h, fix the broken on Blackfin arch 2007-08-11 15:47:39 -07:00
cris cris: drivers/cdrom/Kconfig no longer exists 2007-08-11 15:47:41 -07:00
frv FRV: connect up fallocate 2007-08-11 15:47:40 -07:00
h8300
i386 genirq: mark io_apic level interrupts to avoid resend 2007-08-12 11:05:45 -07:00
ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-08-01 20:48:54 -07:00
m32r m32r: build fix for removing fs.h from mm.h 2007-07-30 10:52:10 -07:00
m68k Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
m68knommu m68knommu: get rid of duplicate include 2007-07-31 15:39:40 -07:00
mips [MIPS] Add smp_call_function_single() 2007-07-31 21:35:37 +01:00
parisc Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
powerpc [POWERPC] Fix irq flow handler for 4xx UIC 2007-08-17 11:02:05 +10:00
ppc [POWERPC] Only ignore arch/ppc/include, not arch/ppc/boot/include 2007-08-17 11:01:51 +10:00
s390 [S390] remove DEFAULT_MIGRATION_COST 2007-08-10 14:32:37 +02:00
sh sh: fix defconfigs for sh7751r boards 2007-08-03 10:17:47 +09:00
sh64 sh64: Kill off virt_to_bus()/bus_to_virt(). 2007-07-31 13:11:25 +09:00
sparc [SPARC]: Centralize find_in_proplist() instead of duplicating N times. 2007-08-07 18:46:36 -07:00
sparc64 [SPARC64]: Fix memory leak when cpu hotplugging. 2007-08-08 17:33:52 -07:00
um UML: console should handle spurious IRQS 2007-07-31 15:39:37 -07:00
v850
x86_64 genirq: mark io_apic level interrupts to avoid resend 2007-08-12 11:05:45 -07:00
xtensa