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]

 



> 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.

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