[GIT PULL] dmaengine/async_tx fixes for 2.6.33-rc3

From: Dan Williams
Date: Wed Dec 30 2009 - 16:24:34 EST


Hi Linus, please pull from:

git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx.git fixes

...to receive:

Dan Williams (4):
ioat3: fix p-disabled q-continuation
async_tx: expand async raid6 test to cover ioatdma corner case
ioat2,3: put channel hardware in known state at init
Merge branch 'ioat' into fixes

Guennadi Liakhovetski (1):
sh: fix DMA driver's descriptor chaining and cookie assignment

Julia Lawall (2):
drivers/dma: drop unnecesary memset
drivers/dma: Correct use after free

Nicolas Ferre (1):
dma: at_hdmac: correct incompatible type for argument 1 of 'spin_lock_bh'

1/ A shdma fix from Guennadi that has been pending for a while, but
finally acked by the original driver author.
2/ Some Coccinelle fixes from Julia.
3/ A typo fix in at_hdmac from Nicolas.
4/ Two ioatdma driver fixes, one for a kexec reboot regression reported
by Roland, and a descriptor processing error when performing raid
recovery on a 11 or 12-disk raid6 array.

All of these have been in -next for a week or so. Maciej has also
recently acked them, but to preserve the commit-ids I did not rebase.

crypto/async_tx/raid6test.c | 7 +
drivers/dma/at_hdmac.c | 4 +-
drivers/dma/coh901318.c | 2 +-
drivers/dma/dw_dmac.c | 2 -
drivers/dma/ioat/dma.c | 2 +-
drivers/dma/ioat/dma.h | 18 +++
drivers/dma/ioat/dma_v2.c | 69 +++++++---
drivers/dma/ioat/dma_v2.h | 2 +
drivers/dma/ioat/dma_v3.c | 60 ++++++--
drivers/dma/ioat/registers.h | 1 +
drivers/dma/shdma.c | 324 +++++++++++++++++++++++++++---------------
drivers/dma/shdma.h | 9 +-
12 files changed, 341 insertions(+), 159 deletions(-)

One note, this diffstat was created by hand via a test merge branch as
the one created by 'git request-pull' was:

806 files changed, 13676 insertions(+), 6334 deletions(-)

Not sure where that came from, the 'fixes' branch was based on
2.6.32-rc6 while the ioat changes were based on 2.6.32.

--
Dan


commit f80ca163d65903276bec7045a484a79c0897eb2d
Merge: 0794ec8 a6d52d7
Author: Dan Williams <dan.j.williams@xxxxxxxxx>
Date: Tue Dec 22 17:21:47 2009 -0700

Merge branch 'ioat' into fixes

commit 0794ec8ce327ec74416b569b8fb1951274693700
Author: Julia Lawall <julia@xxxxxxx>
Date: Tue Dec 22 21:30:59 2009 +0100

drivers/dma: Correct use after free

Move the kfree after the iounmap that refers to the same structure.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
expression x,e;
identifier f;
iterator I;
statement S;
@@

*kfree(x);
... when != &x
when != x = e
when != I(x,...) S
*x->f
// </smpl>

Signed-off-by: Julia Lawall <julia@xxxxxxx>
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

commit 1e9d1b13efae7e0a2705611d47ae5f07e27015f0
Author: Julia Lawall <julia@xxxxxxx>
Date: Sat Dec 19 08:30:30 2009 +0100

drivers/dma: drop unnecesary memset

memset of 0 is not needed after kzalloc

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression x;
statement S;
@@

x = kzalloc(...);
if (x == NULL) S
... when != x
-memset(x,0,...);// </smpl>

Signed-off-by: Julia Lawall <julia@xxxxxxx>
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

commit a6d52d70677e99bdb89b6921c265d0a58c22e597
Author: Dan Williams <dan.j.williams@xxxxxxxxx>
Date: Sat Dec 19 15:36:02 2009 -0700

ioat2,3: put channel hardware in known state at init

Put the ioat2 and ioat3 state machines in the halted state with all
errors cleared.

The ioat1 init path is not disturbed for stability, there are no
reported ioat1 initiaization issues.

Cc: <stable@xxxxxxxxxx>
Reported-by: Roland Dreier <rdreier@xxxxxxxxx>
Tested-by: Roland Dreier <rdreier@xxxxxxxxx>
Acked-by: Simon Horman <horms@xxxxxxxxxxxx>
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

commit e02a0e47a3f061c1a53fc4376332a988ec047e8a
Author: Dan Williams <dan.j.williams@xxxxxxxxx>
Date: Thu Dec 17 13:55:38 2009 -0700

async_tx: expand async raid6 test to cover ioatdma corner case

Add explicit 11 and 12 disks cases to exercise the 0 < src_cnt % 8 < 3
corner case in the ioatdma driver.

Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

commit cd78809f6191485a90ea6c92c2b58900ab5c156f
Author: Dan Williams <dan.j.williams@xxxxxxxxx>
Date: Thu Dec 17 13:52:39 2009 -0700

ioat3: fix p-disabled q-continuation

When continuing a pq calculation the driver needs 3 extra sources. The
driver can perform a 3 source calculation with a single descriptor, but
needs an extended descriptor to process up to 8 sources in one
operation. However, in the p-disabled case only one extra source is
needed. When continuing a p-disabled operation there are occasions
(i.e. 0 < src_cnt % 8 < 3) where the tail operation does not need an
extended descriptor. Properly account for this fact otherwise invalid
'dmacount' values will be written to hardware usually causing the
channel to halt with 'invalid descriptor' errors.

Cc: <stable@xxxxxxxxxx>
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

commit 3542a113ab2f5880f1b62e5909d754250fb57d6b
Author: Guennadi Liakhovetski <g.liakhovetski@xxxxxx>
Date: Thu Dec 17 09:41:39 2009 -0700

sh: fix DMA driver's descriptor chaining and cookie assignment

The SH DMA driver wrongly assigns negative cookies to transfer descriptors,
also, its chaining of partial descriptors is broken. The latter problem is
usually invisible, because maximum transfer size per chunk is 16M, but if you
artificially set this limit lower, the driver fails. Since cookies are also
used in chunk management, both these problems are fixed in one patch. As side
effects a possible memory leak, when descriptors are prepared, but not
submitted, and multiple races have also been fixed.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@xxxxxx>
Acked-by: Paul Mundt <lethal@xxxxxxxxxxxx>
Acked-by: Nobuhiro Iwamatsu <iwamatsu@xxxxxxxxxxx>
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

commit 4297a462f455e38f08976df7b16c849614a287da
Author: Nicolas Ferre <nicolas.ferre@xxxxxxxxx>
Date: Wed Dec 16 16:28:03 2009 +0100

dma: at_hdmac: correct incompatible type for argument 1 of 'spin_lock_bh'

Correct a typo error in locking calls.

Cc: <stable@xxxxxxxxxx>
Signed-off-by: Nicolas Ferre <nicolas.ferre@xxxxxxxxx>
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/