diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2014-02-27 07:24:57 -0500 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2014-02-27 09:11:53 -0500 |
commit | 3690951fc6d42f3a0903987677d0e592c49dd8db (patch) | |
tree | 7f4e0c36960b591263bd591180631b403d578c27 | |
parent | 19e7640d1f2302c20df2733e3e3df49acb17189e (diff) |
arm64: Use swiotlb late initialisation
Since arm64 does not support ISA, there is no need for early swiotlb
initialisation. This patch switches the DMA mapping code to
swiotlb_tlb_late_init_with_default_size(). A side effect of this is that
GFP_DMA is used for the swiotlb buffer and devices with a 32-bit
coherent mask are correctly supported.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
-rw-r--r-- | arch/arm64/mm/dma-mapping.c | 10 | ||||
-rw-r--r-- | arch/arm64/mm/init.c | 2 |
2 files changed, 8 insertions, 4 deletions
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index 26b2512c1fcd..afa91a26a72b 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c | |||
@@ -93,11 +93,17 @@ static struct dma_map_ops coherent_swiotlb_dma_ops = { | |||
93 | .mapping_error = swiotlb_dma_mapping_error, | 93 | .mapping_error = swiotlb_dma_mapping_error, |
94 | }; | 94 | }; |
95 | 95 | ||
96 | void __init arm64_swiotlb_init(void) | 96 | extern int swiotlb_late_init_with_default_size(size_t default_size); |
97 | |||
98 | static int __init swiotlb_late_init(void) | ||
97 | { | 99 | { |
100 | size_t swiotlb_size = min(SZ_64M, MAX_ORDER_NR_PAGES << PAGE_SHIFT); | ||
101 | |||
98 | dma_ops = &coherent_swiotlb_dma_ops; | 102 | dma_ops = &coherent_swiotlb_dma_ops; |
99 | swiotlb_init(1); | 103 | |
104 | return swiotlb_late_init_with_default_size(swiotlb_size); | ||
100 | } | 105 | } |
106 | subsys_initcall(swiotlb_late_init); | ||
101 | 107 | ||
102 | #define PREALLOC_DMA_DEBUG_ENTRIES 4096 | 108 | #define PREALLOC_DMA_DEBUG_ENTRIES 4096 |
103 | 109 | ||
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index a61a4d560d12..88627c450a6c 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c | |||
@@ -262,8 +262,6 @@ static void __init free_unused_memmap(void) | |||
262 | */ | 262 | */ |
263 | void __init mem_init(void) | 263 | void __init mem_init(void) |
264 | { | 264 | { |
265 | arm64_swiotlb_init(); | ||
266 | |||
267 | max_mapnr = pfn_to_page(max_pfn + PHYS_PFN_OFFSET) - mem_map; | 265 | max_mapnr = pfn_to_page(max_pfn + PHYS_PFN_OFFSET) - mem_map; |
268 | 266 | ||
269 | #ifndef CONFIG_SPARSEMEM_VMEMMAP | 267 | #ifndef CONFIG_SPARSEMEM_VMEMMAP |