RE: [PATCH v2] Revert "pinctrl: freescale: imx: Use 'devm_of_iomap()' to avoid a resource leak in case of error in 'imx_pinctrl_probe()'"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: Peng Fan <peng.fan@xxxxxxx>
> Sent: Wednesday, June 17, 2020 9:15 AM
> 
> > Subject: Re: [PATCH v2] Revert "pinctrl: freescale: imx: Use 'devm_of_iomap()'
> > to avoid a resource leak in case of error in 'imx_pinctrl_probe()'"
> >
> > On Tue, Jun 16, 2020 at 5:54 AM Aisheng Dong <aisheng.dong@xxxxxxx>
> > wrote:
> >
> > > Could you help apply this patch as it blocked MX7D booting for a while?
> >
> > > > This reverts commit ba403242615c2c99e27af7984b1650771a2cc2c9.
> > > >
> > > > After commit 26d8cde5260b ("pinctrl: freescale: imx: add shared
> > > > input select reg support"). i.MX7D has two iomux controllers
> > > > iomuxc and iomuxc-lpsr which share select_input register for daisy chain
> settings.
> > > > If use 'devm_of_iomap()', when probe the iomuxc-lpsr, will call
> > > > devm_request_mem_region() for the region <0x30330000-0x3033ffff>
> > > > for the first time. Then, next time when probe the iomuxc, API
> > > > devm_platform_ioremap_resource() will also use the API
> > > > devm_request_mem_region() for the share region
> > > > <0x30330000-0x3033ffff> again, then cause issue, log like below:
> > > >
> > > > [    0.179561] imx7d-pinctrl 302c0000.iomuxc-lpsr: initialized IMX
> > pinctrl
> > > > driver
> > > > [    0.191742] imx7d-pinctrl 30330000.pinctrl: can't request region for
> > > > resource [mem 0x30330000-0x3033ffff]
> > > > [    0.191842] imx7d-pinctrl: probe of 30330000.pinctrl failed with error
> > -16
> >
> > It means that shared support took a wrong approach. If something has
> > shared resources, another schema should be used, something like MFD
> > (parent device which keeps only shared resources). Easiest way is to
> > switch to the regmap API.
> 
> Actually not MFD, it is the dts use wrong address region.
> 
>                         iomuxc_lpsr: iomuxc-lpsr@302c0000 {
>                                 compatible = "fsl,imx7d-iomuxc-lpsr";
>                                 reg = <0x302c0000 0x10000>;
>                                 fsl,input-sel = <&iomuxc>;
>                         };
>                         iomuxc: pinctrl@30330000 {
>                                 compatible = "fsl,imx7d-iomuxc";
>                                 reg = <0x30330000 0x10000>;
>                         };
> 
> There is overlap between the two.
> 
> The iomuxc_lpsr using 0x10000 as size is wrong. It not have such large area.
> 
> With the size fix, devm_of_ioremap could be used I think.
> 

Really overlapped?

I think the real issue is LPSR Sel Input part using the same memory region as iomux.

Regards
Aisheng

> Regards,
> Peng.
> 
> >
> > P.S. The revert is okay as a quick fix but... see above.
> >
> > --
> > With Best Regards,
> > Andy Shevchenko




[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux