devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Holler <holler@ahsoftware.de>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-fbdev@vger.kernel.org" <linux-fbdev@vger.kernel.org>,
	linux-samsung-soc <linux-samsung-soc@vger.kernel.org>,
	dmaengine@vger.kernel.org,
	Tomeu Vizoso <tomeu.vizoso@collabora.com>,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-pwm@vger.kernel.org" <linux-pwm@vger.kernel.org>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	DRM PANEL DRIVERS <dri-devel@lists.freedesktop.org>,
	Grant Likely <grant.likely@linaro.org>,
	Dan Williams <dan.j.williams@intel.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	linux-usb@vger.kernel.org, linux-i2c@vger.kernel.org
Subject: Re: [PATCH 00/21] On-demand device registration
Date: Sat, 13 Jun 2015 20:27:21 +0200	[thread overview]
Message-ID: <557C7609.30400@ahsoftware.de> (raw)
In-Reply-To: <557AC437.9000607@ahsoftware.de>

Am 12.06.2015 um 13:36 schrieb Alexander Holler:
> Am 12.06.2015 um 13:19 schrieb Alexander Holler:
>> Am 12.06.2015 um 09:25 schrieb Linus Walleij:
>>> On Thu, Jun 11, 2015 at 6:40 PM, Alexander Holler
>>> <holler@ahsoftware.de> wrote:
>>>> Am 11.06.2015 um 14:30 schrieb Linus Walleij:
>>>
>>>>> Certainly it is possible to create deadlocks in this scenario, but the
>>>>> scope is not to create an ubreakable system.
>>>>
>>>> IAnd what happens if you run into a deadlock? Do you print "you've
>>>> lost, try
>>>> changing your kernel config" in some output hidden by a
>>>> splash-screen? ;)
>>>
>>> Sorry it sounds like a blanket argument, the fact that there are
>>> mutexes in the kernel makes it possible to deadlock, it doesn't
>>> mean we don't use mutexes. Some programming problems are
>>> just like such.
>>
>> I'm not talking about specific deadlocks through mutexes. I'm talking
>> about what happens when driver A needs driver B which needs driver A.
>> How do you recognise and handle that with your instrumented on-demand
>> device initialization? Such a circular dependency might happen by just
>> adding a new fucntion call or by changing the kernel configuration. And
>> with the on-demand stuff, the possibility that the developer introducing
>> this new (maybe optional) call will never hit such a circular dependency
>> is high. So you will end up with a never ending stream of problem
>> reports whenever someone introduced such a circular dependecy without
>> having noticed it.
>>
>> And to come back to specific deadlocks, if you are extending function
>> calls from something former simple to something which might initialize a
>> whole bunch of drivers, needing maybe seconds, I wouldn't say this is a
>> blanket argument, but a real thread.
>
> Keep in mind, that the possibility that a function call ends up with
> initializing a whole bunch of other drivers, is not determined
> statically, but depends on the configuration and runtime behaviour of
> the actual system the on-demand stuff actually happens.
>
> E.g. if driver A is faster one system that driver B, the whole bunch of
> drivers might become initialized by a call in driver A. But if driver B
> was faster on the developers system (or the system is configured to
> first init driver B), than the whole bunch of drivers might have become
> initialized by driver B on the developers system. Thus he never might
> have hit a possible problem when the whole bunch of drivers got
> initialized in driver A.
>
> That means it isn't always a good idea to create dynamic systems (like
> on-demand device initialization), because it's very hard to foresee and
> correctly handle their runtime behaviour.

And because you've said that "problem space is a bit convoluted" and I 
disagree, here's a summary from my point of view:

1. All the necessary information (dependencies between drivers) already 
exists at compile time. The set of dependencies between drivers might 
become smaller by configuration, but will not become larger. So there 
should be NO need to collect them at runtime, e.g. by instrumenting 
function calls. I've described the problems I see with that above. I've 
choosen DT as source of dependencies because it offers an easy 
accessible and almost complete set of dependencies. I just had to add 
some type information to the dtb in order to identify the dependencies 
(phandles). But other ways to collect the dependencies would work too. 
Even the most simple way to add a static list of dependencies to each 
driver (which later on might be automated by some more clever stuff than 
adding them manually) would do the trick.

2. The problem to sort a set of nodes (drivers) with dependencies is 
solved since a long time and almost any developers uses it regularly in 
form of make. And everyone who used make -jN knows that the possible 
parallel initialization of drivers I've talked about, is already solved too.

3. In order to initialize the drivers in some specific order, their 
initcalls must be identified. I've offered a possible solution to that 
without much changes, but many other, even better ways, are possible 
too. It just depends on how much you want to change and on how much of 
these changes you will be able to feed into mainline kernel (which 
depends on your connections/relations inside the core kernel crew). E.g. 
instead of still just relying on one-dimensional arrays with (anonymous) 
pointers to initcalls, a multidimensional array of initcalls and 
drivername (and maybe more information) might be thinkable.

