From: Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org>
To: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
Cc: Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>,
"paul-DWxLp4Yu+b8AvxtiuMwx3w@public.gmane.org"
<paul-DWxLp4Yu+b8AvxtiuMwx3w@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
Peter De Schrijver
<pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
"arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org"
<arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
Pawel Moll <Pawel.Moll-5wv7dgnIgG8@public.gmane.org>
Subject: Re: [GIT PULL 2/3] ARM: tegra: move fuse code out of arch/arm
Date: Tue, 22 Jul 2014 18:04:15 +0100 [thread overview]
Message-ID: <20140722170415.GU2219@arm.com> (raw)
In-Reply-To: <53CE8FB1.4060307-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
On Tue, Jul 22, 2014 at 05:22:09PM +0100, Stephen Warren wrote:
> On 07/22/2014 05:26 AM, Catalin Marinas wrote:
> > On Mon, Jul 21, 2014 at 05:38:25PM +0100, Stephen Warren wrote:
> >> On 07/21/2014 09:54 AM, Catalin Marinas wrote:
> >>> On arm64, I really want to get away from any SoC specific early
> >>> initcall. One of the main reason is for things like SCU, interconnects,
> >>> system cache configurations (even certain clocks) to be enabled in
> >>> firmware before Linux starts (it's an education process but that's a way
> >>> for example to prevent people sending patches to enable SoC coherency
> >>> because they haven't thought about it before upstreaming).
> >>>
> >>> It would be nice to be able to initialise SoC stuff at device_initcall()
> >>> level (and even keep such code as modules in initramfs) but one of the
> >>> problems we have is dependency on clocks (and the clock model which
> >>> doesn't follow the device/driver model). The of_platform_populate() is
> >>> called at arch_initcall_sync (after arch_initcall to still allow some
> >>> SoC code, if needed, to run at arch_initcall).
> >>
> >> The main thing I want to avoid is a ton of separate drivers that all
> >> rely on each-other getting resolved by deferred probe. While that might
> >> work out, it seems pointless to make the kernel try and probe a bunch of
> >> stuff just to have it fail and get repeated, when we know exactly which
> >> order everything should get initialized in.
> >
> > So of_platform_populate() is called at arch_initcall_sync() level on
> > arm64. This allows at least two levels of probing separation before
> > (e.g. drivers registered as arch_initcall) and after (device_initcall).
> > If you register a driver earlier than arch_initcall_sync (see for
> > example vexpress_osc_init), it will get probed when the platform devices
> > are populated. Any later device_initcalls will get probed when the
> > corresponding drivers are registered. If you need ordering between
> > device_initcalls, I would recommend deferred probing.
> >
> > The tricky part is if you need more drivers to be initialised at
> > arch_initcall_sync() in a specific order.
>
> I believe relying on initcall ordering, even in the case where there are
> enough initcall levels to achieve a particular SoC's needs, is
> completely and utterly the wrong way to go.
I don't like it either and I agree that there may not be enough
initcalls. But I'm ok with using two levels like arch_initcall() for
something like fuse and device_initcall() for the rest. If that's not
enough (I haven't looked in detail at Tegra), with Pawel's patch you can
get a SoC specific probe where you can call the initialisation in the
right order.
Tegra is not the first nor the last platform with such issue. Is there
anything we could do better at the DT or driver registration level
(other than introducing machine_desc)?
--
Catalin
WARNING: multiple messages have this Message-ID (diff)
From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: [GIT PULL 2/3] ARM: tegra: move fuse code out of arch/arm
Date: Tue, 22 Jul 2014 18:04:15 +0100 [thread overview]
Message-ID: <20140722170415.GU2219@arm.com> (raw)
In-Reply-To: <53CE8FB1.4060307@wwwdotorg.org>
On Tue, Jul 22, 2014 at 05:22:09PM +0100, Stephen Warren wrote:
> On 07/22/2014 05:26 AM, Catalin Marinas wrote:
> > On Mon, Jul 21, 2014 at 05:38:25PM +0100, Stephen Warren wrote:
> >> On 07/21/2014 09:54 AM, Catalin Marinas wrote:
> >>> On arm64, I really want to get away from any SoC specific early
> >>> initcall. One of the main reason is for things like SCU, interconnects,
> >>> system cache configurations (even certain clocks) to be enabled in
> >>> firmware before Linux starts (it's an education process but that's a way
> >>> for example to prevent people sending patches to enable SoC coherency
> >>> because they haven't thought about it before upstreaming).
> >>>
> >>> It would be nice to be able to initialise SoC stuff at device_initcall()
> >>> level (and even keep such code as modules in initramfs) but one of the
> >>> problems we have is dependency on clocks (and the clock model which
> >>> doesn't follow the device/driver model). The of_platform_populate() is
> >>> called at arch_initcall_sync (after arch_initcall to still allow some
> >>> SoC code, if needed, to run at arch_initcall).
> >>
> >> The main thing I want to avoid is a ton of separate drivers that all
> >> rely on each-other getting resolved by deferred probe. While that might
> >> work out, it seems pointless to make the kernel try and probe a bunch of
> >> stuff just to have it fail and get repeated, when we know exactly which
> >> order everything should get initialized in.
> >
> > So of_platform_populate() is called at arch_initcall_sync() level on
> > arm64. This allows at least two levels of probing separation before
> > (e.g. drivers registered as arch_initcall) and after (device_initcall).
> > If you register a driver earlier than arch_initcall_sync (see for
> > example vexpress_osc_init), it will get probed when the platform devices
> > are populated. Any later device_initcalls will get probed when the
> > corresponding drivers are registered. If you need ordering between
> > device_initcalls, I would recommend deferred probing.
> >
> > The tricky part is if you need more drivers to be initialised at
> > arch_initcall_sync() in a specific order.
>
> I believe relying on initcall ordering, even in the case where there are
> enough initcall levels to achieve a particular SoC's needs, is
> completely and utterly the wrong way to go.
I don't like it either and I agree that there may not be enough
initcalls. But I'm ok with using two levels like arch_initcall() for
something like fuse and device_initcall() for the rest. If that's not
enough (I haven't looked in detail at Tegra), with Pawel's patch you can
get a SoC specific probe where you can call the initialisation in the
right order.
Tegra is not the first nor the last platform with such issue. Is there
anything we could do better at the DT or driver registration level
(other than introducing machine_desc)?
--
Catalin
next prev parent reply other threads:[~2014-07-22 17:04 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-23 21:23 [GIT PULL 1/3] ARM: tegra: rework PCIe regulators Stephen Warren
2014-06-23 21:23 ` Stephen Warren
[not found] ` <1403558626-13422-1-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-06-23 21:23 ` [GIT PULL 2/3] ARM: tegra: move fuse code out of arch/arm Stephen Warren
2014-06-23 21:23 ` Stephen Warren
[not found] ` <1403558626-13422-2-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-07 0:44 ` Olof Johansson
2014-07-07 0:44 ` Olof Johansson
[not found] ` <20140707004417.GE8469-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org>
2014-07-08 13:43 ` Peter De Schrijver
2014-07-08 13:43 ` Peter De Schrijver
[not found] ` <20140708134359.GA23218-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2014-07-08 17:47 ` Olof Johansson
2014-07-08 17:47 ` Olof Johansson
[not found] ` <CAOesGMhoqvqf-dktp-OfUNTPLahPwkyAPiTeDngr4QjH=VfOGA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-09 11:16 ` Peter De Schrijver
2014-07-09 11:16 ` Peter De Schrijver
[not found] ` <20140709111633.GG23218-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2014-07-09 12:50 ` Arnd Bergmann
2014-07-09 12:50 ` Arnd Bergmann
2014-07-11 12:56 ` Thierry Reding
2014-07-11 12:56 ` Thierry Reding
2014-07-18 2:45 ` Stephen Warren
2014-07-18 2:45 ` Stephen Warren
[not found] ` <53C88A4C.3070304-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-18 5:33 ` Olof Johansson
2014-07-18 5:33 ` Olof Johansson
[not found] ` <CAOesGMh+zLV781wzdR5=_Bpzh+XMwJfWL-5XMDP6DwG_Hg80kw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-21 15:06 ` Stephen Warren
2014-07-21 15:06 ` Stephen Warren
[not found] ` <53CD2C58.6060601-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-21 15:54 ` Catalin Marinas
2014-07-21 15:54 ` Catalin Marinas
[not found] ` <20140721155451.GF32578-5wv7dgnIgG8@public.gmane.org>
2014-07-21 16:14 ` Pawel Moll
2014-07-21 16:14 ` Pawel Moll
2014-07-21 16:38 ` Stephen Warren
2014-07-21 16:38 ` Stephen Warren
[not found] ` <53CD4201.5070705-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-21 16:46 ` Olof Johansson
2014-07-21 16:46 ` Olof Johansson
[not found] ` <CAOesGMgvd1HbjywN7BDPtr8ZU7vucWH48B=AW3TZjng73YA8WA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-21 17:00 ` [PATCH] platform: Make platform_bus device a platform device Pawel Moll
2014-07-21 17:00 ` Pawel Moll
[not found] ` <1405962034-25482-1-git-send-email-pawel.moll-5wv7dgnIgG8@public.gmane.org>
2014-07-21 18:40 ` Greg Kroah-Hartman
2014-07-21 18:40 ` Greg Kroah-Hartman
[not found] ` <20140721184007.GB572-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-22 10:02 ` [PATCH v2] " Pawel Moll
2014-07-22 10:02 ` Pawel Moll
[not found] ` <1406023327-18525-1-git-send-email-pawel.moll-5wv7dgnIgG8@public.gmane.org>
2014-07-22 17:10 ` Greg Kroah-Hartman
2014-07-22 17:10 ` Greg Kroah-Hartman
[not found] ` <20140722171013.GA6605-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-22 17:30 ` Pawel Moll
2014-07-22 17:30 ` Pawel Moll
2014-07-22 17:37 ` Greg Kroah-Hartman
2014-07-22 17:37 ` Greg Kroah-Hartman
[not found] ` <20140722173713.GA8959-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-22 17:55 ` [PATCH v3] " Pawel Moll
2014-07-22 17:55 ` Pawel Moll
[not found] ` <1406051719-17354-1-git-send-email-pawel.moll-5wv7dgnIgG8@public.gmane.org>
2014-07-22 18:01 ` Pawel Moll
2014-07-22 18:01 ` Pawel Moll
2014-07-22 18:15 ` Greg Kroah-Hartman
2014-07-22 18:15 ` Greg Kroah-Hartman
[not found] ` <20140722181505.GA9898-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-23 17:16 ` Pawel Moll
2014-07-23 17:16 ` Pawel Moll
2014-07-23 19:34 ` Greg Kroah-Hartman
2014-07-23 19:34 ` Greg Kroah-Hartman
[not found] ` <20140723193434.GA31983-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-24 17:12 ` Pawel Moll
2014-07-24 17:12 ` Pawel Moll
2014-07-22 19:46 ` Olof Johansson
2014-07-22 19:46 ` Olof Johansson
[not found] ` <CAOesGMgya9i=zc_AVO_mgrC_FjYz-RWxwXguNueVA=7gpq=5sA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-23 14:26 ` Pawel Moll
2014-07-23 14:26 ` Pawel Moll
2014-07-22 22:16 ` Greg Kroah-Hartman
2014-07-22 22:16 ` Greg Kroah-Hartman
[not found] ` <20140722221619.GA15781-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-23 14:27 ` Pawel Moll
2014-07-23 14:27 ` Pawel Moll
2014-07-22 10:27 ` [GIT PULL 2/3] ARM: tegra: move fuse code out of arch/arm Catalin Marinas
2014-07-22 10:27 ` Catalin Marinas
[not found] ` <20140722102749.GB2219-5wv7dgnIgG8@public.gmane.org>
2014-07-22 16:27 ` Stephen Warren
2014-07-22 16:27 ` Stephen Warren
[not found] ` <53CE90ED.8030900-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-22 16:54 ` Catalin Marinas
2014-07-22 16:54 ` Catalin Marinas
2014-07-22 11:26 ` Catalin Marinas
2014-07-22 11:26 ` Catalin Marinas
[not found] ` <20140722112651.GC2219-5wv7dgnIgG8@public.gmane.org>
2014-07-22 16:22 ` Stephen Warren
2014-07-22 16:22 ` Stephen Warren
[not found] ` <53CE8FB1.4060307-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-22 17:04 ` Catalin Marinas [this message]
2014-07-22 17:04 ` Catalin Marinas
2014-07-18 2:44 ` Stephen Warren
2014-07-18 2:44 ` Stephen Warren
[not found] ` <53C889FF.4070206-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-18 5:33 ` Olof Johansson
2014-07-18 5:33 ` Olof Johansson
2014-06-23 21:23 ` [GIT PULL 3/3] ARM: tegra: use us counter as delay timer Stephen Warren
2014-06-23 21:23 ` Stephen Warren
[not found] ` <1403558626-13422-3-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-07 0:49 ` Olof Johansson
2014-07-07 0:49 ` Olof Johansson
2014-07-07 0:38 ` [GIT PULL 1/3] ARM: tegra: rework PCIe regulators Olof Johansson
2014-07-07 0:38 ` Olof Johansson
[not found] ` <20140707003854.GD8469-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org>
2014-07-07 5:52 ` Thierry Reding
2014-07-07 5:52 ` Thierry Reding
2014-07-08 4:45 ` Olof Johansson
2014-07-08 4:45 ` Olof Johansson
[not found] ` <CAOesGMjwE=xThuUwmBF02YaQ32_uFogryW5anNoGc8yfkuN_Pg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-10 10:15 ` Thierry Reding
2014-07-10 10:15 ` Thierry Reding
2014-07-17 14:20 ` Thierry Reding
2014-07-17 14:20 ` Thierry Reding
2014-07-17 17:52 ` Olof Johansson
2014-07-17 17:52 ` Olof Johansson
2014-07-18 2:47 ` Stephen Warren
2014-07-18 2:47 ` Stephen Warren
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=20140722170415.GU2219@arm.com \
--to=catalin.marinas-5wv7dgnigg8@public.gmane.org \
--cc=Pawel.Moll-5wv7dgnIgG8@public.gmane.org \
--cc=arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
--cc=paul-DWxLp4Yu+b8AvxtiuMwx3w@public.gmane.org \
--cc=pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.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.