On Wed, Aug 23, 2023 at 01:47:22PM -0300, Jason Gunthorpe wrote: > Except for dart (which forces IOMMU_DOMAIN_DMA) every driver returns 0 or > IDENTITY from ops->def_domain_type(). > > The drivers that return IDENTITY have some kind of good reason, typically > that quirky hardware really can't support anything other than IDENTITY. > > Arrange things so that if the driver says it needs IDENTITY then > iommu_get_default_domain_type() either fails or returns IDENTITY. It will > not ignore the driver's override to IDENTITY. > > Split the function into two steps, reducing the group device list to the > driver's def_domain_type() and the untrusted flag. > > Then compute the result based on those two reduced variables. Fully reject > combining untrusted with IDENTITY. > > Remove the debugging print on the iommu_group_store_type() failure path, > userspace should not be able to trigger kernel prints. > > This makes the next patch cleaner that wants to force IDENTITY always for > ARM_IOMMU because there is no support for DMA. > > Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > --- > drivers/iommu/iommu.c | 117 ++++++++++++++++++++++++++++-------------- > 1 file changed, 79 insertions(+), 38 deletions(-) > Reviewed-by: Jerry Snitselaar <jsnitsel@xxxxxxxxxx>