From: Alexander Holler <holler@ahsoftware.de>
To: Tomeu Vizoso <tomeu.vizoso@collabora.com>, linux-kernel@vger.kernel.org
Cc: "Thierry Reding" <thierry.reding@gmail.com>,
"Stéphane Marchesin" <marcheu@chromium.org>,
"Olof Johansson" <olof@lixom.net>,
"Grant Likely" <grant.likely@linaro.org>,
"Rob Herring" <robh+dt@kernel.org>,
devicetree@vger.kernel.org, "Mark Rutland" <mark.rutland@arm.com>
Subject: Re: [RFC 00/12] On-demand device registration
Date: Sat, 25 Apr 2015 01:15:34 +0200 [thread overview]
Message-ID: <553ACE96.2040804@ahsoftware.de> (raw)
In-Reply-To: <1429886848-5843-1-git-send-email-tomeu.vizoso@collabora.com>
Am 24.04.2015 um 16:47 schrieb Tomeu Vizoso:
> Hi,
>
> while reading the thread [0] 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 probing devices as they are referenced by other devices.
>
> This basically reuses the information that is already embedded in the probe() implementations, saving us from refactoring existing drivers or adding information to DTBs.
>
> The main issue I see is that the registration code path in some subsystems may not be reentrant, so some refactoring of the locking will be needed. In my testing I have found this problem with regulators, as the supply of a regulator might end up being registered during the registration of the first one.
>
> Something I'm not completely happy with is that I have had to move the population of the device tree 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.
>
> I have done my testing on a Tegra124-based Chromebook, and these patches were enough to eliminate all the deferred probes.
First you have to solve a problem which is totally unrelated to DT or
ACPI or x86 or ARM:
I think as long as drivers don't register themself whithout any side
effect, this problem isn't solvable. In order to make an ordered list of
drivers to start, you need to know which drivers are actually available.
And also drivers are registering themself with their initcall, they
might do an awfull lot of stuff besides just registering themself. That
means several drivers already have prerequisites and dependcies for
their initcall. That means you can't just call their initcall to get and
idea of which driver an initcall is even part of.
That ends up with the fact that you just don't have a list of drivers
you can sort, based on whatever algorithm you might have in mind.
I've tried to solve that problem with marking drivers which don't have
any prerequisits (and side effects) as "well done".
The patch which did that was 5/9 in my series, this one:
https://lkml.org/lkml/2014/5/12/414
Unfortunately nobody seemed really interested and without one of the few
"big guys" in your pocket, it's absolutely impossible to get such
changes into the kernel.
Not to speak about all the unavoidable discussions about absolutely
silly things.
But maybe I'm the problem here. No idea. I wish you more luck than I had
in the past two or three years.
Regards,
Alexander Holler
next prev parent reply other threads:[~2015-04-24 23:15 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-24 14:47 [RFC 00/12] On-demand device registration Tomeu Vizoso
[not found] ` <1429886848-5843-1-git-send-email-tomeu.vizoso-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2015-04-24 14:47 ` [RFC 01/12] ARM: tegra: Register drivers before devices Tomeu Vizoso
2015-04-24 14:47 ` Tomeu Vizoso
2015-04-24 14:47 ` [RFC 04/12] gpio: Probe GPIO drivers on demand Tomeu Vizoso
2015-04-24 14:47 ` Tomeu Vizoso
2015-04-24 14:47 ` [RFC 08/12] drm/tegra: Probe dpaux devices " Tomeu Vizoso
2015-04-24 14:47 ` Tomeu Vizoso
2015-04-24 14:47 ` [RFC 02/12] ARM: tegra: Add gpio-ranges property Tomeu Vizoso
2015-04-24 14:47 ` [RFC 03/12] of/platform: add of_platform_device_ensure() Tomeu Vizoso
2015-04-24 14:47 ` [RFC 05/12] gpio: Probe pinctrl devices on demand Tomeu Vizoso
2015-04-24 14:47 ` [RFC 06/12] regulator: core: Probe regulators " Tomeu Vizoso
2015-04-24 14:47 ` [RFC 07/12] drm: Probe panels " Tomeu Vizoso
2015-04-24 14:47 ` [RFC 09/12] i2c: core: Probe i2c master devices " Tomeu Vizoso
2015-04-24 14:47 ` [RFC 10/12] pwm: Probe PWM chip " Tomeu Vizoso
2015-04-24 14:47 ` [RFC 11/12] backlight: Probe backlight " Tomeu Vizoso
2015-04-24 14:47 ` [RFC 12/12] usb: phy: Probe phy " Tomeu Vizoso
2015-04-24 23:15 ` Alexander Holler [this message]
2015-04-28 12:49 ` [RFC 00/12] On-demand device registration Tomeu Vizoso
2015-04-28 18:17 ` Alexander Holler
[not found] ` <553FCECB.7040005-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2015-04-29 6:58 ` Tomeu Vizoso
2015-04-29 6:58 ` Tomeu Vizoso
2015-04-29 9:46 ` Alexander Holler
2015-04-30 7:44 ` Alexander Holler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=553ACE96.2040804@ahsoftware.de \
--to=holler@ahsoftware.de \
--cc=devicetree@vger.kernel.org \
--cc=grant.likely@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marcheu@chromium.org \
--cc=mark.rutland@arm.com \
--cc=olof@lixom.net \
--cc=robh+dt@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=tomeu.vizoso@collabora.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.