diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-10-27 17:07:45 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-10-27 17:07:45 +0900 |
commit | 94c285108e4551157ecc1b8156921712138fa860 (patch) | |
tree | 5eed34d9e097a81542c8c640b19fb264d071518a /arch/sh/mm | |
parent | 4c978ca3194a4002407a85b15122f793efc8616b (diff) | |
download | linux-3.10-94c285108e4551157ecc1b8156921712138fa860.tar.gz linux-3.10-94c285108e4551157ecc1b8156921712138fa860.tar.bz2 linux-3.10-94c285108e4551157ecc1b8156921712138fa860.zip |
sh: Bump up dma_ops initialization far earlier in the boot process.
Presently this was tacked on to the dma debug init bits from
fs_initcall(), which is far too late for devices setting up their own
per-device coherent areas.
Throw this in the beginning of mem_init(), as per the x86 iommu
allocation.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/mm')
-rw-r--r-- | arch/sh/mm/consistent.c | 2 | ||||
-rw-r--r-- | arch/sh/mm/init.c | 11 |
2 files changed, 11 insertions, 2 deletions
diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c index ef20bbabefa..902967e3f84 100644 --- a/arch/sh/mm/consistent.c +++ b/arch/sh/mm/consistent.c @@ -27,8 +27,6 @@ EXPORT_SYMBOL(dma_ops); static int __init dma_init(void) { dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - no_iommu_init(); return 0; } fs_initcall(dma_init); diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index c8af6c5fa58..432acd07e76 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c @@ -15,6 +15,7 @@ #include <linux/pagemap.h> #include <linux/percpu.h> #include <linux/io.h> +#include <linux/dma-mapping.h> #include <asm/mmu_context.h> #include <asm/tlb.h> #include <asm/cacheflush.h> @@ -186,11 +187,21 @@ void __init paging_init(void) set_fixmap_nocache(FIX_UNCACHED, __pa(&__uncached_start)); } +/* + * Early initialization for any I/O MMUs we might have. + */ +static void __init iommu_init(void) +{ + no_iommu_init(); +} + void __init mem_init(void) { int codesize, datasize, initsize; int nid; + iommu_init(); + num_physpages = 0; high_memory = NULL; |