Thread (33 messages) 33 messages, 7 authors, 2015-06-02

Re: [PATCH 0/8] ARM: mvebu: Add support for RAID6 PQ offloading

From: Dan Williams <hidden>
Date: 2015-05-13 16:00:54
Also in: linux-arm-kernel, lkml

On Wed, May 13, 2015 at 2:17 AM, Maxime Ripard
[off-list ref] wrote:
Hi Dan,

On Tue, May 12, 2015 at 09:05:41AM -0700, Dan Williams wrote:
quoted
On Tue, May 12, 2015 at 8:37 AM, Maxime Ripard
[off-list ref] wrote:
quoted
Hi,

This serie refactors the mv_xor in order to support the latest Armada
38x features, including the PQ support in order to offload the RAID6
PQ operations.

Not all the PQ operations are supported by the XOR engine, so we had
to introduce new async_tx flags in the process to identify
un-supported operations.

Please note that this is currently not usable because of a possible
regression in the RAID stack in 4.1 that is being discussed at the
moment here: https://lkml.org/lkml/2015/5/7/527
This is problematic as async_tx is a wart on the dmaengine subsystem
and needs to be deprecated, I just have yet to find the time to do
that work.  It turns out it was a mistake to hide the device details
from md, it should be explicitly managing the dma channels, not
relying on a abstraction api.  The async_tx api usage of the
dma-mapping api is broken in that it relies on overlapping mappings of
the same address.  This happens to work on x86, but on arm it needs
explicit non-overlapping mappings.  I started the work to reference
count dma-mappings in 3.13, and we need to teach md to use
dmaengine_unmap_data explicitly.  Yielding dma channel management to
md also results in a more efficient implementation as we can dma_map()
the stripe cache once rather than per-io.  The  "async_tx_ack()"
disaster can also go away when md is explicitly handling channel
switching.
Even though I'd be very much in favor of deprecating / removing
async_tx, is it something likely to happen soon?
Not unless someone else takes it on, I'm actively asking for help.
I remember discussing this with Vinod at Plumbers back in October, but
haven't seen anything since then.
Right, "help!" :)
If not, I think that we shouldn't really hold back patches to
async_tx, even though we know than in a year from now, it's going to
be gone.
We definitely should block new usages, because they make a bad
situation worse.  Russell already warned that the dma_mapping api
abuse could lead to data corruption on ARM (speculative pre-fetching).
We need to mark ASYNC_TX_DMA as "depends on !ARM" or even "depends on
BROKEN" until we can get this resolved.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help