android_kernel_motorola_sm6375/drivers/dma
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Dan Williams da87ca4d4c ioat: fix tasklet tear down
Since commit 7787380336 "net_dma: mark broken" we no longer pin dma
engines active for the network-receive-offload use case.  As a result
the ->free_chan_resources() that occurs after the driver self test no
longer has a NET_DMA induced ->alloc_chan_resources() to back it up.  A
late firing irq can lead to ksoftirqd spinning indefinitely due to the
tasklet_disable() performed by ->free_chan_resources().  Only
->alloc_chan_resources() can clear this condition in affected kernels.

This problem has been present since commit 3e037454bc "I/OAT: Add
support for MSI and MSI-X" in 2.6.24, but is now exposed. Given the
NET_DMA use case is deprecated we can revisit moving the driver to use
threaded irqs.  For now, just tear down the irq and tasklet properly by:

1/ Disable the irq from triggering the tasklet

2/ Disable the irq from re-arming

3/ Flush inflight interrupts

4/ Flush the timer

5/ Flush inflight tasklets

References:
https://lkml.org/lkml/2014/1/27/282
https://lkml.org/lkml/2014/2/19/672

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: <stable@vger.kernel.org>
Reported-by: Mike Galbraith <bitbucket@online.de>
Reported-by: Stanislav Fomichev <stfomichev@yandex-team.ru>
Tested-by: Mike Galbraith <bitbucket@online.de>
Tested-by: Stanislav Fomichev <stfomichev@yandex-team.ru>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2014-02-25 09:44:20 -08:00
..
bestcomm
dw dma: dw: use %pad instead of casting dma_addr_t 2014-01-20 13:56:37 +05:30
ioat ioat: fix tasklet tear down 2014-02-25 09:44:20 -08:00
ipu
ppc4xx Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
sh rcar-hpbdma: initialise plane information when halted 2013-11-28 13:46:00 +05:30
acpi-dma.c acpi-dma: align documentation with kernel-doc format 2014-01-26 17:33:57 +05:30
amba-pl08x.c dma: pl08x: Export pl08x_filter_id 2014-01-28 08:45:54 +05:30
at_hdmac.c Merge commit 'dmaengine-3.13-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/dmaengine 2013-11-16 12:02:36 +05:30
at_hdmac_regs.h dmaengine: at_hdmac: remove unused function 2013-12-12 22:43:41 -08:00
bcm2835-dma.c dmaengine: Add DMA_PRIVATE to BCM2835 driver 2014-01-20 12:31:50 +05:30
coh901318.c
coh901318.h
coh901318_lli.c
cppi41.c drivers/dma: fix error return code 2014-01-20 14:58:03 +05:30
dma-jz4740.c
dmaengine.c ARM: SoC cleanups for 3.14 2014-01-23 18:36:55 -08:00
dmaengine.h
dmatest.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
edma.c dma: edma: Set debug level to debugging messages 2013-12-18 21:44:02 +05:30
ep93xx_dma.c
fsldma.c dma: fix fsldma build warnings 2013-12-12 22:43:41 -08:00
fsldma.h DMA: Freescale: change BWC from 256 bytes to 1024 bytes 2014-01-20 13:13:22 +05:30
imx-dma.c
imx-sdma.c dma: imx-sdma: Assign a default script number for ROM firmware cases 2014-01-13 14:52:04 +05:30
intel_mid_dma.c
intel_mid_dma_regs.h
iop-adma.c Merge commit 'dmaengine-3.13-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/dmaengine 2013-11-16 12:02:36 +05:30
iovlock.c
k3dma.c dmaengine: k3dma: fix sparse warnings 2014-01-20 13:53:20 +05:30
Kconfig ARM: moxart: move DMA_OF selection to driver 2014-02-02 19:52:45 -08:00
Makefile dmaengine: Add MOXA ART DMA engine driver 2014-01-20 12:32:46 +05:30
mmp_pdma.c dmaengine: mmp_pdma: fix mismerge 2014-01-29 17:38:57 +05:30
mmp_tdma.c dma:mmp_tdma: get sram pool through device tree 2014-01-09 17:46:20 +05:30
moxart-dma.c dmaengine: Add MOXA ART DMA engine driver 2014-01-20 12:32:46 +05:30
mpc512x_dma.c
mv_xor.c dma: mv_xor: Silence a bunch of LPAE-related warnings 2014-02-12 16:21:17 -08:00
mv_xor.h
mxs-dma.c
of-dma.c dma: add channel request API that supports deferred probe 2013-12-10 17:46:48 +05:30
omap-dma.c dma: omap: Set debug level to debugging messages 2014-01-20 14:56:25 +05:30
pch_dma.c
pl330.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
s3c24xx-dma.c dma: fix build breakage in s3c24xx-dma 2013-12-04 11:24:30 +05:30
sa11x0-dma.c
sirf-dma.c dmaengine: sirf: Add device_slave_caps interface 2014-01-20 13:17:31 +05:30
ste_dma40.c dma: ste_dma40: Parse flags property for new 'high priority channel' request 2013-11-26 21:01:58 +01:00
ste_dma40_ll.c
ste_dma40_ll.h
tegra20-apb-dma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
timb_dma.c
TODO
txx9dmac.c dma: fix build warnings in txx9 2013-12-12 22:43:41 -08:00
txx9dmac.h
virt-dma.c
virt-dma.h dma: fix vchan_cookie_complete() debug print 2014-01-26 17:33:45 +05:30