On 30/08/2018 05:09, Lu Baolu wrote: > +static int vfio_detach_aux_domain(struct device *dev, void *data) > +{ > + struct iommu_domain *domain = data; > + > + vfio_mdev_set_aux_domain(dev, NULL); > + iommu_detach_device(domain, dev->parent); I think that's only going to work for vt-d, which doesn't use a default_domain. For other drivers, iommu.c ends up calling domain->ops->attach_dev(default_domain, dev) here, which isn't what we want. That was my concern with reusing attach/detach_dev callbacks for PASID management. The attach_dev code of IOMMU drivers already has to deal with toggling between default and unmanaged domain. Dealing with more state transitions in the same path is going to be difficult. Thanks, Jean