alistair23-linux/drivers/dma
Ludovic Desroches 4c374fc7ce dmaengine: at_xdmac: lock fixes
Using _bh variant for spin locks causes this kind of warning:
Starting logging: ------------[ cut here ]------------
WARNING: CPU: 0 PID: 3 at /ssd_drive/linux/kernel/softirq.c:151
__local_bh_enable_ip+0xe8/0xf4()
Modules linked in:
CPU: 0 PID: 3 Comm: ksoftirqd/0 Not tainted 4.1.0-rc2+ #94
Hardware name: Atmel SAMA5
[<c0013c04>] (unwind_backtrace) from [<c00118a4>] (show_stack+0x10/0x14)
[<c00118a4>] (show_stack) from [<c001bbcc>]
(warn_slowpath_common+0x80/0xac)
[<c001bbcc>] (warn_slowpath_common) from [<c001bc14>]
(warn_slowpath_null+0x1c/0x24)
[<c001bc14>] (warn_slowpath_null) from [<c001e28c>]
(__local_bh_enable_ip+0xe8/0xf4)
[<c001e28c>] (__local_bh_enable_ip) from [<c01fdbd0>]
(at_xdmac_device_terminate_all+0xf4/0x100)
[<c01fdbd0>] (at_xdmac_device_terminate_all) from [<c02221a4>]
(atmel_complete_tx_dma+0x34/0xf4)
[<c02221a4>] (atmel_complete_tx_dma) from [<c01fe4ac>]
(at_xdmac_tasklet+0x14c/0x1ac)
[<c01fe4ac>] (at_xdmac_tasklet) from [<c001de58>]
(tasklet_action+0x68/0xb4)
[<c001de58>] (tasklet_action) from [<c001dfdc>]
(__do_softirq+0xfc/0x238)
[<c001dfdc>] (__do_softirq) from [<c001e140>] (run_ksoftirqd+0x28/0x34)
[<c001e140>] (run_ksoftirqd) from [<c0033a3c>]
(smpboot_thread_fn+0x138/0x18c)
[<c0033a3c>] (smpboot_thread_fn) from [<c0030e7c>] (kthread+0xdc/0xf0)
[<c0030e7c>] (kthread) from [<c000f480>] (ret_from_fork+0x14/0x34)
---[ end trace b57b14a99c1d8812 ]---

