Home
last modified time | relevance | path

Searched hist:"70 a29209f67cf7dfa7c04975b3261e127694a4e7" (Results 1 – 1 of 1) sorted by relevance

/linux/drivers/of/
H A Dplatform.cdiff 70a29209f67cf7dfa7c04975b3261e127694a4e7 Thu Aug 06 17:36:50 CEST 2020 Thierry Reding <treding@nvidia.com> of: platform: Destroy child devices symmetrically

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@nvidia.com>
Link: https://lore.kernel.org/r/20200806153650.3883530-1-thierry.reding@gmail.com
Signed-off-by: Rob Herring <robh@kernel.org>