[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <164870615889.127053.9055569952366814752.stgit@devnote2>
Date: Thu, 31 Mar 2022 14:55:59 +0900
From: Masami Hiramatsu <mhiramat@...nel.org>
To: Steven Rostedt <rostedt@...dmis.org>
Cc: Masami Hiramatsu <mhiramat@...nel.org>,
Padmanabha Srinivasaiah <treasure4paddy@...il.com>,
LKML <linux-kernel@...r.kernel.org>,
Jonathan Corbet <corbet@....net>, linux-doc@...r.kernel.org,
Randy Dunlap <rdunlap@...radead.org>,
Nick Desaulniers <ndesaulniers@...gle.com>,
Sami Tolvanen <samitolvanen@...gle.com>,
Nathan Chancellor <nathan@...nel.org>, llvm@...ts.linux.dev,
Masahiro Yamada <masahiroy@...nel.org>,
Linux Kbuild mailing list <linux-kbuild@...r.kernel.org>
Subject: [PATCH v6 0/4] bootconfig: Support embedding a bootconfig in kernel for non initrd boot
Hi,
Here are the 6th version of the patchset to enable kernel embedded bootconfig
for non-initrd kernel boot environment. This version adds a new patch to use
obj-y instead of lib-y for bootconfig([1/4]) and split the inline asm code into
independent asm file for incremental build with LTO THIN mode issue(*), which
was reported in the previous version [1].
[1] https://lore.kernel.org/all/164847778869.3060675.8115416881394543419.stgit@devnote2/T/#u
You can embed a bootconfig file into the kernel as a default bootconfig,
which will be used if there is no initrd or no bootconfig is attached to initrd.
This needs 2 options: CONFIG_EMBED_BOOT_CONFIG=y and set the file
path to CONFIG_EMBED_BOOT_CONFIG_FILE. Even if you embed the bootconfig file
to the kernel, it will not be enabled unless you pass "bootconfig" kernel
command line option at boot. Moreover, since this is just a "default"
bootconfig, you can override it with a new bootconfig if you attach another
bootconfig to the initrd (if possible).
CONFIG_EMBED_BOOT_CONFIG_FILE can take both absolute and relative path, but
to simplify and make it independent from the build environment, I recommend
you to use an absolute path for that.
This is requested by Padmanabha at the below thread[2];
[2] https://lore.kernel.org/all/20220307184011.GA2570@pswork/T/#u
(*) this issue has been reported to github ClangBuiltLinux project [3]
[3] https://github.com/ClangBuiltLinux/linux/issues/1618
and Nick told me that we can avoid this by disabling LTO on that file.
CFLAGS_REMOVE_<file>.o := $(CC_FLAGS_LTO)
But I chose Masahiro's idea to split the inline asm into an independent
asm file, since that can also simplify the Makefile.
The above mitigation should be applied to kernel/configs.c and kernel/kheaders.c
but that should be another story (maybe LTO bugfix?).
Thank you,
---
Masami Hiramatsu (4):
bootconfig: Make the bootconfig.o as a normal object file
bootconfig: Check the checksum before removing the bootconfig from initrd
bootconfig: Support embedding a bootconfig file in kernel
docs: bootconfig: Add how to embed the bootconfig into kernel
Documentation/admin-guide/bootconfig.rst | 31 +++++++++++++++++++++++++++---
MAINTAINERS | 1 +
include/linux/bootconfig.h | 10 ++++++++++
init/Kconfig | 21 ++++++++++++++++++++
init/main.c | 31 +++++++++++++++---------------
lib/.gitignore | 1 +
lib/Makefile | 10 +++++++++-
lib/bootconfig-data.S | 11 +++++++++++
lib/bootconfig.c | 13 +++++++++++++
9 files changed, 110 insertions(+), 19 deletions(-)
create mode 100644 lib/bootconfig-data.S
--
Masami Hiramatsu (Linaro) <mhiramat@...nel.org>
Powered by blists - more mailing lists