RE: [RFC 1/2] of: reserved_mem: check return value of_dma_configure
From: Peng Fan
Date: Sun Nov 26 2017 - 23:19:54 EST
> -----Original Message-----
> From: Peng Fan
> Sent: Sunday, November 26, 2017 9:14 PM
> To: hch@xxxxxx; m.szyprowski@xxxxxxxxxxx; robin.murphy@xxxxxxx;
> gregkh@xxxxxxxxxxxxxxxxxxx; robh+dt@xxxxxxxxxx; frowand.list@xxxxxxxxx
> Cc: iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> devicetree@xxxxxxxxxxxxxxx; van.freenix@xxxxxxxxx; Peng Fan
> <peng.fan@xxxxxxx>
> Subject: [RFC 1/2] of: reserved_mem: check return value of_dma_configure
>
> In commit <7b07cbefb6>("iommu: of: Handle IOMMU lookup failure with
> deferred probing or error"), there is possibility that of_dma_configure may fail.
> So in of_reserved_mem_device_init_by_idx,
> also need to propagate the return value of_dma_configure to caller, when
> need to use reserved memory for a device which needs iommu.
Seems my understanding is wrong, with iommu enabled, reserved memory will not be used
for devices with memory-region. Please still help review RFC 2/2.
Thanks,
Peng.
>
> Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
> ---
> drivers/of/of_reserved_mem.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
> index 22b75c82e377..61523819b50e 100644
> --- a/drivers/of/of_reserved_mem.c
> +++ b/drivers/of/of_reserved_mem.c
> @@ -357,9 +357,12 @@ int of_reserved_mem_device_init_by_idx(struct
> device *dev,
> /* ensure that dma_ops is set for virtual devices
> * using reserved memory
> */
> - of_dma_configure(dev, np);
> -
> - dev_info(dev, "assigned reserved memory node %s\n", rmem-
> >name);
> + ret = of_dma_configure(dev, np);
> + if (ret)
> + of_reserved_mem_device_release(dev);
> + else
> + dev_info(dev, "assigned reserved memory node %s\n",
> + rmem->name);
> } else {
> kfree(rd);
> }
> --
> 2.14.1