Merge tag 'bootconfig-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 23 Feb 2023 22:27:01 +0000 (14:27 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 23 Feb 2023 22:27:01 +0000 (14:27 -0800)
Pull bootconfig updates from Masami Hiramatsu:

 - Fix ftrace2bconf.sh tool for checking event enable status correctly

 - Add CONFIG_BOOT_CONFIG_FORCE to apply bootconfig without 'bootconfig'
   boot parameter

 - Enable CONFIG_BOOT_CONFIG_FORCE by default if a bootconfig is
   embedded in the kernel

 - Increase max number of nodes of bootconfig to 8192

* tag 'bootconfig-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
  bootconfig: Increase max nodes of bootconfig from 1024 to 8192 for DCC support
  bootconfig: Default BOOT_CONFIG_FORCE to y if BOOT_CONFIG_EMBED
  Allow forcing unconditional bootconfig processing
  tools/bootconfig: fix single & used for logical condition

Documentation/admin-guide/bootconfig.rst
include/linux/bootconfig.h
init/Kconfig
init/main.c
tools/bootconfig/scripts/ftrace2bconf.sh

index 9355c52..91339ef 100644 (file)
@@ -201,6 +201,8 @@ To remove the config from the image, you can use -d option as below::
 
 Then add "bootconfig" on the normal kernel command line to tell the
 kernel to look for the bootconfig at the end of the initrd file.
+Alternatively, build your kernel with the ``CONFIG_BOOT_CONFIG_FORCE``
+Kconfig option selected.
 
 Embedding a Boot Config into Kernel
 -----------------------------------
@@ -217,7 +219,9 @@ path to the bootconfig file from source tree or object tree.
 The kernel will embed it as the default bootconfig.
 
 Just as when attaching the bootconfig to the initrd, you need ``bootconfig``
-option on the kernel command line to enable the embedded bootconfig.
+option on the kernel command line to enable the embedded bootconfig, or,
+alternatively, build your kernel with the ``CONFIG_BOOT_CONFIG_FORCE``
+Kconfig option selected.
 
 Note that even if you set this option, you can override the embedded
 bootconfig by another bootconfig which attached to the initrd.
index 1611f9d..ca73940 100644 (file)
@@ -59,7 +59,7 @@ struct xbc_node {
 /* Maximum size of boot config is 32KB - 1 */
 #define XBC_DATA_MAX   (XBC_VALUE - 1)
 
-#define XBC_NODE_MAX   1024
+#define XBC_NODE_MAX   8192
 #define XBC_KEYLEN_MAX 256
 #define XBC_DEPTH_MAX  16
 
index 77a4318..8a27575 100644 (file)
@@ -1384,6 +1384,19 @@ config BOOT_CONFIG
 
          If unsure, say Y.
 
+config BOOT_CONFIG_FORCE
+       bool "Force unconditional bootconfig processing"
+       depends on BOOT_CONFIG
+       default y if BOOT_CONFIG_EMBED
+       help
+         With this Kconfig option set, BOOT_CONFIG processing is carried
+         out even when the "bootconfig" kernel-boot parameter is omitted.
+         In fact, with this Kconfig option set, there is no way to
+         make the kernel ignore the BOOT_CONFIG-supplied kernel-boot
+         parameters.
+
+         If unsure, say N.
+
 config BOOT_CONFIG_EMBED
        bool "Embed bootconfig file in the kernel"
        depends on BOOT_CONFIG
index e1c3911..669cb89 100644 (file)
@@ -156,7 +156,7 @@ static char *extra_init_args;
 
 #ifdef CONFIG_BOOT_CONFIG
 /* Is bootconfig on command line? */
-static bool bootconfig_found;
+static bool bootconfig_found = IS_ENABLED(CONFIG_BOOT_CONFIG_FORCE);
 static size_t initargs_offs;
 #else
 # define bootconfig_found false
index 6183b36..1603801 100755 (executable)
@@ -93,7 +93,7 @@ referred_vars() {
 }
 
 event_is_enabled() { # enable-file
-       test -f $1 & grep -q "1" $1
+       test -f $1 && grep -q "1" $1
 }
 
 per_event_options() { # event-dir