On Mon, May 09, 2022 at 10:59:11AM +0100, Robin Murphy wrote: > IOMMU_DOMAIN_DMA_FQ now effectively takes over the original > semantics of IOMMU_DOMAIN_DMA as the one that depends on > driver-specific functionality.
If I grasp the FQ stuff right, it seems that this only requires the driver to implement ops->flush_iotlb_all()? I don't see anything obvious in any driver that is specifically _FQ related? If yes, it makes me wonder why I see drivers implementing ops->flush_iotlb_all() but not supporting the _FQ domain during alloc? Further, if yes, wouldn't it make sense to just trigger FQ based on domain->op->flush_iotlb_all being set? It seems like there is some confusion here, because I see the sysfs default domain store path just does this: /* We can bring up a flush queue without tearing down the domain */ if (type == IOMMU_DOMAIN_DMA_FQ && prev_dom->type == IOMMU_DOMAIN_DMA) { ret = iommu_dma_init_fq(prev_dom); if (!ret) prev_dom->type = IOMMU_DOMAIN_DMA_FQ; goto out; } Which will allow a driver that rejected creating DMA_FQ during alloc to end up with DMA_FQ anyhow??? > FWIW, mtk-iommu doesn't really have any need to reject > IOMMU_DOMAIN_UNMANAGED, they just don't have any relevant client drivers > that want it; Ok.. > however arm-smmu definitely does need to continue rejecting > IOMMU_DOMAIN_DMA when it can't rely on the DT code ensuring the > correct probe ordering with the old DT binding (otherwise client > drivers are liable to get broken DMA ops). I saw this code and wondered what it does? smmu alloc_domain returns NULL, which if I read everything right causes NULL to become the default_domain. But then what happens? This driver has no detach_dev so after, say VFIO does stuff, how do we get back into whatever boot-time state NULL represents? Is it OK because dev_iommu_priv_get() in arm_smmu_attach_dev() will always fail if legacy? If that is the case then why allow allocating any domain at all? It feels like this really wants a 'IOMMU_DOMAIN_PLATFORM_DMA_OPS' set as the default_domain meaning that when that domain is assigned, the platform's DMA ops are handling the iommu? If I get it right.. Anyhow, thanks, this sort of helps confirm my feeling that the domain types are a little crufty.. Thanks, Jason _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu