summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Daly <pdaly@codeaurora.org>2016-08-02 14:02:49 -0700
committerPatrick Daly <pdaly@codeaurora.org>2016-08-12 18:50:33 -0700
commit2d221c0799805437398df73666a7380df8dcd9bf (patch)
treeb144596bfba415aa2c6221e00c000a4728afe18b
parente94b446eac88a43e42ecde105275d48b677ea5b3 (diff)
arm/arm64: dma-mapping: Fix iova region size
Clients may have additional mappings in an iommu domain which are not managed by arm_iommu_create_mapping. As such, it is important that arm_iommu_create_mapping only use the iova region specified by the client. However, the current implementation rounds the size of the region up to a 256K boundary (on arm64). Change-Id: I88ddd98a76b39e3e9126d78da8e725491f2a5b32 Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
-rw-r--r--arch/arm/mm/dma-mapping.c2
-rw-r--r--arch/arm64/mm/dma-mapping.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index d41957eae6ef..f5dab4e9fb4b 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -2078,7 +2078,7 @@ arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size)
mapping->nr_bitmaps = 1;
mapping->extensions = extensions;
mapping->base = base;
- mapping->bits = BITS_PER_BYTE * bitmap_size;
+ mapping->bits = bits;
spin_lock_init(&mapping->lock);
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index 06f9ffccd562..196c73e2cf9c 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -2064,7 +2064,7 @@ arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size)
goto err2;
mapping->base = base;
- mapping->bits = BITS_PER_BYTE * bitmap_size;
+ mapping->bits = bits;
spin_lock_init(&mapping->lock);
mapping->domain = iommu_domain_alloc(bus);