From: Alexander Holler <holler@ahsoftware.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Russell King <linux@arm.linux.org.uk>,
Grant Likely <grant.likely@linaro.org>
Subject: Re: [PATCH 04/14] init: deps: order network interfaces by link order
Date: Sat, 17 Oct 2015 20:37:35 +0200 [thread overview]
Message-ID: <5622956F.80408@ahsoftware.de> (raw)
In-Reply-To: <CA+55aFyOf_Uu1z64331Tvep6auUtjAkOsRXdYh0=Nvs3RFh89Q@mail.gmail.com>
Am 17.10.2015 um 20:23 schrieb Linus Torvalds:
> On Sat, Oct 17, 2015 at 10:14 AM, Alexander Holler <holler@ahsoftware.de> wrote:
>>
>> Assuming three different ethernet-drivers, without any special code,
>> the dependency graph would not require any special order inbetween them
>> and would look like that:
>
> This seems *fundamentally* wrong.
>
> This is in no way specific to network drivers (or to disk drivers, or
> to anything else).
>
> So requiring extra logic for this implies that something is seriously wrong.
>
> If two drivers aren't ordered by dependencies, they should always be
> in link order, regardless of any hacks like these. If they're not,
> things are wrong.
>
> I think your problem is that you make that dependency thing a separate
> ordering, so now it matters whether a driver has a dependency or not.
I'm making dependencies the only ordering for annotated initcalls.
Otherwise it's impossible to call initcalls in parallel. I've seen a
stable topological sort somewhere, but whenever you want to parallelize
the initcalls, the stable ordering would be gone anyway. So I've decided
not to look further at a stable topological sort.
> If something like this is to work, it has to work *with* the normal
> ordering, not outside of it and then have these kinds of broken
> special cases.
>
> The normal init orderings (ie core -> postcore -> arch -> subsys -> fs
> -> rootfs -> device -> late) should just be an extra dependency, I
> think.
>
> The way that you just insert the annotated dependencies in between
> levels 6 and 7 ("device" and "late") can't be right. It means - for
> example - that you can't have subsystems that have dependencies.
Sorry, but that's wrong.
I've choosen to place initcalls between 5 and 6 to make it easier to
move both, subsystems as well as normal drivers to the (new) level with
annotated initcalls. If you look at what I've already "annotated", you
will see there are quiet a lot initcalls I've moved from below 6 to the
new level.
> So I really think that if we do dependencies, then the current levels
> have to be added as dependencies, so that "subsys_initcall(xyz)"
> basically means "xyz depends on the 'subsys' event, and 'subsys_end'
> depends on xyz". Then within that, you might have another bus driver
> that in turn depends on 'xyz'.
It would be absolutely no problem to introduce "virtual" initcalls for
any level, e.g. just
depencies = {
everything_below
}
initcall foo()
{
return 0;
}
annotated_initcall(foo, id, dependencies),
Regards,
Alexander Holler
next prev parent reply other threads:[~2015-10-17 18:38 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-17 17:14 [PATCH 0/14] init: deps: dependency based (parallelized) init Alexander Holler
2015-10-17 17:14 ` [PATCH 01/14] init: deps: introduce annotated initcalls Alexander Holler
2015-10-17 17:14 ` [PATCH 02/14] init: deps: use annotated initcalls for a dependency based (optionally parallelized) init Alexander Holler
2015-10-17 17:14 ` [PATCH 03/14] init: deps: dt: use (HW-specific) dependencies provided by the DT too Alexander Holler
2015-10-19 12:37 ` Mark Brown
2015-10-19 16:27 ` Rob Herring
2015-10-19 17:24 ` Alexander Holler
2015-10-19 17:10 ` Alexander Holler
2015-10-17 17:14 ` [PATCH 04/14] init: deps: order network interfaces by link order Alexander Holler
2015-10-17 18:23 ` Linus Torvalds
2015-10-17 18:37 ` Alexander Holler [this message]
2015-10-17 18:52 ` Linus Torvalds
2015-10-17 19:01 ` Alexander Holler
2015-10-17 19:08 ` Linus Torvalds
2015-10-17 19:14 ` Alexander Holler
2015-10-17 19:36 ` Greg Kroah-Hartman
2015-10-17 19:58 ` Alexander Holler
2015-10-17 21:20 ` Alexander Holler
2015-10-18 4:59 ` Alexander Holler
2015-10-18 5:14 ` Greg Kroah-Hartman
2015-10-18 5:20 ` Alexander Holler
2015-10-18 5:59 ` Greg Kroah-Hartman
2015-10-18 10:11 ` Alexander Holler
2015-10-19 10:57 ` Alexander Holler
2015-10-19 11:31 ` Alexander Holler
2015-10-22 6:47 ` Alexander Holler
2015-10-17 19:37 ` Linus Torvalds
2015-10-17 21:32 ` Alexander Holler
2015-10-17 18:55 ` Greg Kroah-Hartman
2015-10-17 19:03 ` Linus Torvalds
2015-10-17 19:07 ` Alexander Holler
2015-10-17 17:14 ` [PATCH 05/14] init: deps: order I2C bus drivers by their ID Alexander Holler
2015-10-17 17:14 ` [PATCH 06/14] dtc: deps: Automatically add new property 'dependencies' which contains a list of referenced phandles Alexander Holler
2015-10-17 17:14 ` [PATCH 07/14] dtc: deps: introduce new (virtual) property no-dependencies Alexander Holler
2015-10-17 17:14 ` [PATCH 08/14] dtc: deps: Add option to print initialization order Alexander Holler
2015-10-17 17:14 ` [PATCH 09/14] dtc: deps: Add option to print dependency graph as dot (Graphviz) Alexander Holler
2015-10-17 17:14 ` [PATCH 10/14] init: deps: IDs for annotated initcalls Alexander Holler
2015-10-17 17:45 ` Greg Kroah-Hartman
2015-10-17 17:55 ` Alexander Holler
2015-10-17 18:29 ` Greg Kroah-Hartman
2015-10-17 18:46 ` Alexander Holler
2015-10-19 13:12 ` Mark Brown
2015-10-20 10:30 ` Alexander Holler
2015-10-20 10:42 ` Alexander Holler
2015-10-20 10:50 ` Alexander Holler
2015-10-20 10:57 ` Alexander Holler
2015-10-17 17:14 ` [PATCH 11/14] init: deps: annotate various initcalls Alexander Holler
2015-10-17 18:47 ` Linus Torvalds
2015-10-17 18:59 ` Alexander Holler
2015-10-17 17:14 ` [PATCH 12/14] dt: dts: deps: kirkwood: dockstar: add dependency ehci -> usb power regulator Alexander Holler
2015-10-17 17:14 ` [PATCH 13/14] dt: dts: deps: imx6q: make some remote-endpoints non-dependencies Alexander Holler
2015-10-17 17:14 ` [PATCH 14/14] dt: dts: deps: omap: beagle: " Alexander Holler
2015-10-17 17:44 ` [PATCH 0/14] init: deps: dependency based (parallelized) init Greg Kroah-Hartman
2015-10-17 18:19 ` Alexander Holler
2015-10-17 18:38 ` Greg Kroah-Hartman
2015-10-17 19:43 ` Alexander Holler
2015-10-17 20:20 ` Greg Kroah-Hartman
2015-10-17 20:37 ` Alexander Holler
2015-11-06 16:07 ` 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=5622956F.80408@ahsoftware.de \
--to=holler@ahsoftware.de \
--cc=akpm@linux-foundation.org \
--cc=grant.likely@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=torvalds@linux-foundation.org \
/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.