linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/21] On-demand device registration
@ 2015-05-25 14:53 Tomeu Vizoso
  2015-05-25 14:53 ` [PATCH 01/21] regulator: core: Reduce critical area in _regulator_get Tomeu Vizoso
                   ` (23 more replies)
  0 siblings, 24 replies; 83+ messages in thread
From: Tomeu Vizoso @ 2015-05-25 14:53 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Stéphane Marchesin, Thierry Reding, Dmitry Torokhov,
	Alexander Holler, Grant Likely, Rob Herring, Mark Rutland,
	Tomeu Vizoso, Dan Williams, devicetree, dmaengine, dri-devel,
	linux-clk, linux-fbdev, linux-gpio, linux-i2c, linux-kernel,
	linux-pm, linux-pwm, linux-samsung-soc, linux-tegra, linux-usb

Hello,

I have a problem with the panel on my Tegra Chromebook taking longer than
expected to be ready during boot (Stéphane Marchesin reported what is
basically the same issue in [0]), and have looked into ordered probing as a
better way of solving this than moving nodes around in the DT or playing with
initcall levels.

While reading the thread [1] that Alexander Holler started with his series to
make probing order deterministic, it occurred to me that it should be possible
to achieve the same by registering devices as they are referenced by other
devices.

This basically reuses the information that is already implicit in the probe()
implementations, saving us from refactoring existing drivers or adding
information to DTBs.

Something I'm not completely happy with is that I have had to move the call to
of_platform_populate after all platform drivers have been registered.
Otherwise I don't see how I could register drivers on demand as we don't have
yet each driver's compatible strings.

For machs that don't move of_platform_populate() to a later point, these
patches shouldn't cause any problems but it's not guaranteed that we'll avoid
all the deferred probes as some drivers may not be registered yet.

I have tested this on boards with Tegra, iMX.6 and Exynos SoCs, and these
patches were enough to eliminate all the deferred probes.

With this series I get the kernel to output to the panel in 0.5s, instead of 2.8s.

Regards,

Tomeu

[0] http://lists.freedesktop.org/archives/dri-devel/2014-August/066527.html

[1] https://lkml.org/lkml/2014/5/12/452

Tomeu Vizoso (21):
  regulator: core: Reduce critical area in _regulator_get
  ARM: tegra: Add gpio-ranges property
  ARM: tegra: Register drivers before devices
  ARM: EXYNOS: Register drivers before devices
  ARM i.MX6q: Register drivers before devices
  of/platform: Add of_platform_device_ensure()
  of/platform: Ensure device registration on lookup
  gpio: Probe GPIO drivers on demand
  gpio: Probe pinctrl devices on demand
  regulator: core: Probe regulators on demand
  drm: Probe panels on demand
  drm/tegra: Probe dpaux devices on demand
  i2c: core: Probe i2c master devices on demand
  pwm: Probe PWM chip devices on demand
  backlight: Probe backlight devices on demand
  usb: phy: Probe phy devices on demand
  clk: Probe clk providers on demand
  pinctrl: Probe pinctrl devices on demand
  phy: core: Probe phy providers on demand
  dma: of: Probe DMA controllers on demand
  power-supply: Probe power supplies on demand

 arch/arm/boot/dts/tegra124.dtsi     |  1 +
 arch/arm/mach-exynos/exynos.c       |  4 +--
 arch/arm/mach-imx/mach-imx6q.c      | 12 ++++-----
 arch/arm/mach-tegra/tegra.c         | 21 ++++++---------
 drivers/clk/clk.c                   |  3 +++
 drivers/dma/of-dma.c                |  3 +++
 drivers/gpio/gpiolib-of.c           |  5 ++++
 drivers/gpu/drm/drm_panel.c         |  3 +++
 drivers/gpu/drm/tegra/dpaux.c       |  3 +++
 drivers/i2c/i2c-core.c              |  3 +++
 drivers/of/platform.c               | 53 +++++++++++++++++++++++++++++++++++++
 drivers/phy/phy-core.c              |  3 +++
 drivers/pinctrl/devicetree.c        |  2 ++
 drivers/power/power_supply_core.c   |  3 +++
 drivers/pwm/core.c                  |  3 +++
 drivers/regulator/core.c            | 45 +++++++++++++++----------------
 drivers/usb/phy/phy.c               |  3 +++
 drivers/video/backlight/backlight.c |  3 +++
 include/linux/of_platform.h         |  2 ++
 19 files changed, 130 insertions(+), 45 deletions(-)

-- 
2.4.1


^ permalink raw reply	[flat|nested] 83+ messages in thread

end of thread, other threads:[~2015-06-23  0:02 UTC | newest]

Thread overview: 83+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-25 14:53 [PATCH 00/21] On-demand device registration Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 01/21] regulator: core: Reduce critical area in _regulator_get Tomeu Vizoso
2015-05-25 17:18   ` Mark Brown
2015-05-25 17:45   ` Mark Brown
2015-05-25 14:53 ` [PATCH 02/21] ARM: tegra: Add gpio-ranges property Tomeu Vizoso
2015-05-26 19:41   ` Stephen Warren
2015-05-27 14:18     ` Tomeu Vizoso
2015-05-27 14:49       ` Stephen Warren
2015-05-28  8:26         ` Tomeu Vizoso
2015-05-28 15:50           ` Stephen Warren
2015-06-16  7:53             ` Tomeu Vizoso
2015-06-02 11:28     ` Linus Walleij
2015-06-02 15:40       ` Stephen Warren
2015-06-16  8:42         ` Tomeu Vizoso
2015-06-16 20:32           ` Stephen Warren
2015-06-17 10:04             ` Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 03/21] ARM: tegra: Register drivers before devices Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 04/21] ARM: EXYNOS: " Tomeu Vizoso
2015-05-26  0:41   ` Krzysztof Kozlowski
2015-05-25 14:53 ` [PATCH 05/21] ARM i.MX6q: " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 06/21] of/platform: Add of_platform_device_ensure() Tomeu Vizoso
2015-05-26 18:56   ` Dmitry Torokhov
2015-05-27  8:04     ` Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 07/21] of/platform: Ensure device registration on lookup Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 08/21] gpio: Probe GPIO drivers on demand Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 09/21] gpio: Probe pinctrl devices " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 10/21] regulator: core: Probe regulators " Tomeu Vizoso
2015-05-25 17:32   ` Mark Brown
2015-05-26  6:17     ` Tomeu Vizoso
2015-05-26  9:36       ` Mark Brown
2015-05-26 15:08         ` Tomeu Vizoso
2015-05-26 16:54           ` Mark Brown
2015-05-26 17:53             ` Tomeu Vizoso
2015-05-26 19:55               ` Mark Brown
2015-05-25 14:53 ` [PATCH 11/21] drm: Probe panels " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 12/21] drm/tegra: Probe dpaux devices " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 13/21] i2c: core: Probe i2c master " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 14/21] pwm: Probe PWM chip " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 15/21] backlight: Probe backlight " Tomeu Vizoso
2015-05-26  7:18   ` Lee Jones
2015-05-26  7:25     ` Sascha Hauer
2015-05-26  8:39       ` Lee Jones
2015-05-26 12:01         ` Tomeu Vizoso
2015-05-26 13:34           ` Lee Jones
2015-05-25 14:53 ` [PATCH 16/21] usb: phy: Probe phy " Tomeu Vizoso
2015-05-26 14:44   ` Felipe Balbi
2015-05-25 14:53 ` [PATCH 17/21] clk: Probe clk providers " Tomeu Vizoso
2015-05-28  6:16   ` Michael Turquette
2015-05-25 14:53 ` [PATCH 18/21] pinctrl: Probe pinctrl devices " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 19/21] phy: core: Probe phy providers " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 20/21] dma: of: Probe DMA controllers " Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 21/21] power-supply: Probe power supplies " Tomeu Vizoso
2015-05-28  4:33 ` [PATCH 00/21] On-demand device registration Rob Herring
2015-06-03 19:57   ` Grygorii.Strashko@linaro.org
2015-06-04  8:39     ` Tomeu Vizoso
2015-06-04 16:51       ` Grygorii.Strashko@linaro.org
2015-06-04 20:39     ` Alexander Holler
2015-06-08 12:26       ` Enrico Weigelt, metux IT consult
2015-06-08 18:14         ` Alexander Holler
2015-06-08 18:18           ` Alexander Holler
2015-06-22 15:23   ` Tomeu Vizoso
2015-06-23  0:01     ` Rob Herring
2015-06-02  8:48 ` Linus Walleij
2015-06-02 10:14   ` Tomeu Vizoso
2015-06-10  7:30     ` Linus Walleij
2015-06-10 10:19       ` Tomeu Vizoso
2015-06-10 12:23         ` Andrzej Hajda
2015-06-11  8:15         ` Linus Walleij
     [not found]       ` <5577F533.1060007@ahsoftware.de>
2015-06-11  8:12         ` Linus Walleij
2015-06-11 10:17           ` Alexander Holler
2015-06-11 11:24             ` Alexander Holler
2015-06-11 11:49               ` Alexander Holler
2015-06-11 12:30             ` Linus Walleij
2015-06-11 16:40               ` Alexander Holler
2015-06-12  7:25                 ` Linus Walleij
2015-06-12 11:19                   ` Alexander Holler
2015-06-12 11:36                     ` Alexander Holler
2015-06-13 18:27                       ` Alexander Holler
2015-06-15  8:58                         ` Linus Walleij
2015-06-15  9:42                           ` Alexander Holler
2015-06-11 13:09             ` Tomeu Vizoso
2015-06-03 21:12 ` Rob Clark
2015-06-04 21:03   ` Alexander Holler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).