|
@@ -367,6 +367,9 @@ static dma_addr_t iommu_dma_alloc_iova(struct iommu_domain *domain,
|
|
if (iova_len < (1 << (IOVA_RANGE_CACHE_MAX_SIZE - 1)))
|
|
if (iova_len < (1 << (IOVA_RANGE_CACHE_MAX_SIZE - 1)))
|
|
iova_len = roundup_pow_of_two(iova_len);
|
|
iova_len = roundup_pow_of_two(iova_len);
|
|
|
|
|
|
|
|
+ if (dev->bus_dma_mask)
|
|
|
|
+ dma_limit &= dev->bus_dma_mask;
|
|
|
|
+
|
|
if (domain->geometry.force_aperture)
|
|
if (domain->geometry.force_aperture)
|
|
dma_limit = min(dma_limit, domain->geometry.aperture_end);
|
|
dma_limit = min(dma_limit, domain->geometry.aperture_end);
|
|
|
|
|