diff options
| author | Dan Williams <dan.j.williams@intel.com> | 2009-03-25 12:13:25 -0400 |
|---|---|---|
| committer | Dan Williams <dan.j.williams@intel.com> | 2009-03-25 12:13:25 -0400 |
| commit | 06164f3194e01ea4c76941ac60f541d656c8975f (patch) | |
| tree | 0a5edc96e053ce0cf90139b48bc2ca7c7c130186 | |
| parent | 54aee6a5f560d0e1bf3f39987c6ebe06daeb0ce1 (diff) | |
async_tx: provide __async_inline for HAS_DMA=n archs
To allow an async_tx routine to be compiled away on HAS_DMA=n arch it
needs to be declared __always_inline otherwise the compiler may emit
code and cause a link error.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
| -rw-r--r-- | crypto/async_tx/async_xor.c | 7 | ||||
| -rw-r--r-- | include/linux/async_tx.h | 9 |
2 files changed, 11 insertions, 5 deletions
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c index 595b78672b36..95fe2c8d6c51 100644 --- a/crypto/async_tx/async_xor.c +++ b/crypto/async_tx/async_xor.c | |||
| @@ -30,11 +30,8 @@ | |||
| 30 | #include <linux/raid/xor.h> | 30 | #include <linux/raid/xor.h> |
| 31 | #include <linux/async_tx.h> | 31 | #include <linux/async_tx.h> |
| 32 | 32 | ||
| 33 | /* do_async_xor - dma map the pages and perform the xor with an engine. | 33 | /* do_async_xor - dma map the pages and perform the xor with an engine */ |
| 34 | * This routine is marked __always_inline so it can be compiled away | 34 | static __async_inline struct dma_async_tx_descriptor * |
| 35 | * when CONFIG_DMA_ENGINE=n | ||
| 36 | */ | ||
| 37 | static __always_inline struct dma_async_tx_descriptor * | ||
| 38 | do_async_xor(struct dma_chan *chan, struct page *dest, struct page **src_list, | 35 | do_async_xor(struct dma_chan *chan, struct page *dest, struct page **src_list, |
| 39 | unsigned int offset, int src_cnt, size_t len, | 36 | unsigned int offset, int src_cnt, size_t len, |
| 40 | enum async_tx_flags flags, | 37 | enum async_tx_flags flags, |
diff --git a/include/linux/async_tx.h b/include/linux/async_tx.h index 45f6297821bd..5fc2ef8d97fa 100644 --- a/include/linux/async_tx.h +++ b/include/linux/async_tx.h | |||
| @@ -21,6 +21,15 @@ | |||
| 21 | #include <linux/spinlock.h> | 21 | #include <linux/spinlock.h> |
| 22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
| 23 | 23 | ||
| 24 | /* on architectures without dma-mapping capabilities we need to ensure | ||
| 25 | * that the asynchronous path compiles away | ||
| 26 | */ | ||
| 27 | #ifdef CONFIG_HAS_DMA | ||
| 28 | #define __async_inline | ||
| 29 | #else | ||
| 30 | #define __async_inline __always_inline | ||
| 31 | #endif | ||
| 32 | |||
| 24 | /** | 33 | /** |
| 25 | * dma_chan_ref - object used to manage dma channels received from the | 34 | * dma_chan_ref - object used to manage dma channels received from the |
| 26 | * dmaengine core. | 35 | * dmaengine core. |
