On Mon, May 22, 2023 at 9:52 AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
On Mon, May 22, 2023 at 12:09:34PM +0200, Ricardo Cañuelo wrote:Ah, right it was the initcall ordering. Thanks for the reminder.
On vie, may 19 2023 at 08:57:24, Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote:Yes, it matters, you can not change it. If you do, systems will break.
It could be; if the link order was changed, it's possible that thisI thought that was specifically a C++ problem? But then again, the
target may be hitting something along the lines of:
https://isocpp.org/wiki/faq/ctors#static-init-order i.e. the "static
initialization order fiasco"
I'm struggling to think of how this appears in C codebases, but I
swear years ago I had a discussion with GKH (maybe?) about this. I
think I was playing with converting Kbuild to use Ninja rather than
Make; the resulting kernel image wouldn't boot because I had modified
the order the object files were linked in. If you were to randomly
shuffle the object files in the kernel, I recall some hazard that may
prevent boot.
kernel docs explicitly say that the ordering of obj-y goals in kbuild is
significant in some instances [1]:
It is the only way we have of properly ordering our init calls within
the same "level".
(There's a joke in there similar to the use of regexes to solve a
problem resulting in two new problems; initcalls have levels for
ordering, but we still have (unexpressed) dependencies between calls
of the same level; brittle!).
+Maksim, since that might be relevant info for the BOLT+Kernel work.
Ricardo,
https://elinux.org/images/e/e8/2020_ELCE_initcalls_myjosserand.pdf
mentions that there's a kernel command line param `initcall_debug`.
Perhaps that can be used to see if
5750121ae7382ebac8d47ce6d68012d6cd1d7926 somehow changed initcall
ordering, resulting in a config that cannot boot?