1
0
Fork 0
alistair23-linux/drivers/dma
Peter Ujfalusi 1c2e8e6b64 dmaengine: omap-dma: Support for LinkedList transfer of slave_sg
sDMA in OMAP3630 or newer SoC have support for LinkedList transfer. When
LinkedList or Descriptor load feature is present we can create the
descriptors for each and program sDMA to walk through the list of
descriptors instead of the current way of sDMA stop, sDMA reconfiguration
and sDMA start after each SG transfer.
By using LinkedList transfer in sDMA the number of DMA interrupts will
decrease dramatically.
Booting up the board with filesystem on SD card for example:
W/o LinkedList support:
 27:       4436          0     WUGEN  13 Level     omap-dma-engine

Same board/filesystem with this patch:
 27:       1027          0     WUGEN  13 Level     omap-dma-engine

Or copying files from SD card to eMCC:
2.1G    /usr/
232001

W/o LinkedList we see ~761069 DMA interrupts.
With LinkedList support it is down to ~269314 DMA interrupts.

With the decreased DMA interrupt number the CPU load is dropping
significantly as well.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-08-10 22:59:13 +05:30
..
bestcomm dmaengine: Remove site specific OOM error messages on kzalloc 2016-06-21 21:35:00 +05:30
dw dmaengine: dw: pass platform data via struct dw_dma_chip 2016-05-02 15:31:05 +05:30
hsu dmaengine: hsu: Export hsu_dma_get_status() 2016-06-25 14:30:42 -07:00
ioat dmaengine: ioat: statify symbol 2016-07-23 16:07:29 +05:30
ipu genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
ppc4xx dmaengine: Remove site specific OOM error messages on kzalloc 2016-06-21 21:35:00 +05:30
qcom Merge branch 'topic/dmaengine_cleanups' into for-linus 2016-07-28 10:10:37 +05:30
sh Merge branch 'topic/sh' into for-linus 2016-07-16 20:10:17 +05:30
xilinx dmaengine: zynqmp_dma: add missing MODULE_LICENSE 2016-07-24 11:55:17 +05:30
Kconfig Merge branch 'topic/xilinx' into for-linus 2016-07-16 20:10:54 +05:30
Makefile dmaengine: mv_xor_v2: new driver 2016-07-12 10:09:53 +05:30
TODO dmaengine: dw: don't perform DMA when dmaengine_submit is called 2014-07-15 22:14:30 +05:30
acpi-dma.c dmaengine: acpi-dma: align debug message with flow 2016-02-22 09:06:09 +05:30
amba-pl08x.c dmaengine: Remove site specific OOM error messages on kzalloc 2016-06-21 21:35:00 +05:30
at_hdmac.c dmaengine: at_hdmac: use %pad format string for dma_addr_t 2015-11-16 09:21:05 +05:30
at_hdmac_regs.h dmaengine: at_hdmac: use %pad format string for dma_addr_t 2015-11-16 09:21:05 +05:30
at_xdmac.c dmaengine updates for 4.8-rc1 2016-07-28 15:45:17 -07:00
bcm2835-dma.c dmaengine: bcm2835: fix 64-bit warning 2016-07-06 22:39:43 +05:30
coh901318.c dmaengine: coh901318: remove owner assignment 2016-07-23 16:07:25 +05:30
coh901318.h dma: coh901318: merge header files 2013-01-07 17:36:37 +01:00
coh901318_lli.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
cppi41.c dmaengine: cppi: remove unused and bogus check 2016-07-23 16:07:27 +05:30
dma-axi-dmac.c dmaengine: axi-dmac: Return IRQ_NONE if no IRQs are pending 2016-07-01 22:56:41 +05:30
dma-jz4740.c dmaengine: jz4740: kill the tasklets upon exit 2016-07-16 20:19:00 +05:30
dma-jz4780.c dmaengine: jz4780: Kill tasklets before unregistering the device 2015-08-18 22:28:50 +05:30
dmaengine.c Merge branch 'topic/core' into for-linus 2016-05-17 10:13:40 +05:30
dmaengine.h dmaengine: consolidate initialization of cookies 2012-03-13 11:37:22 +05:30
dmatest.c dmaengine: dmatest: Add support for scatter-gather DMA mode 2016-07-16 20:17:26 +05:30
edma.c dmaengine: edma: kill the tasklets upon exit 2016-07-16 20:18:58 +05:30
ep93xx_dma.c dmaengine: ep93xx: Treat STALL and NFB IRQs same way 2016-01-25 09:49:55 +05:30
fsl-edma.c dmaengine: fsl-edma: kill the tasklets upon exit 2016-07-16 20:19:00 +05:30
fsl_raid.c dmaengine: fsl_raid: remove owner assignment 2016-07-23 16:07:26 +05:30
fsl_raid.h dmaengine: Driver support for FSL RaidEngine device. 2015-04-02 16:10:27 +05:30
fsldma.c dmaengine: Remove site specific OOM error messages on kzalloc 2016-06-21 21:35:00 +05:30
fsldma.h dmaengine: fsldma: declare slave capabilities for the generic code 2015-01-13 23:58:08 +05:30
idma64.c dmaengine: idma64: clear LLP_[SD]_EN bits in last descriptor 2016-02-15 22:06:45 +05:30
idma64.h asm-generic changes for 4.6 2016-03-24 23:13:48 -07:00
img-mdc-dma.c dmaengine: mdc: Correct terminate_all handling 2015-12-18 11:12:29 +05:30
imx-dma.c dmaengine: imx-dma: fix coding style issue 2016-07-16 20:19:01 +05:30
imx-sdma.c dmaengine: imx-sdma: remove assignment never used 2016-07-23 16:07:28 +05:30
iop-adma.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
k3dma.c Merge branch 'topic/dmaengine_cleanups' into for-linus 2016-07-28 10:10:37 +05:30
lpc18xx-dmamux.c dmaengine: add driver for lpc18xx dmamux 2015-08-18 22:12:14 +05:30
mic_x100_dma.c dma/mic_x100_dma: IS_ERR() vs PTR_ERR() typo 2016-03-03 21:13:01 +05:30
mic_x100_dma.h dmaengine: Add an enum for the dmaengine alignment constraints 2015-08-05 10:53:52 +05:30
mmp_pdma.c dmaengine: mmp_pdma: explicitly freeup irq 2016-07-16 20:19:03 +05:30
mmp_tdma.c dmaengine: mmp_tdma: statify symbols 2016-07-16 20:19:03 +05:30
moxart-dma.c dmaengine: moxart-dma: explicitly freeup irq 2016-07-16 20:19:03 +05:30
mpc512x_dma.c dmaengine: mpc512x: kill the tasklets upon exit 2016-07-16 20:19:05 +05:30
mv_xor.c dmaengine updates for 4.8-rc1 2016-07-28 15:45:17 -07:00
mv_xor.h dmaengine: mv_xor: use SoC type instead of directly the operation mode 2016-05-03 12:27:47 +05:30
mv_xor_v2.c dmaengine: mv_xor_v2: remove trailing whitespace 2016-07-12 10:10:00 +05:30
mxs-dma.c dmaengine: mxs: Constify platform_device_id 2015-05-04 16:38:55 +05:30
nbpfaxi.c dmaengine: nbpfaxi: kill the tasklets upon exit 2016-07-16 20:19:04 +05:30
of-dma.c dmaengine: of_dma: approximate an average distribution 2016-05-14 13:34:10 +05:30
omap-dma.c dmaengine: omap-dma: Support for LinkedList transfer of slave_sg 2016-08-10 22:59:13 +05:30
pch_dma.c dmaengine: Remove remaining FSF mailing addresses 2015-07-06 19:18:53 +05:30
pl330.c dmaengine: pl330: explicitly freeup irq 2016-07-16 20:19:05 +05:30
pxa_dma.c dmaengine: pxa_dma: implement device_synchronize 2016-07-23 16:07:29 +05:30
s3c24xx-dma.c dmaengine: s3c24xx: kill the tasklets upon exit 2016-07-23 16:07:24 +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: sirf-dma: kill the tasklets upon exit 2016-07-23 16:07:24 +05:30
ste_dma40.c dmaengine: Remove site specific OOM error messages on kzalloc 2016-06-21 21:35:00 +05:30
ste_dma40_ll.c dmaengine: ste_dma40_ll: make d40_width_to_bits static 2016-06-08 08:59:55 +05:30
ste_dma40_ll.h dmaengine: ste_dma40: Remove unnecessary call to d40_phy_cfg() 2013-05-23 21:13:19 +02:00
stm32-dma.c dmaengine: stm32-dma: Fix unchecked deference of chan->desc 2015-12-10 09:45:22 +05:30
sun4i-dma.c remove lots of IS_ERR_VALUE abuses 2016-05-27 15:26:11 -07:00
sun6i-dma.c dmaengine: sun6i-dma: Only calculate residue if state exists. 2016-06-21 21:35:00 +05:30
tegra20-apb-dma.c Merge branch 'topic/tegra' into for-linus 2016-07-16 20:10:42 +05:30
tegra210-adma.c dmaengine: tegra-adma: Add support for Tegra210 ADMA 2016-05-13 14:56:24 +05:30
ti-dma-crossbar.c dmaengine: ti-dma-crossbar: make omap_dmaxbar_init static 2016-06-28 20:09:54 +05:30
timb_dma.c dmaengine: Remove site specific OOM error messages on kzalloc 2016-06-21 21:35:00 +05:30
txx9dmac.c dmaengine: txx9dmac: explicitly freeup irq 2016-07-23 16:07:25 +05:30
txx9dmac.h MIPS: Replace MIPS-specific 64BIT_PHYS_ADDR with generic PHYS_ADDR_T_64BIT 2014-11-24 22:46:44 +01:00
virt-dma.c dmaengine: virt-dma: don't always free descriptor upon completion 2015-11-16 08:32:16 +05:30
virt-dma.h Merge branch 'topic/async' into for-linus 2016-01-06 15:17:47 +05:30
xgene-dma.c dmaengine: xgene-dma: Fix double IRQ issue by setting IRQ_DISABLE_UNLAZY flag 2016-01-07 11:09:36 +05:30
zx296702_dma.c dmaengine updates for 4.4-rc1 2015-11-10 10:05:17 -08:00