From: Alexander Holler <holler@ahsoftware.de>
To: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"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" <devicetree@vger.kernel.org>,
"Mark Rutland" <mark.rutland@arm.com>
Subject: Re: [RFC 00/12] On-demand device registration
Date: Wed, 29 Apr 2015 11:46:43 +0200 [thread overview]
Message-ID: <5540A883.8060708@ahsoftware.de> (raw)
In-Reply-To: <CAAObsKBQMY8NfzN3bfiDuy=QOsSV281punJGuEUPfMRRBwoA+g@mail.gmail.com>
Am 29.04.2015 um 08:58 schrieb Tomeu Vizoso:
> On 28 April 2015 at 20:17, Alexander Holler <holler@ahsoftware.de> wrote:
>> Am 28.04.2015 um 14:49 schrieb Tomeu Vizoso:
>>>
>>> On 25 April 2015 at 01:15, Alexander Holler <holler@ahsoftware.de> wrote:
>>>>
>>>> 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.
>>>
>>>
>>> Yeah, I kind of side-stepped that issue by waiting until all drivers
>>> have been registered before registering devices. I think someone
>>> suggested doing so in your thread (maybe Grant?).
>>
>>
>> That doesn't work. As said above, several drivers doing a lot more than just
>> registering in their initcall. They might even crash if some prerequisits
>> aren't given. And several of these prerequisits (init orders) are hardcoded
>> by various means.
>
> But aren't those dependencies being taken care currently by the
> initcall level the driver is placed in? That remains the same in this
> approach.
In short, no. There are various very ugly things done in several drivers
to enforce some order.
Regards,
Alexander Holler
next prev parent reply other threads:[~2015-04-29 9:46 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
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
[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 09/12] i2c: core: Probe i2c master " 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 ` [RFC 00/12] On-demand device registration Alexander Holler
2015-04-28 12:49 ` 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 [this message]
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=5540A883.8060708@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.