android_kernel_xiaomi_sm8350/arch/powerpc/platforms
Arnd Bergmann d015fe9951 powerpc/cell/axon-msi: Retry on missing interrupt
The MSI capture logic for the axon bridge can sometimes
lose interrupts in case of high DMA and interrupt load,
when it signals an MSI interrupt to the MPIC interrupt
controller while we are already handling another MSI.

Each MSI vector gets written into a FIFO buffer in main
memory using DMA, and that DMA access is normally flushed
by the actual interrupt packet on the IOIF.  An MMIO
register in the MSIC holds the position of the last
entry in the FIFO buffer that was written.  However,
reading that position does not flush the DMA, so that
we can observe stale data in the buffer.

In a stress test, we have observed the DMA to arrive
up to 14 microseconds after reading the register.

This patch works around this problem by retrying the
access to the FIFO buffer.

We can reliably detect the conditioning by writing
an invalid MSI vector into the FIFO buffer after
reading from it, assuming that all MSIs we get
are valid.  After detecting an invalid MSI vector,
we udelay(1) in the interrupt cascade for up to
100 times before giving up.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-12-01 09:40:18 +11:00
..
8xx powerpc: Add support for the MPC852 based mgsuvd board from keymile. 2008-09-16 10:01:30 -05:00
40x powerpc/40x: Don't enable HCU4 board by default 2008-10-28 08:44:03 -04:00
44x powerpc/4xx: Add PowerPC 4xx GPIO driver 2008-10-17 13:33:44 -04:00
52xx powerpc/mpc5200: Don't touch pipelining for MPC5200B 2008-10-15 11:09:59 -06:00
82xx Merge commit 'origin' 2008-10-15 11:31:54 +11:00
83xx powerpc/83xx: don't probe broken PCI on mpc837x_mds boards 2008-10-13 11:09:58 -05:00
85xx powerpc/mpic: Fix regression caused by change of default IRQ affinity 2008-10-31 16:13:50 +11:00
86xx powerpc/mpic: Fix regression caused by change of default IRQ affinity 2008-10-31 16:13:50 +11:00
512x powerpc/5121: Add PCI support. 2008-10-13 11:09:58 -05:00
cell powerpc/cell/axon-msi: Retry on missing interrupt 2008-12-01 09:40:18 +11:00
chrp Merge commit 'origin' 2008-10-15 11:31:54 +11:00
embedded6xx powerpc: fix i2c on PPC linkstation / kurobox machines 2008-10-28 09:45:57 -05:00
iseries powerpc: Update remaining dma_mapping_ops to use map/unmap_page 2008-10-31 16:13:48 +11:00
maple Merge commit 'origin' 2008-10-15 11:31:54 +11:00
pasemi phylib: two dynamic mii_bus allocation fallout fixes 2008-10-09 09:45:04 -07:00
powermac ftrace: rename FTRACE to FUNCTION_TRACER 2008-10-20 18:27:03 +02:00
prep
ps3 powerpc: Update remaining dma_mapping_ops to use map/unmap_page 2008-10-31 16:13:48 +11:00
pseries powerpc: Fix "unused variable" warning in pci_dlpar.c 2008-11-05 19:59:08 +11:00
fsl_uli1575.c powerpc: Fix boot hang regression on MPC8544DS 2008-10-02 00:58:49 -05:00
Kconfig powerpc/QE: move QE_GPIO Kconfig symbol into the platforms/Kconfig 2008-10-13 11:09:58 -05:00
Kconfig.cputype Merge branch 'core-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-10-16 15:17:40 -07:00
Makefile