It comes from the fact that devices can called some code from the DMA
controller with irq disabled. _bh variant is not intended to be used in
this case since it can enable irqs. Switch to irqsave/irqrestore variant to
avoid this situation.

Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Cc: stable@vger.kernel.org # 4.0 and later
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2015-06-08 16:27:09 +05:30
..
bestcomm dmaengine: constify of_device_id array 2015-03-18 22:13:14 +05:30
dw Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
hsu dmaengine: hsu: Fix memory leak when stopping a running transfer 2015-06-02 18:33:08 +05:30
ioat Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
ipu
ppc4xx dmaengine: Remove FSF mailing addresses 2015-03-16 22:28:15 +05:30
sh dmaengine: usb-dmac: Protect PM-only functions to kill warning 2015-04-27 08:36:02 +05:30
xilinx dmaengine: xilinx-dma: move header file to common location 2015-03-17 16:23:21 +05:30
acpi-dma.c resources: Move struct resource_list_entry from ACPI into resource core 2015-02-05 15:09:25 +01:00
amba-pl08x.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
at_hdmac.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
at_hdmac_regs.h dmaengine: at_hdmac: Fix calculation of the residual bytes 2015-03-13 14:58:31 +05:30
at_xdmac.c dmaengine: at_xdmac: lock fixes 2015-06-08 16:27:09 +05:30
bcm2835-dma.c dmaengine: bcm2835-dma: Fix memory leak when stopping a running transfer 2015-03-30 23:17:08 +05:30
coh901318.c dmaengine: coh901318: fix function return types build warnings 2015-01-18 20:01:36 +05:30
coh901318.h
coh901318_lli.c
cppi41.c dmaengine: cppi41: add missing bitfields 2015-04-11 21:12:58 +05:30
dma-jz4740.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
dma-jz4780.c dmaengine: jz4780: add driver for the Ingenic JZ4780 DMA controller 2015-04-01 08:43:49 +05:30
dmaengine.c dmaengine: increment privatecnt when using dma_get_any_slave_channel 2015-04-29 16:47:57 +05:30
dmaengine.h
dmatest.c dmatest: move src_off, dst_off, len inside loop 2015-02-04 18:17:21 -08:00
edma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
ep93xx_dma.c
fsl-edma.c
fsl_raid.c dmaengine: fsl_raid: statify fsl_re_chan_probe 2015-04-02 16:11:35 +05:30
fsl_raid.h dmaengine: Driver support for FSL RaidEngine device. 2015-04-02 16:10:27 +05:30
fsldma.c dmaengine: fsldma: remove the unused variable 2015-01-13 23:58:08 +05:30
fsldma.h dmaengine: fsldma: declare slave capabilities for the generic code 2015-01-13 23:58:08 +05:30
img-mdc-dma.c dmaengine: img-mdc: remove device_alloc_chan_resources handler 2015-03-18 22:44:58 +05:30
imx-dma.c Merge branch 'topic/slave_caps_device_control_fix_rebased' into for-linus 2015-02-02 16:55:35 -08:00
imx-sdma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
iop-adma.c dmaengine: Remove FSF mailing addresses 2015-03-16 22:28:15 +05:30
k3dma.c Merge branch 'topic/alloc_removal' into for-linus 2015-03-18 22:46:19 +05:30
Kconfig dmaengine: xgene: Set hardware dependency 2015-04-27 08:36:02 +05:30
Makefile Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
mic_x100_dma.c
mic_x100_dma.h
mmp_pdma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
mmp_tdma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
moxart-dma.c dmaengine: moxart-dma: Fix memory leak when stopping a running transfer 2015-03-30 23:17:08 +05:30
mpc512x_dma.c dmaengine: constify of_device_id array 2015-03-18 22:13:14 +05:30
mv_xor.c dmaengine: constify of_device_id array 2015-03-18 22:13:14 +05:30
mv_xor.h dmaengine: Remove FSF mailing addresses 2015-03-16 22:28:15 +05:30
mxs-dma.c
nbpfaxi.c
of-dma.c dmaengine: export symbol of of_dma_request_slave_channel() 2015-03-07 15:03:13 +00:00
omap-dma.c dmaengine: omap-dma: Fix memory leak when terminating running transfer 2015-03-30 23:17:08 +05:30
pch_dma.c dmaengine: pch_dma: fix memory leak on failure path in pch_dma_probe() 2015-04-17 23:41:46 +05:30
pl330.c dmaengine: pl330: Fix hang on dmaengine_terminate_all on certain boards 2015-05-22 18:01:03 +05:30
qcom_bam_dma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
s3c24xx-dma.c dmaengine: s3c24xx: remove device_alloc_chan_resources handler 2015-03-18 22:45:36 +05:30
sa11x0-dma.c dmaengine: sa11x0: report slave capabilities to upper layers 2015-04-17 23:24:35 +05:30
sirf-dma.c dmaengine: constify of_device_id array 2015-03-18 22:13:14 +05:30
ste_dma40.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
ste_dma40_ll.c
ste_dma40_ll.h
sun6i-dma.c Merge branch 'topic/alloc_removal' into for-linus 2015-03-18 22:46:19 +05:30
tegra20-apb-dma.c dmaengine: tegra: add slave capabilities reporting 2015-01-14 00:00:30 +05:30
timb_dma.c
TODO
txx9dmac.c
txx9dmac.h
virt-dma.c
virt-dma.h
xgene-dma.c dmaengine: fix platform_no_drv_owner.cocci warnings 2015-04-17 23:43:18 +05:30