kernel-fxtec-pro1x/drivers/dma
Bin Liu 37e74076f3 dmaengine: cppi41: delete channel from pending list when stop channel
commit 59861547ec9a9736e7882f6fb0c096a720ff811a upstream.

The driver defines three states for a cppi channel.
- idle: .chan_busy == 0 && not in .pending list
- pending: .chan_busy == 0 && in .pending list
- busy: .chan_busy == 1 && not in .pending list

There are cases in which the cppi channel could be in the pending state
when cppi41_dma_issue_pending() is called after cppi41_runtime_suspend()
is called.

cppi41_stop_chan() has a bug for these cases to set channels to idle state.
It only checks the .chan_busy flag, but not the .pending list, then later
when cppi41_runtime_resume() is called the channels in .pending list will
be transitioned to busy state.

Removing channels from the .pending list solves the problem.

Fixes: 975faaeb99 ("dma: cppi41: start tear down only if channel is busy")
Cc: stable@vger.kernel.org # v3.15+
Signed-off-by: Bin Liu <b-liu@ti.com>
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-12-13 09:16:20 +01:00
..
bestcomm treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
dw dmaengine: dw: Fix FIFO size for Intel Merrifield 2018-12-13 09:16:19 +01:00
dw-axi-dmac
hsu dmaengine: hsu: Support dmaengine_terminate_sync() 2018-07-10 21:10:44 +05:30
ioat driver/dma/ioat: Call del_timer_sync() without holding prep_lock 2018-11-13 11:08:36 -08:00
ipu treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
mediatek
ppc4xx dmaengine: ppc4xx: fix off-by-one build failure 2018-11-13 11:08:41 -08:00
qcom dmaengine updates for 4.18-rc1 2018-06-08 11:02:21 -07:00
sh dmaengine: sh: rcar-dmac: Should not stop the DMAC by rcar_dmac_sync_tcr() 2018-07-31 09:57:27 +05:30
ti dmaengine: cppi41: delete channel from pending list when stop channel 2018-12-13 09:16:20 +01:00
xilinx dmaengine: xilinx_dma: Enable VDMA S2MM vertical flip support 2018-06-29 14:20:00 +05:30
acpi-dma.c
altera-msgdma.c
amba-pl08x.c
at_hdmac.c dmaengine: at_hdmac: fix module unloading 2018-12-05 19:32:12 +01:00
at_hdmac_regs.h
at_xdmac.c
bcm-sba-raid.c treewide: Use struct_size() for devm_kmalloc() and friends 2018-06-06 11:15:43 -07:00
bcm2835-dma.c
coh901318.c
coh901318.h
coh901318_lli.c
dma-axi-dmac.c
dma-jz4740.c
dma-jz4780.c dmaengine: dma-jz4780: Return error if not probed from DT 2018-11-13 11:08:38 -08:00
dmaengine.c Merge branch 'ida-4.19' of git://git.infradead.org/users/willy/linux-dax 2018-08-26 11:48:42 -07:00
dmaengine.h
dmatest.c
ep93xx_dma.c headers: separate linux/mod_devicetable.h from linux/platform_device.h 2018-07-07 17:52:26 +02:00
fsl-edma.c
fsl_raid.c
fsl_raid.h
fsldma.c
fsldma.h
idma64.c dmaengine: idma64: Support dmaengine_terminate_sync() 2018-07-10 21:10:44 +05:30
idma64.h
img-mdc-dma.c
imx-dma.c
imx-sdma.c dmaengine: imx-sdma: use GFP_NOWAIT for dma descriptor allocations 2018-12-13 09:16:20 +01:00
iop-adma.c
k3dma.c dmaengine: k3dma: Off by one in k3_of_dma_simple_xlate() 2018-06-28 11:57:21 +05:30
Kconfig Merge branch 'topic/imx' into for-linus 2018-08-17 17:59:27 +05:30
lpc18xx-dmamux.c
Makefile dmaengine: Add Actions Semi Owl family S900 DMA driver 2018-08-09 08:16:00 +05:30
mic_x100_dma.c dmaengine: mic_x100_dma: use devm_kzalloc to fix an issue 2018-08-27 11:16:04 +05:30
mic_x100_dma.h
mmp_pdma.c
mmp_tdma.c
moxart-dma.c treewide: Use struct_size() for kmalloc()-family 2018-06-06 11:15:43 -07:00
mpc512x_dma.c
mv_xor.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
mv_xor.h
mv_xor_v2.c dmaengine: mv_xor_v2: use {lower,upper}_32_bits to configure HW descriptor address 2018-07-25 17:53:22 +05:30
mxs-dma.c
nbpfaxi.c dmaengine: nbpfaxi: Mark expected switch fall-through 2018-07-09 17:01:35 +05:30
of-dma.c
owl-dma.c dmaengine: Add Actions Semi Owl family S900 DMA driver 2018-08-09 08:16:00 +05:30
pch_dma.c
pl330.c DMAengine updates for v4.19-rc1 2018-08-18 15:55:59 -07:00
pxa_dma.c dmaengine: pxa: add a default requestor policy 2018-06-18 21:29:23 +02:00
s3c24xx-dma.c headers: separate linux/mod_devicetable.h from linux/platform_device.h 2018-07-07 17:52:26 +02:00
sa11x0-dma.c treewide: Use struct_size() for kmalloc()-family 2018-06-06 11:15:43 -07:00
sirf-dma.c
sprd-dma.c dmaengine updates for 4.18-rc1 2018-06-08 11:02:21 -07:00
st_fdma.c
st_fdma.h
ste_dma40.c dmaengine: ste_dma40: Remove VLA usage 2018-07-02 17:46:24 +05:30
ste_dma40_ll.c
ste_dma40_ll.h
stm32-dma.c dmaengine: stm32: replace "%p" with "%pK" 2018-07-09 23:01:57 +05:30
stm32-dmamux.c
stm32-mdma.c dmaengine: stm32: replace "%p" with "%pK" 2018-07-09 23:01:57 +05:30
sun4i-dma.c
sun6i-dma.c
tegra20-apb-dma.c
tegra210-adma.c
timb_dma.c
TODO
txx9dmac.c
txx9dmac.h
virt-dma.c
virt-dma.h
xgene-dma.c
zx_dma.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00