async_xor: permit callers to pass in a 'dma/page scribble' region
authorDan Williams <dan.j.williams@intel.com>
Wed, 3 Jun 2009 21:22:28 +0000 (14:22 -0700)
committerDan Williams <dan.j.williams@intel.com>
Wed, 3 Jun 2009 21:22:28 +0000 (14:22 -0700)
commit04ce9ab385dc97eb55299d533cd3af79b8fc7529
tree9b8d0b9c1eba820a8a107d05abc2e2f8d4d20a59
parenta08abd8ca890a377521d65d493d174bebcaf694b
async_xor: permit callers to pass in a 'dma/page scribble' region

async_xor() needs space to perform dma and page address conversions.  In
most cases the code can simply reuse the struct page * array because the
size of the native pointer matches the size of a dma/page address.  In
order to support archs where sizeof(dma_addr_t) is larger than
sizeof(struct page *), or to preserve the input parameters, we utilize a
memory region passed in by the caller.

Since the code is now prepared to handle the case where it cannot
perform address conversions on the stack, we no longer need the
!HIGHMEM64G dependency in drivers/dma/Kconfig.

[ Impact: don't clobber input buffers for address conversions ]

Reviewed-by: Andre Noll <maan@systemlinux.org>
Acked-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Documentation/crypto/async-tx-api.txt
crypto/async_tx/async_xor.c
drivers/dma/Kconfig