summaryrefslogtreecommitdiff
path: root/arch/arm64
diff options
context:
space:
mode:
authorAlex Shi <alex.shi@linaro.org>2017-11-16 04:03:33 (GMT)
committerAlex Shi <alex.shi@linaro.org>2017-11-16 04:03:33 (GMT)
commit56f4a560c6d6318b5a8e18a1b3e44909a5158d1e (patch)
tree3193b43eebd2cde7b13de9eb4b37cb5a1dccfdd0 /arch/arm64
parent3871608e4cb995b0fb9c630da9ac45b246151fef (diff)
parent9b609ba2c2df8290054e5c62be69101b43e2a976 (diff)
downloadlinux-56f4a560c6d6318b5a8e18a1b3e44909a5158d1e.tar.xz
Merge tag 'v4.9.62' into linux-linaro-lsk-v4.9
This is the 4.9.62 stable release
Diffstat (limited to 'arch/arm64')
-rw-r--r--arch/arm64/mm/dma-mapping.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index b5bf46c..cab3574 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -836,14 +836,21 @@ static bool do_iommu_attach(struct device *dev, const struct iommu_ops *ops,
* then the IOMMU core will have already configured a group for this
* device, and allocated the default domain for that group.
*/
- if (!domain || iommu_dma_init_domain(domain, dma_base, size, dev)) {
- pr_warn("Failed to set up IOMMU for device %s; retaining platform DMA ops\n",
- dev_name(dev));
- return false;
+ if (!domain)
+ goto out_err;
+
+ if (domain->type == IOMMU_DOMAIN_DMA) {
+ if (iommu_dma_init_domain(domain, dma_base, size, dev))
+ goto out_err;
+
+ dev->archdata.dma_ops = &iommu_dma_ops;
}
- dev->archdata.dma_ops = &iommu_dma_ops;
return true;
+out_err:
+ pr_warn("Failed to set up IOMMU for device %s; retaining platform DMA ops\n",
+ dev_name(dev));
+ return false;
}
static void queue_iommu_attach(struct device *dev, const struct iommu_ops *ops,