4. x86/amd64/ACPI-people, so most longtime and core kernel maintainers 
obviously don't have much interest until you've solved 1. in a way they 
can use too. So the necessary changes for 2. or 3. will have a big 
hurdle to take if 1. isn't solved usable for them too.

>> Alexander Holler

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2015-06-13 18:27 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-25 14:53 [PATCH 00/21] On-demand device registration Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 02/21] ARM: tegra: Add gpio-ranges property Tomeu Vizoso
     [not found]   ` <1432565608-26036-3-git-send-email-tomeu.vizoso-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2015-05-26 19:41     ` Stephen Warren
     [not found]       ` <5564CC84.1030700-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2015-05-27 14:18         ` Tomeu Vizoso
     [not found]           ` <CAAObsKD7YbZX01A=SS7z_PxAMPweHy6sw5ut=50h50C=j9y0zA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-27 14:49             ` Stephen Warren
2015-05-28  8:26               ` Tomeu Vizoso
     [not found]                 ` <CAAObsKB-ayRd7OB1W9nYBJzvBDK0RZk1U56Gqxn08sHPT5FvzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-28 15:50                   ` Stephen Warren
     [not found]                     ` <5567393A.6000901-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2015-06-16  7:53                       ` Tomeu Vizoso
2015-06-02 11:28         ` Linus Walleij
     [not found]           ` <CACRpkdbtCDQLaPhWFT0a7NdJmxYzRvhU_efgUh2ZXhbc+FHg3g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-02 15:40             ` Stephen Warren
     [not found]               ` <556DCE71.7050108-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2015-06-16  8:42                 ` Tomeu Vizoso
2015-06-16 20:32                   ` Stephen Warren
     [not found]                     ` <558087CE.5070903-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2015-06-17 10:04                       ` Tomeu Vizoso
2015-05-25 14:53 ` [PATCH 06/21] of/platform: Add of_platform_device_ensure() Tomeu Vizoso
     [not found]   ` <1432565608-26036-7-git-send-email-tomeu.vizoso-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2015-05-26 18:56     ` Dmitry Torokhov
2015-05-27  8:04       ` Tomeu Vizoso
     [not found] ` <1432565608-26036-1-git-send-email-tomeu.vizoso-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2015-05-25 14:53   ` [PATCH 07/21] of/platform: Ensure device registration on lookup Tomeu Vizoso
2015-05-28  4:33 ` [PATCH 00/21] On-demand device registration Rob Herring
     [not found]   ` <CAL_Jsq+EWLEJhRudTGAwYsOg4tX2-pGhygeQGHae9RL8rBpMiA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-03 19:57     ` Grygorii.Strashko-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org
2015-06-04  8:39       ` Tomeu Vizoso
2015-06-04 16:51         ` Grygorii.Strashko@linaro.org
     [not found]       ` <556F5C24.1030101-QSEj5FYQhm4dnm+yROfE0A@public.gmane.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  8:28       ` Alexander Holler
2015-06-11  8:12         ` Linus Walleij
2015-06-11 10:17           ` Alexander Holler
     [not found]             ` <5579602F.1070801-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2015-06-11 11:24               ` Alexander Holler
     [not found]                 ` <55796FDE.7080701-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2015-06-11 11:49                   ` Alexander Holler
2015-06-11 12:30             ` Linus Walleij
2015-06-11 16:40               ` Alexander Holler
     [not found]                 ` <5579B9E8.9040609-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2015-06-12  7:25                   ` Linus Walleij
     [not found]                     ` <CACRpkdbDSS0yw=q_cR17Bvg+kgTfU3Vcd2gSjx1p4V-CzOZ_SA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-12 11:19                       ` Alexander Holler
2015-06-12 11:36                         ` Alexander Holler
2015-06-13 18:27                           ` Alexander Holler [this message]
     [not found]                             ` <557C7609.30400-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2015-06-15  8:58                               ` Linus Walleij
     [not found]                                 ` <CACRpkdaVZmq_w_qgEgTP5oqfH3K1+80O7z7o7CJx-dhivUGhDQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-15  9:42                                   ` Alexander Holler
2015-06-11 13:09             ` Tomeu Vizoso
2015-06-10 10:19       ` Tomeu Vizoso
2015-06-10 12:23         ` Andrzej Hajda
2015-06-10 18:38           ` Alexander Holler
2015-06-11  8:15         ` Linus Walleij
2015-06-11  9:56           ` Tomeu Vizoso
2015-06-02 22:54   ` Alexander Holler
2015-06-03 21:12 ` Rob Clark
2015-06-04 21:03   ` 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=557C7609.30400@ahsoftware.de \
    --to=holler@ahsoftware.de \
    --cc=dan.j.williams@intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=grant.likely@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --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 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).