return 0;
 }
 
-static void __iommu_detach_device(struct iommu_domain *domain,
-                                 struct device *dev)
-{
-       domain->ops->detach_dev(domain, dev);
-       trace_detach_device_from_domain(dev);
-}
-
 void iommu_detach_device(struct iommu_domain *domain, struct device *dev)
 {
        struct iommu_group *group;
 }
 EXPORT_SYMBOL_GPL(iommu_attach_group);
 
-static int iommu_group_do_detach_device(struct device *dev, void *data)
-{
-       struct iommu_domain *domain = data;
-
-       __iommu_detach_device(domain, dev);
-
-       return 0;
-}
-
 static int iommu_group_do_set_platform_dma(struct device *dev, void *data)
 {
        const struct iommu_ops *ops = dev_iommu_ops(dev);
                return 0;
 
        /*
-        * New drivers should support default domains and so the detach_dev() op
-        * will never be called. Otherwise the NULL domain represents some
+        * New drivers should support default domains, so set_platform_dma()
+        * op will never be called. Otherwise the NULL domain represents some
         * platform specific behavior.
         */
        if (!new_domain) {
-               struct group_device *grp_dev;
-
-               grp_dev = list_first_entry(&group->devices,
-                                          struct group_device, list);
-
-               if (dev_iommu_ops(grp_dev->dev)->set_platform_dma_ops)
-                       __iommu_group_for_each_dev(group, NULL,
-                                       iommu_group_do_set_platform_dma);
-               else if (group->domain->ops->detach_dev)
-                       __iommu_group_for_each_dev(group, group->domain,
-                                       iommu_group_do_detach_device);
-               else
-                       WARN_ON_ONCE(1);
-
+               __iommu_group_for_each_dev(group, NULL,
+                                          iommu_group_do_set_platform_dma);
                group->domain = NULL;
                return 0;
        }
 
  * * EBUSY     - device is attached to a domain and cannot be changed
  * * ENODEV    - device specific errors, not able to be attached
  * * <others>  - treated as ENODEV by the caller. Use is discouraged
- * @detach_dev: detach an iommu domain from a device
  * @set_dev_pasid: set an iommu domain to a pasid of device
  * @map: map a physically contiguous memory region to an iommu domain
  * @map_pages: map a physically contiguous set of pages of the same size to
  */
 struct iommu_domain_ops {
        int (*attach_dev)(struct iommu_domain *domain, struct device *dev);
-       void (*detach_dev)(struct iommu_domain *domain, struct device *dev);
        int (*set_dev_pasid)(struct iommu_domain *domain, struct device *dev,
                             ioasid_t pasid);