android_kernel_xiaomi_sm7250/arch/mips
Ralf Baechle 30e748a507 [MIPS] irq_cpu: use handle_percpu_irq handler to avoid dropping interrupts.
This matters to any sort of device that is wired to one of the CPU
interrupt pins on an SMP system.  Typically the scenario is most easily
triggered with the count/compare timer interrupt where the same interrupt
number and thus irq_desc is used on each processor.

   CPU A			CPU B

   do_IRQ()
   generic_handle_irq()
   handle_level_irq()
   spin_lock(desc_lock)
   set IRQ_INPROGRESS
   spin_unlock(desc_lock)
				do_IRQ()
				generic_handle_irq()
				handle_level_irq()
				spin_lock(desc_lock)
				IRQ_INPROGRESS set => bail out
   spin_lock(desc_lock)
   clear IRQ_INPROGRESS
   spin_unlock(desc_lock)

In case of the cp0 compare interrupt this means the interrupt will be
acked and not handled or re-armed on CPU b, so there won't be any timer
interrupt until the count register wraps around.

With kernels 2.6.20 ... 2.6.23 we usually were lucky that things were just
working right on VSMP because the count registers are synchronized on
bootup so it takes something that disables interrupts for a long time on
one processor to trigger this one.

For scenarios where an interrupt is multicasted or broadcasted over several
CPUs the existing code was safe and the fix will break it.  There is no
way to know in the interrupt controller code because it is abstracted from
the platform code.  I think we do not have such a setup currently, so this
should be ok.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2007-11-15 23:21:52 +00:00
..
au1000 [MIPS] mtx-1: Enable -Werror. 2007-11-02 16:13:49 +00:00
basler/excite [MIPS] Excite: Fix build error. 2007-11-02 16:13:47 +00:00
bcm47xx [MIPS] Kill duplicated setup_irq() for cp0 timer 2007-10-19 18:15:58 +01:00
boot [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
cobalt [MIPS] time: Add GT641xx timer0 clockevent driver 2007-10-22 22:09:00 +01:00
configs [MIPS] Alchemy: Remove CONFIG_TS_AU1X00_ADS7846 from defconfigs. 2007-10-29 19:35:37 +00:00
dec [MIPS] Allow hardwiring of the CPU type to a single type for optimization. 2007-10-11 23:46:15 +01:00
emma2rh [MIPS] Kill duplicated setup_irq() for cp0 timer 2007-10-19 18:15:58 +01:00
fw [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
gt64120/wrppmc [MIPS] time: Remove wrppmc's definition of plat_timer_setup. 2007-10-29 19:35:34 +00:00
jazz [MIPS] Jazz: disable PIT; cleanup R4030 clockevent 2007-11-02 16:13:49 +00:00
jmr3927 [MIPS] txx9tmr clockevent/clocksource driver 2007-10-29 19:35:35 +00:00
kernel [MIPS] irq_cpu: use handle_percpu_irq handler to avoid dropping interrupts. 2007-11-15 23:21:52 +00:00
lasat [MIPS] Lasat: Fix overlap of interrupt number ranges. 2007-11-15 23:21:50 +00:00
lemote/lm2e [MIPS] Kill duplicated setup_irq() for cp0 timer 2007-10-19 18:15:58 +01:00
lib [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
math-emu [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
mips-boards [MIPS] time: Replace plat_timer_setup with modern APIs. 2007-10-29 19:35:36 +00:00
mipssim [MIPS] time: Replace plat_timer_setup with modern APIs. 2007-10-29 19:35:36 +00:00
mm [MIPS] Sibyte: Replace use of removed IO_SPACE_BASE with IOADDR. 2007-11-15 23:21:49 +00:00
oprofile Combine instrumentation menus in kernel/Kconfig.instrumentation 2007-10-19 11:53:54 -07:00
pci [MIPS] Lasat: Fix overlap of interrupt number ranges. 2007-11-15 23:21:50 +00:00
philips/pnx8550 [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
pmc-sierra Author: Ralf Baechle <ralf@linux-mips.org> 2007-10-29 19:35:37 +00:00
qemu [MIPS] Qemu: Add early printk, your friend in a cold night. 2007-11-15 23:21:48 +00:00
sgi-ip22 [MIPS] IP22: Fix hang due to messing with timer interrupt handler 2007-10-17 18:28:49 +01:00
sgi-ip27 [MIPS] IP27: Fix build error. 2007-11-02 16:13:47 +00:00
sgi-ip32 [MIPS] IP32: Fix address of 2nd serial interface. 2007-11-02 16:13:46 +00:00
sibyte [MIPS] Sibyte: Replace use of removed IO_SPACE_BASE with IOADDR. 2007-11-15 23:21:49 +00:00
sni [MIPS] SNI: s/achknowledge/acknowledge/ 2007-11-15 23:21:51 +00:00
tx4927 [MIPS] txx9tmr clockevent/clocksource driver 2007-10-29 19:35:35 +00:00
tx4938 [MIPS] txx9tmr clockevent/clocksource driver 2007-10-29 19:35:35 +00:00
vr41xx mips: undo locking on error path returns 2007-11-14 18:45:42 -08:00
defconfig [MIPS] Update a few defconfigs. 2007-08-27 02:16:55 +01:00
Kconfig [MIPS] Fix shadow register support. 2007-11-15 23:21:49 +00:00
Kconfig.debug [MIPS] Kbuild: Use the new cc-cross-prefix feature. 2007-10-22 22:09:01 +01:00
Makefile [MIPS] Makefile: Fix canonical system names 2007-11-15 23:21:51 +00:00