arm64: Use swiotlb late initialisation
authorCatalin Marinas <catalin.marinas@arm.com>
Fri, 9 May 2014 14:58:18 +0000 (15:58 +0100)
committerMark Brown <broonie@linaro.org>
Mon, 12 May 2014 17:10:22 +0000 (18:10 +0100)
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>
(cherry picked from commit 3690951fc6d42f3a0903987677d0e592c49dd8db)
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Conflicts:
arch/arm64/mm/init.c
Signed-off-by: Mark Brown <broonie@linaro.org>
arch/arm64/mm/dma-mapping.c
arch/arm64/mm/init.c

index 1baca2efb234211255b6edec89c20bfd8ac4b0fc..a48f1da828f6dc733463b7f6f80f05d4b4a0d198 100644 (file)
@@ -248,11 +248,17 @@ struct dma_map_ops coherent_swiotlb_dma_ops = {
 };
 EXPORT_SYMBOL(coherent_swiotlb_dma_ops);
 
-void __init arm64_swiotlb_init(void)
+extern int swiotlb_late_init_with_default_size(size_t default_size);
+
+static int __init swiotlb_late_init(void)
 {
+       size_t swiotlb_size = min(SZ_64M, MAX_ORDER_NR_PAGES << PAGE_SHIFT);
+
        dma_ops = &coherent_swiotlb_dma_ops;
-       swiotlb_init(1);
+
+       return swiotlb_late_init_with_default_size(swiotlb_size);
 }
+subsys_initcall(swiotlb_late_init);
 
 #define PREALLOC_DMA_DEBUG_ENTRIES     4096
 
index 63f679b276b6a74c322d7b27c6f838a970f3761f..fa3651855334491f2e3c0b4c0bc2097635a6816b 100644 (file)
@@ -287,8 +287,6 @@ void __init mem_init(void)
        unsigned long reserved_pages, free_pages;
        struct memblock_region *reg;
 
-       arm64_swiotlb_init();
-
        max_mapnr   = pfn_to_page(max_pfn + PHYS_PFN_OFFSET) - mem_map;
 
 #ifndef CONFIG_SPARSEMEM_VMEMMAP