|
@@ -1283,6 +1283,10 @@ static int __iommu_attach_device(struct iommu_domain *domain,
|
|
|
struct device *dev)
|
|
|
{
|
|
|
int ret;
|
|
|
+ if ((domain->ops->is_attach_deferred != NULL) &&
|
|
|
+ domain->ops->is_attach_deferred(domain, dev))
|
|
|
+ return 0;
|
|
|
+
|
|
|
if (unlikely(domain->ops->attach_dev == NULL))
|
|
|
return -ENODEV;
|
|
|
|
|
@@ -1324,6 +1328,10 @@ EXPORT_SYMBOL_GPL(iommu_attach_device);
|
|
|
static void __iommu_detach_device(struct iommu_domain *domain,
|
|
|
struct device *dev)
|
|
|
{
|
|
|
+ if ((domain->ops->is_attach_deferred != NULL) &&
|
|
|
+ domain->ops->is_attach_deferred(domain, dev))
|
|
|
+ return;
|
|
|
+
|
|
|
if (unlikely(domain->ops->detach_dev == NULL))
|
|
|
return;
|
|
|
|