[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMuHMdXPosaKarsRWZpuGGD7Xam6qngsej+3iJdfWGTBDiWhLA@mail.gmail.com>
Date: Wed, 8 Feb 2023 08:30:51 +0100
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: Saravana Kannan <saravanak@...gle.com>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"Rafael J. Wysocki" <rafael@...nel.org>,
Sudeep Holla <sudeep.holla@....com>,
Cristian Marussi <cristian.marussi@....com>,
Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski <brgl@...ev.pl>,
Thomas Gleixner <tglx@...utronix.de>,
Marc Zyngier <maz@...nel.org>, Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>,
NXP Linux Team <linux-imx@....com>,
Miquel Raynal <miquel.raynal@...tlin.com>,
Richard Weinberger <richard@....at>,
Vignesh Raghavendra <vigneshr@...com>,
Rob Herring <robh+dt@...nel.org>,
Frank Rowand <frowand.list@...il.com>,
Magnus Damm <magnus.damm@...il.com>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Daniel Scally <djrscally@...il.com>,
Heikki Krogerus <heikki.krogerus@...ux.intel.com>,
Sakari Ailus <sakari.ailus@...ux.intel.com>,
Len Brown <lenb@...nel.org>,
Rafał Miłecki <rafal@...ecki.pl>,
Abel Vesa <abel.vesa@...aro.org>,
Alexander Stein <alexander.stein@...tq-group.com>,
Tony Lindgren <tony@...mide.com>,
John Stultz <jstultz@...gle.com>,
Doug Anderson <dianders@...omium.org>,
Guenter Roeck <linux@...ck-us.net>,
Dmitry Baryshkov <dmitry.baryshkov@...aro.org>,
Maxim Kiselev <bigunclemax@...il.com>,
Maxim Kochetkov <fido_max@...ox.ru>,
Luca Weiss <luca.weiss@...rphone.com>,
Colin Foster <colin.foster@...advantage.com>,
Martin Kepplinger <martin.kepplinger@...i.sm>,
Jean-Philippe Brucker <jpb@...nel.org>,
Vladimir Oltean <vladimir.oltean@....com>,
kernel-team@...roid.com, linux-kernel@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-gpio@...r.kernel.org,
linux-mtd@...ts.infradead.org, devicetree@...r.kernel.org,
linux-renesas-soc@...r.kernel.org, linux-acpi@...r.kernel.org
Subject: Re: [PATCH v3 09/12] of: property: Simplify of_link_to_phandle()
Hi Saravana,
On Wed, Feb 8, 2023 at 3:08 AM Saravana Kannan <saravanak@...gle.com> wrote:
> On Tue, Feb 7, 2023 at 12:57 PM Geert Uytterhoeven <geert@...ux-m68k.org> wrote:
> > On Tue, Feb 7, 2023 at 2:42 AM Saravana Kannan <saravanak@...gle.com> wrote:
> > > The driver core now:
> > > - Has the parent device of a supplier pick up the consumers if the
> > > supplier never has a device created for it.
> > > - Ignores a supplier if the supplier has no parent device and will never
> > > be probed by a driver
> > >
> > > And already prevents creating a device link with the consumer as a
> > > supplier of a parent.
> > >
> > > So, we no longer need to find the "compatible" node of the supplier or
> > > do any other checks in of_link_to_phandle(). We simply need to make sure
> > > that the supplier is available in DT.
> > >
> > > Signed-off-by: Saravana Kannan <saravanak@...gle.com>
> >
> > Thanks for your patch!
> >
> > This patch introduces a regression when dynamically loading DT overlays.
> > Unfortunately this happens when using the out-of-tree OF configfs,
> > which is not supported upstream. Still, there may be (obscure)
> > in-tree users.
> >
> > When loading a DT overlay[1] to enable an SPI controller, and
> > instantiate a connected SPI EEPROM:
> >
> > $ overlay add 25lc040
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /keys/status
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/pinctrl-0
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/pinctrl-names
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/cs-gpios
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/status
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /__symbols__/msiof0_pins
> >
> > The SPI controller and the SPI EEPROM are no longer instantiated.
> >
> > # cat /sys/kernel/debug/devices_deferred
> > e6e90000.spi platform: wait for supplier msiof0
> >
> > Let's remove the overlay again:
> >
> > $ overlay rm 25lc040
> > input: keys as /devices/platform/keys/input/input1
> >
> > And retry:
> >
> > $ overlay add 25lc040
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /keys/status
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/pinctrl-0
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/pinctrl-names
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/cs-gpios
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/status
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /__symbols__/msiof0_pins
> > spi_sh_msiof e6e90000.spi: DMA available
> > spi_sh_msiof e6e90000.spi: registered master spi0
> > spi spi0.0: setup mode 0, 8 bits/w, 100000 Hz max --> 0
> > at25 spi0.0: 512 Byte at25 eeprom, pagesize 16
> > spi_sh_msiof e6e90000.spi: registered child spi0.0
> >
> > Now it succeeds, and the SPI EEPROM is available, and works.
> >
> > Without this patch, or with this patch reverted after applying the
> > full series:
> >
> > $ overlay add 25lc040
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /keys/status
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/pinctrl-0
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/pinctrl-names
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/cs-gpios
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /soc/spi@...90000/status
> > OF: overlay: WARNING: memory leak will occur if overlay removed,
> > property: /__symbols__/msiof0_pins
> > OF: Not linking spi@...90000 to interrupt-controller@...10000 - No
> > struct device
> > spi_sh_msiof e6e90000.spi: DMA available
> > spi_sh_msiof e6e90000.spi: registered master spi0
> > spi spi0.0: setup mode 0, 8 bits/w, 100000 Hz max --> 0
> > at25 spi0.0: 444 bps (2 bytes in 9 ticks)
> > at25 spi0.0: 512 Byte at25 eeprom, pagesize 16
> > spi_sh_msiof e6e90000.spi: registered child spi0.0
> >
> > The SPI EEPROM is available on the first try after boot.
>
> Sigh... I spent way too long trying to figure out if I caused a memory
> leak. I should have scrolled down further! Doesn't look like that part
> is related to anything I did.
Please ignore the memory leak messages. They are known issues
in the upstream DT overlay code, and not related to your series.
> There are some flags set to avoid re-parsing fwnodes multiple times.
> My guess is that the issue you are seeing has to do with how many of
> the in memory structs are reused vs not when an overlay is
> applied/removed and some of these flags might not be getting cleared
> and this is having a bigger impact with this patch (because the fwnode
> links are no longer anchored on "compatible" nodes).
>
> With/without this patch (let's keep the series) can you look at how
> the following things change between each step you do above (add,
> remove, retry):
> 1) List of directories under /sys/class/devlink
> 2) Enable the debug logs inside __fwnode_link_add(),
> __fwnode_link_del(), device_link_add()
Thanks, I'll give that a try, later...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Powered by blists - more mailing lists