summaryrefslogtreecommitdiffstats
path: root/drivers/dma/sun4i-dma.c
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2015-07-08 16:28:19 +0200
committerVinod Koul <vinod.koul@intel.com>2015-08-19 19:02:14 +0200
commit777572911a732c0d3e6dbc514f9a1206606ffd0b (patch)
tree816a6957ab3eff8929166f4889879ed43538bba2 /drivers/dma/sun4i-dma.c
parentdmaengine: mv_xor: remove support for dmacap,* DT properties (diff)
downloadlinux-777572911a732c0d3e6dbc514f9a1206606ffd0b.tar.xz
linux-777572911a732c0d3e6dbc514f9a1206606ffd0b.zip
dmaengine: mv_xor: optimize performance by using a subset of the XOR channels
Due to how async_tx behaves internally, having more XOR channels than CPUs is actually hurting performance more than it improves it, because memcpy requests get scheduled on a different channel than the XOR requests, but async_tx will still wait for the completion of the memcpy requests before scheduling the XOR requests. It is in fact more efficient to have at most one channel per CPU, which this patch implements by limiting the number of channels per engine, and the number of engines registered depending on the number of availables CPUs. Marvell platforms are currently available in one CPU, two CPUs and four CPUs configurations: - in the configurations with one CPU, only one channel from one engine is used. - in the configurations with two CPUs, only one channel from each engine is used (they are two XOR engines) - in the configurations with four CPUs, both channels of both engines are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma/sun4i-dma.c')
0 files changed, 0 insertions, 0 deletions