Messages in this thread | | | From | Masami Hiramatsu <> | Subject | [PATCH v6 0/4] bootconfig: Support embedding a bootconfig in kernel for non initrd boot | Date | Thu, 31 Mar 2022 14:55:59 +0900 |
| |
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@kernel.org>
| |