diff options
author | Robin Getz <robin.getz@analog.com> | 2009-04-23 20:49:43 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-06-12 06:11:27 -0400 |
commit | fecbd7366bf5a39eaae2c03541f0b412f319534f (patch) | |
tree | b8b034938d916cc3398708ff6a0749f871a64828 /arch/blackfin/include/asm/dma.h | |
parent | f5879fda09ea98d7aa845a0e0fa7e508452e5f9f (diff) | |
download | op-kernel-dev-fecbd7366bf5a39eaae2c03541f0b412f319534f.zip op-kernel-dev-fecbd7366bf5a39eaae2c03541f0b412f319534f.tar.gz |
Blackfin: fix early L1 relocation crash
Our early L1 relocate code may implicitly call code which lives in L1
memory. This is due to the dma_memcpy() rewrite that made the DMA code
lockless and safe to be used by multiple processes. If we start the
early DMA memcpy to relocate things into L1 instruction but then our
DMA memcpy code calls a function that lives in L1, things fall apart.
As such, create a small dedicated DMA memcpy routine that we can assume
sanity at boot time.
Reported-by: Filip Van Rillaer <filip.vanrillaer@oneaccess-net.com>
Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/include/asm/dma.h')
-rw-r--r-- | arch/blackfin/include/asm/dma.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/blackfin/include/asm/dma.h b/arch/blackfin/include/asm/dma.h index e4f7b80..46c5618 100644 --- a/arch/blackfin/include/asm/dma.h +++ b/arch/blackfin/include/asm/dma.h @@ -253,5 +253,7 @@ static inline void clear_dma_irqstat(unsigned int channel) void *dma_memcpy(void *dest, const void *src, size_t count); void *safe_dma_memcpy(void *dest, const void *src, size_t count); void blackfin_dma_early_init(void); +void early_dma_memcpy(void *dest, const void *src, size_t count); +void early_dma_memcpy_done(void); #endif |