Skip to content
Snippets Groups Projects
  1. Dec 29, 2024
  2. Dec 22, 2024
  3. Dec 15, 2024
  4. Dec 08, 2024
  5. Dec 01, 2024
  6. Nov 27, 2024
    • Parth Pancholi's avatar
      kbuild: switch from lz4c to lz4 for compression · e397a603
      Parth Pancholi authored
      Replace lz4c with lz4 for kernel image compression.
      Although lz4 and lz4c are functionally similar, lz4c has been deprecated
      upstream since 2018. Since as early as Ubuntu 16.04 and Fedora 25, lz4
      and lz4c have been packaged together, making it safe to update the
      requirement from lz4c to lz4.
      
      Consequently, some distributions and build systems, such as OpenEmbedded,
      have fully transitioned to using lz4. OpenEmbedded core adopted this
      change in commit fe167e082cbd ("bitbake.conf: require lz4 instead of
      lz4c"), causing compatibility issues when building the mainline kernel
      in the latest OpenEmbedded environment, as seen in the errors below.
      
      This change also updates the LZ4 compression commands to make it backward
      compatible by replacing stdin and stdout with the '-' option, due to some
      unclear reason, the stdout keyword does not work for lz4 and '-' works for
      both. In addition, this modifies the legacy '-c1' with '-9' which is also
      compatible with both. This fixes the mainline kernel build failures with
      the latest master OpenEmbedded builds associated with the mentioned
      compatibility issues.
      
      LZ4     arch/arm/boot/compressed/piggy_data
      /bin/sh: 1: lz4c: not found
      ...
      ...
      ERROR: oe_runmake failed
      
      Link: https://github.com/lz4/lz4/pull/553
      
      
      Suggested-by: default avatarFrancesco Dolcini <francesco.dolcini@toradex.com>
      Signed-off-by: default avatarParth Pancholi <parth.pancholi@toradex.com>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      e397a603
    • Masahiro Yamada's avatar
      kbuild: remove support for single %.symtypes build rule · 91ca8be3
      Masahiro Yamada authored
      
      This rule is unnecessary because you can generate foo/bar.symtypes
      as a side effect using:
      
        $ make KBUILD_SYMTYPES=1 foo/bar.o
      
      While compiling *.o is slower than preprocessing, the impact is
      negligible. I prioritize keeping the code simpler.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      91ca8be3
    • Masahiro Yamada's avatar
      kbuild: allow to start building external modules in any directory · 8cd07cc6
      Masahiro Yamada authored
      
      Unless an explicit O= option is provided, external module builds must
      start from the kernel directory.
      
      This can be achieved by using the -C option:
      
        $ make -C /path/to/kernel M=/path/to/external/module
      
      This commit allows starting external module builds from any directory,
      so you can also do the following:
      
        $ make -f /path/to/kernel/Makefile M=/path/to/external/module
      
      The key difference is that the -C option changes the working directory
      and parses the Makefile located there, while the -f option only
      specifies the Makefile to use.
      
      As shown in the examples in Documentation/kbuild/modules.rst, external
      modules usually have a wrapper Makefile that allows you to build them
      without specifying any make arguments. The Makefile typically contains
      a rule as follows:
      
          KDIR ?= /path/to/kernel
          default:
                  $(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKECMDGOALS)
      
      The log will appear as follows:
      
          $ make
          make -C /path/to/kernel M=/path/to/external/module
          make[1]: Entering directory '/path/to/kernel'
          make[2]: Entering directory '/path/to/external/module'
            CC [M]  helloworld.o
            MODPOST Module.symvers
            CC [M]  helloworld.mod.o
            CC [M]  .module-common.o
            LD [M]  helloworld.ko
          make[2]: Leaving directory '/path/to/external/module'
          make[1]: Leaving directory '/path/to/kernel'
      
      This changes the working directory twice because the -C option first
      switches to the kernel directory, and then Kbuild internally recurses
      back to the external module directory.
      
      With this commit, the wrapper Makefile can directly include the kernel
      Makefile:
      
          KDIR ?= /path/to/kernel
          export KBUILD_EXTMOD := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
          include $(KDIR)/Makefile
      
      This avoids unnecessary sub-make invocations:
      
          $ make
            CC [M]  helloworld.o
            MODPOST Module.symvers
            CC [M]  helloworld.mod.o
            CC [M]  .module-common.o
            LD [M]  helloworld.ko
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      8cd07cc6
    • Masahiro Yamada's avatar
      kbuild: make wrapper Makefile more convenient for external modules · a2a45ebe
      Masahiro Yamada authored
      
      When Kbuild starts building in a separate output directory, it generates
      a wrapper Makefile, allowing you to invoke 'make' from the output
      directory.
      
      This commit makes it more convenient, so you can invoke 'make' without
      M= or MO=.
      
      First, you need to build external modules in a separate directory:
      
        $ make M=/path/to/module/source/dir MO=/path/to/module/build/dir
      
      Once the wrapper Makefile is generated in /path/to/module/build/dir,
      you can proceed as follows:
      
        $ cd /path/to/module/build/dir
        $ make
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      a2a45ebe
    • Masahiro Yamada's avatar
      kbuild: use absolute path in the generated wrapper Makefile · 822b11a7
      Masahiro Yamada authored
      
      Keep the consistent behavior when this Makefile is invoked from another
      directory.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      822b11a7
    • Masahiro Yamada's avatar
      kbuild: support -fmacro-prefix-map for external modules · 1d3730f0
      Masahiro Yamada authored
      
      This commit makes -fmacro-prefix-map work for external modules built in
      a separate output directory. It improves the reproducibility of external
      modules and provides the benefits described in commit a73619a8
      ("kbuild: use -fmacro-prefix-map to make __FILE__ a relative path").
      
      When building_out_of_srctree is not defined (e.g., when the kernel or
      external module is built in the source directory), this option is
      unnecessary.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      1d3730f0
    • Masahiro Yamada's avatar
      kbuild: support building external modules in a separate build directory · 11b3d517
      Masahiro Yamada authored
      
      There has been a long-standing request to support building external
      modules in a separate build directory.
      
      This commit introduces a new environment variable, KBUILD_EXTMOD_OUTPUT,
      and its shorthand Make variable, MO.
      
      A simple usage:
      
       $ make -C <kernel-dir> M=<module-src-dir> MO=<module-build-dir>
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      11b3d517
    • Masahiro Yamada's avatar
      kbuild: remove extmod_prefix, MODORDER, MODULES_NSDEPS variables · bad6beb2
      Masahiro Yamada authored
      
      With the previous changes, $(extmod_prefix), $(MODORDER), and
      $(MODULES_NSDEPS) are constant. (empty, modules.order, and
      modules.nsdeps, respectively).
      
      Remove these variables and hard-code their values.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      bad6beb2
    • Masahiro Yamada's avatar
      kbuild: change working directory to external module directory with M= · 13b25489
      Masahiro Yamada authored
      
      Currently, Kbuild always operates in the output directory of the kernel,
      even when building external modules. This increases the risk of external
      module Makefiles attempting to write to the kernel directory.
      
      This commit switches the working directory to the external module
      directory, allowing the removal of the $(KBUILD_EXTMOD)/ prefix from
      some build artifacts.
      
      The command for building external modules maintains backward
      compatibility, but Makefiles that rely on working in the kernel
      directory may break. In such cases, $(objtree) and $(srctree) should
      be used to refer to the output and source directories of the kernel.
      
      The appearance of the build log will change as follows:
      
      [Before]
      
        $ make -C /path/to/my/linux M=/path/to/my/externel/module
        make: Entering directory '/path/to/my/linux'
          CC [M]  /path/to/my/externel/module/helloworld.o
          MODPOST /path/to/my/externel/module/Module.symvers
          CC [M]  /path/to/my/externel/module/helloworld.mod.o
          CC [M]  /path/to/my/externel/module/.module-common.o
          LD [M]  /path/to/my/externel/module/helloworld.ko
        make: Leaving directory '/path/to/my/linux'
      
      [After]
      
        $ make -C /path/to/my/linux M=/path/to/my/externel/module
        make: Entering directory '/path/to/my/linux'
        make[1]: Entering directory '/path/to/my/externel/module'
          CC [M]  helloworld.o
          MODPOST Module.symvers
          CC [M]  helloworld.mod.o
          CC [M]  .module-common.o
          LD [M]  helloworld.ko
        make[1]: Leaving directory '/path/to/my/externel/module'
        make: Leaving directory '/path/to/my/linux'
      
      Printing "Entering directory" twice is cumbersome. This will be
      addressed later.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      13b25489
    • Masahiro Yamada's avatar
      kbuild: use 'output' variable to create the output directory · d1711360
      Masahiro Yamada authored
      
      $(KBUILD_OUTPUT) specifies the output directory of kernel builds.
      
      Use a more generic name, 'output', to better reflect this code hunk in
      the context of external module builds.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      d1711360
    • Masahiro Yamada's avatar
      kbuild: rename abs_objtree to abs_output · 5ea17216
      Masahiro Yamada authored
      
      'objtree' refers to the top of the output directory of kernel builds.
      
      Rename abs_objtree to a more generic name, to better reflect its use in
      the context of external module builds.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      5ea17216
    • Masahiro Yamada's avatar
      kbuild: add $(objtree)/ prefix to some in-kernel build artifacts · 214c0eea
      Masahiro Yamada authored
      
      $(objtree) refers to the top of the output directory of kernel builds.
      
      This commit adds the explicit $(objtree)/ prefix to build artifacts
      needed for building external modules.
      
      This change has no immediate impact, as the top-level Makefile
      currently defines:
      
        objtree         := .
      
      This commit prepares for supporting the building of external modules
      in a different directory.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      214c0eea
    • Masahiro Yamada's avatar
      kbuild: replace two $(abs_objtree) with $(CURDIR) in top Makefile · 0afd73c5
      Masahiro Yamada authored
      
      Kbuild changes the working directory until it matches $(abs_objtree).
      
      When $(need-sub-make) is empty, $(abs_objtree) is the same as $(CURDIR).
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      0afd73c5
    • Rong Xu's avatar
      kbuild: Add Propeller configuration for kernel build · d5dc9583
      Rong Xu authored
      Add the build support for using Clang's Propeller optimizer. Like
      AutoFDO, Propeller uses hardware sampling to gather information
      about the frequency of execution of different code paths within a
      binary. This information is then used to guide the compiler's
      optimization decisions, resulting in a more efficient binary.
      
      The support requires a Clang compiler LLVM 19 or later, and the
      create_llvm_prof tool
      (https://github.com/google/autofdo/releases/tag/v0.30.1). This
      commit is limited to x86 platforms that support PMU features
      like LBR on Intel machines and AMD Zen3 BRS.
      
      Here is an example workflow for building an AutoFDO+Propeller
      optimized kernel:
      
      1) Build the kernel on the host machine, with AutoFDO and Propeller
         build config
            CONFIG_AUTOFDO_CLANG=y
            CONFIG_PROPELLER_CLANG=y
         then
            $ make LLVM=1 CLANG_AUTOFDO_PROFILE=<autofdo_profile>
      
      “<autofdo_profile>” is the profile collected when doing a non-Propeller
      AutoFDO build. This step builds a kernel that has the same optimization
      level as AutoFDO, plus a metadata section that records basic block
      information. This kernel image runs as fast as an AutoFDO optimized
      kernel.
      
      2) Install the kernel on test/production machines.
      
      3) Run the load tests. The '-c' option in perf specifies the sample
         event period. We suggest using a suitable prime number,
         like 500009, for this purpose.
         For Intel platforms:
            $ perf record -e BR_INST_RETIRED.NEAR_TAKEN:k -a -N -b -c <count> \
              -o <perf_file> -- <loadtest>
         For AMD platforms:
            The supported system are: Zen3 with BRS, or Zen4 with amd_lbr_v2
            # To see if Zen3 support LBR:
            $ cat proc/cpuinfo | grep " brs"
            # To see if Zen4 support LBR:
            $ cat proc/cpuinfo | grep amd_lbr_v2
            # If the result is yes, then collect the profile using:
            $ perf record --pfm-events RETIRED_TAKEN_BRANCH_INSTRUCTIONS:k -a \
              -N -b -c <count> -o <perf_file> -- <loadtest>
      
      4) (Optional) Download the raw perf file to the host machine.
      
      5) Generate Propeller profile:
         $ create_llvm_prof --binary=<vmlinux> --profile=<perf_file> \
           --format=propeller --propeller_output_module_name \
           --out=<propeller_profile_prefix>_cc_profile.txt \
           --propeller_symorder=<propeller_profile_prefix>_ld_profile.txt
      
         “create_llvm_prof” is the profile conversion tool, and a prebuilt
         binary for linux can be found on
         https://github.com/google/autofdo/releases/tag/v0.30.1
      
       (can also build
         from source).
      
         "<propeller_profile_prefix>" can be something like
         "/home/user/dir/any_string".
      
         This command generates a pair of Propeller profiles:
         "<propeller_profile_prefix>_cc_profile.txt" and
         "<propeller_profile_prefix>_ld_profile.txt".
      
      6) Rebuild the kernel using the AutoFDO and Propeller profile files.
            CONFIG_AUTOFDO_CLANG=y
            CONFIG_PROPELLER_CLANG=y
         and
            $ make LLVM=1 CLANG_AUTOFDO_PROFILE=<autofdo_profile> \
              CLANG_PROPELLER_PROFILE_PREFIX=<propeller_profile_prefix>
      
      Co-developed-by: default avatarHan Shen <shenhan@google.com>
      Signed-off-by: default avatarHan Shen <shenhan@google.com>
      Signed-off-by: default avatarRong Xu <xur@google.com>
      Suggested-by: default avatarSriraman Tallam <tmsriram@google.com>
      Suggested-by: default avatarKrzysztof Pszeniczny <kpszeniczny@google.com>
      Suggested-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Suggested-by: default avatarStephane Eranian <eranian@google.com>
      Tested-by: default avatarYonghong Song <yonghong.song@linux.dev>
      Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
      Reviewed-by: default avatarKees Cook <kees@kernel.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      d5dc9583
  7. Nov 24, 2024
  8. Nov 17, 2024
  9. Nov 10, 2024
  10. Nov 06, 2024
    • Rong Xu's avatar
      kbuild: Add AutoFDO support for Clang build · 315ad878
      Rong Xu authored
      Add the build support for using Clang's AutoFDO. Building the kernel
      with AutoFDO does not reduce the optimization level from the
      compiler. AutoFDO uses hardware sampling to gather information about
      the frequency of execution of different code paths within a binary.
      This information is then used to guide the compiler's optimization
      decisions, resulting in a more efficient binary. Experiments
      showed that the kernel can improve up to 10% in latency.
      
      The support requires a Clang compiler after LLVM 17. This submission
      is limited to x86 platforms that support PMU features like LBR on
      Intel machines and AMD Zen3 BRS. Support for SPE on ARM 1,
       and BRBE on ARM 1 is part of planned future work.
      
      Here is an example workflow for AutoFDO kernel:
      
      1) Build the kernel on the host machine with LLVM enabled, for example,
             $ make menuconfig LLVM=1
          Turn on AutoFDO build config:
            CONFIG_AUTOFDO_CLANG=y
          With a configuration that has LLVM enabled, use the following
          command:
             scripts/config -e AUTOFDO_CLANG
          After getting the config, build with
            $ make LLVM=1
      
      2) Install the kernel on the test machine.
      
      3) Run the load tests. The '-c' option in perf specifies the sample
         event period. We suggest     using a suitable prime number,
         like 500009, for this purpose.
         For Intel platforms:
            $ perf record -e BR_INST_RETIRED.NEAR_TAKEN:k -a -N -b -c <count> \
              -o <perf_file> -- <loadtest>
         For AMD platforms:
            The supported system are: Zen3 with BRS, or Zen4 with amd_lbr_v2
           For Zen3:
            $ cat proc/cpuinfo | grep " brs"
            For Zen4:
            $ cat proc/cpuinfo | grep amd_lbr_v2
            $ perf record --pfm-events RETIRED_TAKEN_BRANCH_INSTRUCTIONS:k -a \
              -N -b -c <count> -o <perf_file> -- <loadtest>
      
      4) (Optional) Download the raw perf file to the host machine.
      
      5) To generate an AutoFDO profile, two offline tools are available:
         create_llvm_prof and llvm_profgen. The create_llvm_prof tool is part
         of the AutoFDO project and can be found on GitHub
         (https://github.com/google/autofdo
      
      ), version v0.30.1 or later. The
         llvm_profgen tool is included in the LLVM compiler itself. It's
         important to note that the version of llvm_profgen doesn't need to
         match the version of Clang. It needs to be the LLVM 19 release or
         later, or from the LLVM trunk.
            $ llvm-profgen --kernel --binary=<vmlinux> --perfdata=<perf_file> \
              -o <profile_file>
         or
            $ create_llvm_prof --binary=<vmlinux> --profile=<perf_file> \
              --format=extbinary --out=<profile_file>
      
         Note that multiple AutoFDO profile files can be merged into one via:
            $ llvm-profdata merge -o <profile_file>  <profile_1> ... <profile_n>
      
      6) Rebuild the kernel using the AutoFDO profile file with the same config
         as step 1, (Note CONFIG_AUTOFDO_CLANG needs to be enabled):
            $ make LLVM=1 CLANG_AUTOFDO_PROFILE=<profile_file>
      
      Co-developed-by: default avatarHan Shen <shenhan@google.com>
      Signed-off-by: default avatarHan Shen <shenhan@google.com>
      Signed-off-by: default avatarRong Xu <xur@google.com>
      Suggested-by: default avatarSriraman Tallam <tmsriram@google.com>
      Suggested-by: default avatarKrzysztof Pszeniczny <kpszeniczny@google.com>
      Suggested-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Suggested-by: default avatarStephane Eranian <eranian@google.com>
      Tested-by: default avatarYonghong Song <yonghong.song@linux.dev>
      Tested-by: default avatarYabin Cui <yabinc@google.com>
      Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
      Reviewed-by: default avatarKees Cook <kees@kernel.org>
      Tested-by: default avatarPeter Jung <ptr1337@cachyos.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      315ad878
    • Masahiro Yamada's avatar
      kbuild: simplify rustfmt target · 397a479b
      Masahiro Yamada authored
      
      There is no need to prune the rust/alloc directory because it was
      removed by commit 9d0441ba ("rust: alloc: remove our fork of the
      `alloc` crate").
      
      There is no need to prune the rust/test directory because no '*.rs'
      files are generated within it.
      
      To avoid forking the 'grep -Fv generated' process, filter out generated
      files using the option, ! -name '*generated*'.
      
      Now that the '-path ... -prune' option is no longer used, there is no
      need to use the absolute path. Searching in $(srctree), which can be
      a relative path, is sufficient.
      
      The comment mentions the use case where $(srctree) is '..', that is,
      $(objtree) is a sub-directory of $(srctree). In this scenario, all
      '*.rs' files under $(objtree) are generated files and filters out by
      the '*generated*' pattern.
      
      Add $(RCS_FIND_IGNORE) as a shortcut. Although I do not believe '*.rs'
      files would exist under the .git directory, there is no need for the
      'find' command to traverse it.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      Acked-by: default avatarMiguel Ojeda <ojeda@kernel.org>
      397a479b
  11. Nov 05, 2024
  12. Nov 04, 2024
    • Masahiro Yamada's avatar
      kbuild: add generic support for built-in boot DTBs · 654102df
      Masahiro Yamada authored
      
      Some architectures embed boot DTBs in vmlinux. A potential issue for
      these architectures is a race condition during parallel builds because
      Kbuild descends into arch/*/boot/dts/ twice.
      
      One build thread is initiated by the 'dtbs' target, which is a
      prerequisite of the 'all' target in the top-level Makefile:
      
        ifdef CONFIG_OF_EARLY_FLATTREE
        all: dtbs
        endif
      
      For architectures that support the built-in boot dtb, arch/*/boot/dts/
      is visited also during the ordinary directory traversal in order to
      build obj-y objects that wrap DTBs.
      
      Since these build threads are unaware of each other, they can run
      simultaneously during parallel builds.
      
      This commit introduces a generic build rule to scripts/Makefile.vmlinux
      to support embedded boot DTBs in a race-free way. Architectures that
      want to use this rule need to select CONFIG_GENERIC_BUILTIN_DTB.
      
      After the migration, Makefiles under arch/*/boot/dts/ will be visited
      only once to build only *.dtb files.
      
      This change also aims to unify the CONFIG options used for built-in DTBs
      support. Currently, different architectures use different CONFIG options
      for the same purposes.
      
      With this commit, the CONFIG options will be unified as follows:
      
       - CONFIG_GENERIC_BUILTIN_DTB
      
         This enables the generic rule for built-in boot DTBs. This will be
         renamed to CONFIG_BUILTIN_DTB after all architectures migrate to the
         generic rule.
      
       - CONFIG_BUILTIN_DTB_NAME
      
         This specifies the path to the embedded DTB.
         (relative to arch/*/boot/dts/)
      
       - CONFIG_BUILTIN_DTB_ALL
      
         If this is enabled, all DTB files compiled under arch/*/boot/dts/ are
         embedded into vmlinux. Only used by MIPS.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      654102df
    • Masahiro Yamada's avatar
      kbuild: check the presence of include/generated/rustc_cfg · 985d6ccc
      Masahiro Yamada authored
      
      Since commit 2f7ab126 ("Kbuild: add Rust support"), Kconfig
      generates include/generated/rustc_cfg, but its presence is not checked
      in the top-level Makefile. It should be checked similarly to the C
      header counterpart, include/generated/autoconf.h.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      Acked-by: default avatarMiguel Ojeda <ojeda@kernel.org>
      Tested-by: default avatarMiguel Ojeda <ojeda@kernel.org>
      985d6ccc
    • Masahiro Yamada's avatar
      kbuild: refactor the check for missing config files · ec873a4c
      Masahiro Yamada authored
      
      This commit refactors the check for missing configuration files, making
      it easier to add more files to the list.
      
      The format of the error message has been slightly changed, as follows:
      
      [Before]
      
          ERROR: Kernel configuration is invalid.
                 include/generated/autoconf.h or include/config/auto.conf are missing.
                 Run 'make oldconfig && make prepare' on kernel src to fix it.
      
      [After]
      
        ***
        ***  ERROR: Kernel configuration is invalid. The following files are missing:
        ***    - include/generated/autoconf.h
        ***    - include/config/auto.conf
        ***  Run "make oldconfig && make prepare" on kernel source to fix it.
        ***
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      Tested-by: default avatarMiguel Ojeda <ojeda@kernel.org>
      ec873a4c
    • Linus Torvalds's avatar
      Linux 6.12-rc6 · 59b723cd
      Linus Torvalds authored
      59b723cd
  13. Oct 27, 2024
  14. Oct 20, 2024
  15. Oct 13, 2024
  16. Oct 07, 2024
Loading