On Fri, Sep 06, 2019 at 02:44:01PM -0700, Rob Clark wrote: > @@ -674,7 +674,7 @@ int iommu_group_add_device(struct iommu_group *group, struct device *dev) > > mutex_lock(&group->mutex); > list_add_tail(&device->list, &group->devices); > - if (group->domain) > + if (group->domain && !(dev->driver && dev->driver->driver_manages_iommu)) Hmm, this code usually runs at enumeration time when no driver is attached to the device. Actually it would be pretty dangerous when this code runs while a driver is attached to the device. How does that change make things work for you? Regards, Joerg