Messages in this thread | | | Subject | Re: [PATCH 07/11] iommu/arm-smmu: Make use of the iommu_register interface | From | Robin Murphy <> | Date | Fri, 10 Feb 2017 17:07:47 +0000 |
| |
On 10/02/17 15:25, Joerg Roedel wrote: > On Fri, Feb 10, 2017 at 02:20:34PM +0000, Robin Murphy wrote: >>> @@ -1795,8 +1798,10 @@ static int arm_smmu_add_device(struct device *dev) >>> } >>> >>> group = iommu_group_get_for_dev(dev); >>> - if (!IS_ERR(group)) >>> + if (!IS_ERR(group)) { >>> iommu_group_put(group); >>> + iommu_device_link(&smmu->iommu, dev); >> >> Given the coupling evident from this and the other patches, might it >> work to simply do the linking/unlinking automatically in >> iommu_group_{add,remove}_device()? > > Yes, this is one of the goals too. But currently we don't have a generic > device->hw_iommu mapping in the iommu-code which would allow to call > the link/unlink functions in generic code too.
At some point we should change the iommu_ops pointer in iommu_fwspec for an iommu_device pointer - that would then give us an easy dev->fwpec->hw_iommu relationship which is mostly managed by core code already. In the meantime I was imagining just passing it around, something like iommu_group_add_device(hw_iommu, group, dev), but now I suspect that'd be running up against a similar objection to before ;)
Robin.
> > But changing this is one of the next things on my list :) > > > > Joerg >
| |