[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20200817215350.GA1638282@bogus>
Date: Mon, 17 Aug 2020 15:53:50 -0600
From: Rob Herring <robh@...nel.org>
To: Thierry Reding <thierry.reding@...il.com>
Cc: devicetree@...r.kernel.org, Frank Rowand <frowand.list@...il.com>,
Rob Herring <robh+dt@...nel.org>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] of: platform: Destroy child devices symmetrically
On Thu, 06 Aug 2020 17:36:50 +0200, Thierry Reding wrote:
> From: Thierry Reding <treding@...dia.com>
>
> Iterate over child devices in reverse when unpopulating a platform
> device to make this step symmetrical with the population step. This
> fixes an issue in the Tegra DRM driver where upon module unload the
> DPAUX controller tries to unregister an I2C controller but will end
> up waiting indefinitely because one of the SOR devices is keeping a
> reference to it. Since the SOR devices are instantiated after the
> DPAUX devices, they would only be removed (and hence release their
> reference to the I2C controller) after the DPAUX devices have been
> removed.
>
> While destroying the child devices in reverse order helps in this
> situation, it isn't fully safe to do so either. An even better way
> would be for the child devices to be reordered to match the probe
> order, which would work irrespective of the instantiation order.
>
> However, reordering by probe order would be fairly complicated and
> doesn't fix any known issues, so we'll go with the simpler fix for
> now.
>
> Signed-off-by: Thierry Reding <treding@...dia.com>
> ---
> drivers/of/platform.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
Applied, thanks!
Powered by blists - more mailing lists