Re: [PATCH v2 11/13] iommu/rockchip: Use OF_IOMMU to attach devices automatically

JeffyChen
2018-01-17T07:20:46Z

Hi Tomasz,

Thanks for your reply.

On 01/17/2018 01:44 PM, Tomasz Figa wrote:
> On Tue, Jan 16, 2018 at 10:25 PM, Jeffy Chen <jeffy.chen-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote:
>> Converts the rockchip-iommu driver to use the OF_IOMMU infrastructure,
>> which allows attaching master devices to their IOMMUs automatically
>> according to DT properties.
>>
>> Signed-off-by: Jeffy Chen <jeffy.chen-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
>> ---
>>
>> Changes in v2: None
>>
>> drivers/iommu/rockchip-iommu.c | 116 +++++++++++------------------------------
>> 1 file changed, 31 insertions(+), 85 deletions(-)
>>
>> diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c
>> index 51e4f982c4a6..c2d3ac82184e 100644
>> --- a/drivers/iommu/rockchip-iommu.c
>> +++ b/drivers/iommu/rockchip-iommu.c
> [snip]
>> +static int rk_iommu_of_xlate(struct device *dev,
>> + struct of_phandle_args *args)
>> +{
>> + struct platform_device *iommu_dev;
>> +
>> + iommu_dev = of_find_device_by_node(args->np);
>> + if (!iommu_dev) {
>> + dev_err(dev, "iommu %pOF not found\n", args->np);
>> + return -ENODEV;
>> + }
>> +
>> + dev->archdata.iommu = platform_get_drvdata(iommu_dev);
>
> This will work only if that iommu was already probed. Do we have any
> guarantees that this callback is not called earlier?
in of_iommu.c, the of_iommu_xlate would check for fwnode before calling
this.

but it's possible the probe failed after calling
iommu_device_set_fwnode, so i'll try to add some checks here, and maybe
adjust probe() to prevent it too.

>
> Best regards,
> Tomasz
>
>
>