Re: [PATCH 07/11] iommu/arm-smmu: Make use of the iommu_register interface

From: Robin Murphy
Date: Fri Feb 10 2017 - 12:08:14 EST


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
>