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

From: Tomasz Figa
Date: Wed Jan 17 2018 - 00:44:55 EST


On Tue, Jan 16, 2018 at 10:25 PM, Jeffy Chen <jeffy.chen@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxx>
> ---
>
> 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?

Best regards,
Tomasz