]> Git Repo - linux.git/commitdiff
Merge tag 'kbuild-v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy...
authorLinus Torvalds <[email protected]>
Thu, 21 Mar 2024 21:41:00 +0000 (14:41 -0700)
committerLinus Torvalds <[email protected]>
Thu, 21 Mar 2024 21:41:00 +0000 (14:41 -0700)
Pull Kbuild updates from Masahiro Yamada:

 - Generate a list of built DTB files (arch/*/boot/dts/dtbs-list)

 - Use more threads when building Debian packages in parallel

 - Fix warnings shown during the RPM kernel package uninstallation

 - Change OBJECT_FILES_NON_STANDARD_*.o etc. to take a relative path to
   Makefile

 - Support GCC's -fmin-function-alignment flag

 - Fix a null pointer dereference bug in modpost

 - Add the DTB support to the RPM package

 - Various fixes and cleanups in Kconfig

* tag 'kbuild-v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (67 commits)
  kconfig: tests: test dependency after shuffling choices
  kconfig: tests: add a test for randconfig with dependent choices
  kconfig: tests: support KCONFIG_SEED for the randconfig runner
  kbuild: rpm-pkg: add dtb files in kernel rpm
  kconfig: remove unneeded menu_is_visible() call in conf_write_defconfig()
  kconfig: check prompt for choice while parsing
  kconfig: lxdialog: remove unused dialog colors
  kconfig: lxdialog: fix button color for blackbg theme
  modpost: fix null pointer dereference
  kbuild: remove GCC's default -Wpacked-bitfield-compat flag
  kbuild: unexport abs_srctree and abs_objtree
  kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1
  kconfig: remove named choice support
  kconfig: use linked list in get_symbol_str() to iterate over menus
  kconfig: link menus to a symbol
  kbuild: fix inconsistent indentation in top Makefile
  kbuild: Use -fmin-function-alignment when available
  alpha: merge two entries for CONFIG_ALPHA_GAMMA
  alpha: merge two entries for CONFIG_ALPHA_EV4
  kbuild: change DTC_FLAGS_<basetarget>.o to take the path relative to $(obj)
  ...

18 files changed:
1  2 
Makefile
arch/Kconfig
arch/alpha/Kconfig
arch/hexagon/Kconfig
arch/parisc/Kconfig
arch/x86/entry/vdso/Makefile
arch/x86/kvm/Kconfig
drivers/acpi/Kconfig
drivers/iommu/intel/Kconfig
drivers/md/Kconfig
include/linux/compiler_types.h
init/Kconfig
lib/Kconfig.debug
mm/Kconfig
rust/Makefile
scripts/Makefile.build
scripts/Makefile.lib
scripts/mod/modpost.c

diff --combined Makefile
index 6fe2ae1a6d9214a8ff31253b7ac575fb7ef78f22,104e62560eed78c26af73dce6fc14b2ffb62ffc4..5e09b53b485016d3b6a4ba2f1ded15ae84496371
+++ b/Makefile
@@@ -2,7 -2,7 +2,7 @@@
  VERSION = 6
  PATCHLEVEL = 8
  SUBLEVEL = 0
 -EXTRAVERSION = -rc5
 +EXTRAVERSION =
  NAME = Hurr durr I'ma ninja sloth
  
  # *DOCUMENTATION*
@@@ -39,8 -39,8 +39,8 @@@ __all
  # prepare rule.
  
  this-makefile := $(lastword $(MAKEFILE_LIST))
export abs_srctree := $(realpath $(dir $(this-makefile)))
export abs_objtree := $(CURDIR)
+ abs_srctree := $(realpath $(dir $(this-makefile)))
+ abs_objtree := $(CURDIR)
  
  ifneq ($(sub_make_done),1)
  
@@@ -295,51 -295,51 +295,51 @@@ single-build    :
  
  ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
      ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
-               need-config :=
+         need-config :=
      endif
  endif
  
  ifneq ($(filter $(no-sync-config-targets), $(MAKECMDGOALS)),)
      ifeq ($(filter-out $(no-sync-config-targets), $(MAKECMDGOALS)),)
-               may-sync-config :=
+         may-sync-config :=
      endif
  endif
  
  need-compiler := $(may-sync-config)
  
  ifneq ($(KBUILD_EXTMOD),)
-       may-sync-config :=
+     may-sync-config :=
  endif
  
  ifeq ($(KBUILD_EXTMOD),)
-         ifneq ($(filter %config,$(MAKECMDGOALS)),)
-               config-build := 1
-                 ifneq ($(words $(MAKECMDGOALS)),1)
-                       mixed-build := 1
-                 endif
+     ifneq ($(filter %config,$(MAKECMDGOALS)),)
+         config-build := 1
+         ifneq ($(words $(MAKECMDGOALS)),1)
+             mixed-build := 1
          endif
+     endif
  endif
  
  # We cannot build single targets and the others at the same time
  ifneq ($(filter $(single-targets), $(MAKECMDGOALS)),)
-       single-build := 1
+     single-build := 1
      ifneq ($(filter-out $(single-targets), $(MAKECMDGOALS)),)
-               mixed-build := 1
+         mixed-build := 1
      endif
  endif
  
  # For "make -j clean all", "make -j mrproper defconfig all", etc.
  ifneq ($(filter $(clean-targets),$(MAKECMDGOALS)),)
-         ifneq ($(filter-out $(clean-targets),$(MAKECMDGOALS)),)
-               mixed-build := 1
-         endif
+     ifneq ($(filter-out $(clean-targets),$(MAKECMDGOALS)),)
+         mixed-build := 1
+     endif
  endif
  
  # install and modules_install need also be processed one by one
  ifneq ($(filter install,$(MAKECMDGOALS)),)
-         ifneq ($(filter modules_install,$(MAKECMDGOALS)),)
-               mixed-build := 1
-         endif
+     ifneq ($(filter modules_install,$(MAKECMDGOALS)),)
+         mixed-build := 1
+     endif
  endif
  
  ifdef mixed-build
@@@ -561,6 -561,7 +561,6 @@@ KBUILD_CFLAGS += -fno-strict-aliasin
  
  KBUILD_CPPFLAGS := -D__KERNEL__
  KBUILD_RUSTFLAGS := $(rust_common_flags) \
 -                  --target=$(objtree)/scripts/target.json \
                    -Cpanic=abort -Cembed-bitcode=n -Clto=n \
                    -Cforce-unwind-tables=n -Ccodegen-units=1 \
                    -Csymbol-mangling-version=v0 \
@@@ -950,6 -951,14 +950,6 @@@ CC_FLAGS_LTO      += -fvisibility=hidde
  
  # Limit inlining across translation units to reduce binary size
  KBUILD_LDFLAGS += -mllvm -import-instr-limit=5
 -
 -# Check for frame size exceeding threshold during prolog/epilog insertion
 -# when using lld < 13.0.0.
 -ifneq ($(CONFIG_FRAME_WARN),0)
 -ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
 -KBUILD_LDFLAGS        += -plugin-opt=-warn-stack-size=$(CONFIG_FRAME_WARN)
 -endif
 -endif
  endif
  
  ifdef CONFIG_LTO
@@@ -965,8 -974,15 +965,15 @@@ export CC_FLAGS_CF
  endif
  
  ifneq ($(CONFIG_FUNCTION_ALIGNMENT),0)
+ # Set the minimal function alignment. Use the newer GCC option
+ # -fmin-function-alignment if it is available, or fall back to -falign-funtions.
+ # See also CONFIG_CC_HAS_SANE_FUNCTION_ALIGNMENT.
+ ifdef CONFIG_CC_HAS_MIN_FUNCTION_ALIGNMENT
+ KBUILD_CFLAGS += -fmin-function-alignment=$(CONFIG_FUNCTION_ALIGNMENT)
+ else
  KBUILD_CFLAGS += -falign-functions=$(CONFIG_FUNCTION_ALIGNMENT)
  endif
+ endif
  
  # arch Makefile may override CC so keep this after arch Makefile is included
  NOSTDINC_FLAGS += -nostdinc
@@@ -1192,7 -1208,7 +1199,7 @@@ prepare0: archprepar
  # All the preparing..
  prepare: prepare0
  ifdef CONFIG_RUST
 -      $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh
 +      +$(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh
        $(Q)$(MAKE) $(build)=rust
  endif
  
@@@ -1384,7 -1400,7 +1391,7 @@@ ifneq ($(dtstree),
  
  PHONY += dtbs dtbs_prepare dtbs_install dtbs_check
  dtbs: dtbs_prepare
-       $(Q)$(MAKE) $(build)=$(dtstree)
+       $(Q)$(MAKE) $(build)=$(dtstree) need-dtbslist=1
  
  # include/config/kernel.release is actually needed when installing DTBs because
  # INSTALL_DTBS_PATH contains $(KERNELRELEASE). However, we do not want to make
@@@ -1402,7 -1418,7 +1409,7 @@@ endi
  dtbs_check: dtbs
  
  dtbs_install:
-       $(Q)$(MAKE) $(dtbinst)=$(dtstree) dst=$(INSTALL_DTBS_PATH)
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.dtbinst obj=$(dtstree)
  
  ifdef CONFIG_OF_EARLY_FLATTREE
  all: dtbs
@@@ -1702,7 -1718,7 +1709,7 @@@ $(DOC_TARGETS)
  # "Is Rust available?" target
  PHONY += rustavailable
  rustavailable:
 -      $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh && echo "Rust is available!"
 +      +$(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh && echo "Rust is available!"
  
  # Documentation target
  #
@@@ -1923,7 -1939,7 +1930,7 @@@ clean: $(clean-dirs
                -o -name '*.ko.*' \
                -o -name '*.dtb' -o -name '*.dtbo' \
                -o -name '*.dtb.S' -o -name '*.dtbo.S' \
-               -o -name '*.dt.yaml' \
+               -o -name '*.dt.yaml' -o -name 'dtbs-list' \
                -o -name '*.dwo' -o -name '*.lst' \
                -o -name '*.su' -o -name '*.mod' \
                -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
diff --combined arch/Kconfig
index fd18b7db2c777bb1223ffd0a4bcf0d5b11633330,bd6c6335efac86de0a33ace5bf34370d31366552..59dee290d94b30b9234b4ce3f83a1801025eee3c
@@@ -1078,107 -1078,17 +1078,107 @@@ config HAVE_ARCH_COMPAT_MMAP_BASE
          and vice-versa 32-bit applications to call 64-bit mmap().
          Required for applications doing different bitness syscalls.
  
 +config HAVE_PAGE_SIZE_4KB
 +      bool
 +
 +config HAVE_PAGE_SIZE_8KB
 +      bool
 +
 +config HAVE_PAGE_SIZE_16KB
 +      bool
 +
 +config HAVE_PAGE_SIZE_32KB
 +      bool
 +
 +config HAVE_PAGE_SIZE_64KB
 +      bool
 +
 +config HAVE_PAGE_SIZE_256KB
 +      bool
 +
 +choice
 +      prompt "MMU page size"
 +
 +config PAGE_SIZE_4KB
 +      bool "4KiB pages"
 +      depends on HAVE_PAGE_SIZE_4KB
 +      help
 +        This option select the standard 4KiB Linux page size and the only
 +        available option on many architectures. Using 4KiB page size will
 +        minimize memory consumption and is therefore recommended for low
 +        memory systems.
 +        Some software that is written for x86 systems makes incorrect
 +        assumptions about the page size and only runs on 4KiB pages.
 +
 +config PAGE_SIZE_8KB
 +      bool "8KiB pages"
 +      depends on HAVE_PAGE_SIZE_8KB
 +      help
 +        This option is the only supported page size on a few older
 +        processors, and can be slightly faster than 4KiB pages.
 +
 +config PAGE_SIZE_16KB
 +      bool "16KiB pages"
 +      depends on HAVE_PAGE_SIZE_16KB
 +      help
 +        This option is usually a good compromise between memory
 +        consumption and performance for typical desktop and server
 +        workloads, often saving a level of page table lookups compared
 +        to 4KB pages as well as reducing TLB pressure and overhead of
 +        per-page operations in the kernel at the expense of a larger
 +        page cache.
 +
 +config PAGE_SIZE_32KB
 +      bool "32KiB pages"
 +      depends on HAVE_PAGE_SIZE_32KB
 +      help
 +        Using 32KiB page size will result in slightly higher performance
 +        kernel at the price of higher memory consumption compared to
 +        16KiB pages.  This option is available only on cnMIPS cores.
 +        Note that you will need a suitable Linux distribution to
 +        support this.
 +
 +config PAGE_SIZE_64KB
 +      bool "64KiB pages"
 +      depends on HAVE_PAGE_SIZE_64KB
 +      help
 +        Using 64KiB page size will result in slightly higher performance
 +        kernel at the price of much higher memory consumption compared to
 +        4KiB or 16KiB pages.
 +        This is not suitable for general-purpose workloads but the
 +        better performance may be worth the cost for certain types of
 +        supercomputing or database applications that work mostly with
 +        large in-memory data rather than small files.
 +
 +config PAGE_SIZE_256KB
 +      bool "256KiB pages"
 +      depends on HAVE_PAGE_SIZE_256KB
 +      help
 +        256KiB pages have little practical value due to their extreme
 +        memory usage.  The kernel will only be able to run applications
 +        that have been compiled with '-zmax-page-size' set to 256KiB
 +        (the default is 64KiB or 4KiB on most architectures).
 +
 +endchoice
 +
  config PAGE_SIZE_LESS_THAN_64KB
        def_bool y
 -      depends on !ARM64_64K_PAGES
        depends on !PAGE_SIZE_64KB
 -      depends on !PARISC_PAGE_SIZE_64KB
        depends on PAGE_SIZE_LESS_THAN_256KB
  
  config PAGE_SIZE_LESS_THAN_256KB
        def_bool y
        depends on !PAGE_SIZE_256KB
  
 +config PAGE_SHIFT
 +      int
 +      default 12 if PAGE_SIZE_4KB
 +      default 13 if PAGE_SIZE_8KB
 +      default 14 if PAGE_SIZE_16KB
 +      default 15 if PAGE_SIZE_32KB
 +      default 16 if PAGE_SIZE_64KB
 +      default 18 if PAGE_SIZE_256KB
 +
  # This allows to use a set of generic functions to determine mmap base
  # address by giving priority to top-down scheme only if the process
  # is not in legacy mode (compat task, unlimited stack size or
@@@ -1597,4 -1507,16 +1597,16 @@@ config FUNCTION_ALIGNMEN
        default 4 if FUNCTION_ALIGNMENT_4B
        default 0
  
+ config CC_HAS_MIN_FUNCTION_ALIGNMENT
+       # Detect availability of the GCC option -fmin-function-alignment which
+       # guarantees minimal alignment for all functions, unlike
+       # -falign-functions which the compiler ignores for cold functions.
+       def_bool $(cc-option, -fmin-function-alignment=8)
+ config CC_HAS_SANE_FUNCTION_ALIGNMENT
+       # Set if the guaranteed alignment with -fmin-function-alignment is
+       # available or extra care is required in the kernel. Clang provides
+       # strict alignment always, even with -falign-functions.
+       def_bool CC_HAS_MIN_FUNCTION_ALIGNMENT || CC_IS_CLANG
  endmenu
diff --combined arch/alpha/Kconfig
index 4f490250d32302087a6decd3a70e0f21b9611035,fe5ae3aea999579d157e8fcaa922c478976f7589..3afd042150f8aff71a1709e9ab3e704a829c3a45
@@@ -14,7 -14,6 +14,7 @@@ config ALPH
        select PCI_DOMAINS if PCI
        select PCI_SYSCALL if PCI
        select HAVE_ASM_MODVERSIONS
 +      select HAVE_PAGE_SIZE_8KB
        select HAVE_PCSPKR_PLATFORM
        select HAVE_PERF_EVENTS
        select NEED_DMA_MAP_STATE
@@@ -339,6 -338,7 +339,7 @@@ config ALPHA_EV
        bool
        depends on ALPHA_JENSEN || (ALPHA_SABLE && !ALPHA_GAMMA) || ALPHA_LYNX || ALPHA_NORITAKE && !ALPHA_PRIMO || ALPHA_MIKASA && !ALPHA_PRIMO || ALPHA_CABRIOLET || ALPHA_AVANTI_CH || ALPHA_EB64P_CH || ALPHA_XL || ALPHA_NONAME || ALPHA_EB66 || ALPHA_EB66P || ALPHA_P2K
        default y if !ALPHA_LYNX
+       default y if !ALPHA_EV5
  
  config ALPHA_LCA
        bool
@@@ -366,10 -366,6 +367,6 @@@ config ALPHA_EV
        bool "EV5 CPU(s) (model 5/xxx)?" if ALPHA_LYNX
        default y if ALPHA_RX164 || ALPHA_RAWHIDE || ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_RUFFIAN || ALPHA_SABLE && ALPHA_GAMMA || ALPHA_NORITAKE && ALPHA_PRIMO || ALPHA_MIKASA && ALPHA_PRIMO || ALPHA_PC164 || ALPHA_TAKARA || ALPHA_EB164 || ALPHA_ALCOR
  
- config ALPHA_EV4
-       bool
-       default y if ALPHA_LYNX && !ALPHA_EV5
  config ALPHA_CIA
        bool
        depends on ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_RUFFIAN || ALPHA_NORITAKE && ALPHA_PRIMO || ALPHA_MIKASA && ALPHA_PRIMO || ALPHA_PC164 || ALPHA_TAKARA || ALPHA_EB164 || ALPHA_ALCOR
@@@ -394,16 -390,12 +391,12 @@@ config ALPHA_PRIM
          Say Y if you have an AS 1000 5/xxx or an AS 1000A 5/xxx.
  
  config ALPHA_GAMMA
-       bool "EV5 CPU(s) (model 5/xxx)?"
-       depends on ALPHA_SABLE
+       bool "EV5 CPU(s) (model 5/xxx)?" if ALPHA_SABLE
+       depends on ALPHA_SABLE || ALPHA_LYNX
+       default ALPHA_LYNX
        help
          Say Y if you have an AS 2000 5/xxx or an AS 2100 5/xxx.
  
- config ALPHA_GAMMA
-       bool
-       depends on ALPHA_LYNX
-       default y
  config ALPHA_T2
        bool
        depends on ALPHA_SABLE || ALPHA_LYNX
diff --combined arch/hexagon/Kconfig
index 1414052e7d6b2ad5c22975d1cb5b002f558ebc1e,89672ef0666fa9d105e256385ce4ba2a238dc924..e233b5efa2761e35c416cbc147f6b6422a7c5b8f
@@@ -7,11 -7,9 +7,13 @@@ config HEXAGO
        select ARCH_32BIT_OFF_T
        select ARCH_HAS_SYNC_DMA_FOR_DEVICE
        select ARCH_NO_PREEMPT
+       select ARCH_WANT_FRAME_POINTERS
        select DMA_GLOBAL_POOL
 +      select HAVE_PAGE_SIZE_4KB
 +      select HAVE_PAGE_SIZE_16KB
 +      select HAVE_PAGE_SIZE_64KB
 +      select HAVE_PAGE_SIZE_256KB
+       select FRAME_POINTER
        # Other pending projects/to-do items.
        # select HAVE_REGS_AND_STACK_ACCESS_API
        # select HAVE_HW_BREAKPOINT if PERF_EVENTS
@@@ -23,6 -21,7 +25,7 @@@
        select HAVE_PERF_EVENTS
        # GENERIC_ALLOCATOR is used by dma_alloc_coherent()
        select GENERIC_ALLOCATOR
+       select GENERIC_IRQ_PROBE
        select GENERIC_IRQ_SHOW
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_TRACEHOOK
@@@ -47,9 -46,6 +50,6 @@@ config HEXAGON_PHYS_OFFSE
        help
          Platforms that don't load the kernel at zero set this.
  
- config FRAME_POINTER
-       def_bool y
  config LOCKDEP_SUPPORT
        def_bool y
  
@@@ -62,12 -58,6 +62,6 @@@ config MM
  config GENERIC_CSUM
        def_bool y
  
- #
- # Use the generic interrupt handling code in kernel/irq/:
- #
- config GENERIC_IRQ_PROBE
-       def_bool y
  config GENERIC_HWEIGHT
        def_bool y
  
@@@ -124,6 -114,26 +118,6 @@@ config NR_CPU
          This is purely to save memory - each supported CPU adds
          approximately eight kilobytes to the kernel image.
  
 -choice
 -      prompt "Kernel page size"
 -      default PAGE_SIZE_4KB
 -      help
 -        Changes the default page size; use with caution.
 -
 -config PAGE_SIZE_4KB
 -      bool "4KB"
 -
 -config PAGE_SIZE_16KB
 -      bool "16KB"
 -
 -config PAGE_SIZE_64KB
 -      bool "64KB"
 -
 -config PAGE_SIZE_256KB
 -      bool "256KB"
 -
 -endchoice
 -
  source "kernel/Kconfig.hz"
  
  endmenu
diff --combined arch/parisc/Kconfig
index ee29c4c8d7c1c5d3d553fa37388a4510f0fa0b9b,03ce7e185935371a99c9003bdfe7b970974888f0..daafeb20f99370310feceaaeb1186e8f9fa8e74c
@@@ -8,12 -8,11 +8,12 @@@ config PARIS
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_SYSCALL_TRACEPOINTS
        select ARCH_WANT_FRAME_POINTERS
 +      select ARCH_HAS_CPU_CACHE_ALIASING
        select ARCH_HAS_DMA_ALLOC if PA11
        select ARCH_HAS_ELF_RANDOMIZE
        select ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_HAS_STRICT_MODULE_RWX
 -      select ARCH_HAS_UBSAN_SANITIZE_ALL
 +      select ARCH_HAS_UBSAN
        select ARCH_HAS_PTE_SPECIAL
        select ARCH_NO_SG_CHAIN
        select ARCH_SUPPORTS_HUGETLBFS if PA20
@@@ -238,9 -237,9 +238,9 @@@ config PARISC_HUGE_KERNE
        def_bool y if !MODULES || UBSAN || FTRACE || COMPILE_TEST
  
  config MLONGCALLS
-       def_bool y if PARISC_HUGE_KERNEL
        bool "Enable the -mlong-calls compiler option for big kernels" if !PARISC_HUGE_KERNEL
        depends on PA8X00
+       default PARISC_HUGE_KERNEL
        help
          If you configure the kernel to include many drivers built-in instead
          as modules, the kernel executable may become too big, so that the
          Enabling this option will probably slow down your kernel.
  
  config 64BIT
-       def_bool y if "$(ARCH)" = "parisc64"
        bool "64-bit kernel" if "$(ARCH)" = "parisc"
        depends on PA8X00
+       default "$(ARCH)" = "parisc64"
        help
          Enable this if you want to support 64bit kernel on PA-RISC platform.
  
@@@ -274,7 -273,6 +274,7 @@@ choic
  
  config PARISC_PAGE_SIZE_4KB
        bool "4KB"
 +      select HAVE_PAGE_SIZE_4KB
        help
          This lets you select the page size of the kernel.  For best
          performance, a page size of 16KB is recommended.  For best
  
  config PARISC_PAGE_SIZE_16KB
        bool "16KB"
 +      select HAVE_PAGE_SIZE_16KB
        depends on PA8X00 && BROKEN && !KFENCE
  
  config PARISC_PAGE_SIZE_64KB
        bool "64KB"
 +      select HAVE_PAGE_SIZE_64KB
        depends on PA8X00 && BROKEN && !KFENCE
  
  endchoice
index 620f6257bbe9358ce918bbf35aff659b683a2149,fa0a2750360672257861fc813d636d59a0bb8d3a..fd63051bbbbb8255b8c0d24f89e90d074a51e6f2
@@@ -3,13 -3,15 +3,15 @@@
  # Building vDSO images for x86.
  #
  
 -# Include the generic Makefile to check the built vdso.
 +# Include the generic Makefile to check the built vDSO:
  include $(srctree)/lib/vdso/Makefile
  
  # Sanitizer runtimes are unavailable and cannot be linked here.
  KASAN_SANITIZE                        := n
  KMSAN_SANITIZE_vclock_gettime.o := n
+ KMSAN_SANITIZE_vdso32/vclock_gettime.o        := n
  KMSAN_SANITIZE_vgetcpu.o      := n
+ KMSAN_SANITIZE_vdso32/vgetcpu.o       := n
  
  UBSAN_SANITIZE                        := n
  KCSAN_SANITIZE                        := n
@@@ -18,39 -20,48 +20,39 @@@ OBJECT_FILES_NON_STANDARD  := 
  # Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
  KCOV_INSTRUMENT               := n
  
 -VDSO64-$(CONFIG_X86_64)               := y
 -VDSOX32-$(CONFIG_X86_X32_ABI) := y
 -VDSO32-$(CONFIG_X86_32)               := y
 -VDSO32-$(CONFIG_IA32_EMULATION)       := y
 -
 -# files to link into the vdso
 +# Files to link into the vDSO:
  vobjs-y := vdso-note.o vclock_gettime.o vgetcpu.o
  vobjs32-y := vdso32/note.o vdso32/system_call.o vdso32/sigreturn.o
  vobjs32-y += vdso32/vclock_gettime.o vdso32/vgetcpu.o
  vobjs-$(CONFIG_X86_SGX)       += vsgx.o
  
 -# files to link into kernel
 -obj-y                                 += vma.o extable.o
 -KASAN_SANITIZE_vma.o                  := y
 -UBSAN_SANITIZE_vma.o                  := y
 -KCSAN_SANITIZE_vma.o                  := y
 -OBJECT_FILES_NON_STANDARD_vma.o               := n
 -OBJECT_FILES_NON_STANDARD_extable.o   := n
 +# Files to link into the kernel:
 +obj-y                                         += vma.o extable.o
 +KASAN_SANITIZE_vma.o                          := y
 +UBSAN_SANITIZE_vma.o                          := y
 +KCSAN_SANITIZE_vma.o                          := y
 +
 +OBJECT_FILES_NON_STANDARD_vma.o                       := n
 +OBJECT_FILES_NON_STANDARD_extable.o           := n
  
 -# vDSO images to build
 -vdso_img-$(VDSO64-y)          += 64
 -vdso_img-$(VDSOX32-y)         += x32
 -vdso_img-$(VDSO32-y)          += 32
 +# vDSO images to build:
 +obj-$(CONFIG_X86_64)                          += vdso-image-64.o
 +obj-$(CONFIG_X86_X32_ABI)                     += vdso-image-x32.o
 +obj-$(CONFIG_COMPAT_32)                               += vdso-image-32.o vdso32-setup.o
  
 -obj-$(VDSO32-y)                                += vdso32-setup.o
 -OBJECT_FILES_NON_STANDARD_vdso32-setup.o := n
 +OBJECT_FILES_NON_STANDARD_vdso-image-32.o     := n
 +OBJECT_FILES_NON_STANDARD_vdso-image-64.o     := n
 +OBJECT_FILES_NON_STANDARD_vdso32-setup.o      := n
  
 -vobjs := $(foreach F,$(vobjs-y),$(obj)/$F)
 -vobjs32 := $(foreach F,$(vobjs32-y),$(obj)/$F)
 +vobjs := $(addprefix $(obj)/, $(vobjs-y))
 +vobjs32 := $(addprefix $(obj)/, $(vobjs32-y))
  
  $(obj)/vdso.o: $(obj)/vdso.so
  
  targets += vdso.lds $(vobjs-y)
  targets += vdso32/vdso32.lds $(vobjs32-y)
  
 -# Build the vDSO image C files and link them in.
 -vdso_img_objs := $(vdso_img-y:%=vdso-image-%.o)
 -vdso_img_cfiles := $(vdso_img-y:%=vdso-image-%.c)
 -vdso_img_sodbg := $(vdso_img-y:%=vdso%.so.dbg)
 -obj-y += $(vdso_img_objs)
 -targets += $(vdso_img_cfiles)
 -targets += $(vdso_img_sodbg) $(vdso_img-y:%=vdso%.so)
 +targets += $(foreach x, 64 x32 32, vdso-image-$(x).c vdso$(x).so vdso$(x).so.dbg)
  
  CPPFLAGS_vdso.lds += -P -C
  
@@@ -78,7 -89,7 +80,7 @@@ CFL := $(PROFILING) -mcmodel=small -fPI
         -fno-omit-frame-pointer -foptimize-sibling-calls \
         -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO
  
 -ifdef CONFIG_RETPOLINE
 +ifdef CONFIG_MITIGATION_RETPOLINE
  ifneq ($(RETPOLINE_VDSO_CFLAGS),)
    CFL += $(RETPOLINE_VDSO_CFLAGS)
  endif
@@@ -114,7 -125,7 +116,7 @@@ VDSO_LDFLAGS_vdsox32.lds = -m elf32_x86
  vobjx32s-y := $(vobjs-y:.o=-x32.o)
  
  # same thing, but in the output directory
 -vobjx32s := $(foreach F,$(vobjx32s-y),$(obj)/$F)
 +vobjx32s := $(addprefix $(obj)/, $(vobjx32s-y))
  
  # Convert 64bit object file to x32 for x32 vDSO.
  quiet_cmd_x32 = X32     $@
@@@ -155,7 -166,7 +157,7 @@@ KBUILD_CFLAGS_32 += $(call cc-option, -
  KBUILD_CFLAGS_32 += -fno-omit-frame-pointer
  KBUILD_CFLAGS_32 += -DDISABLE_BRANCH_PROFILING
  
 -ifdef CONFIG_RETPOLINE
 +ifdef CONFIG_MITIGATION_RETPOLINE
  ifneq ($(RETPOLINE_VDSO_CFLAGS),)
    KBUILD_CFLAGS_32 += $(RETPOLINE_VDSO_CFLAGS)
  endif
@@@ -181,3 -192,5 +183,3 @@@ GCOV_PROFILE := 
  
  quiet_cmd_vdso_and_check = VDSO    $@
        cmd_vdso_and_check = $(cmd_vdso); $(cmd_vdso_check)
 -
 -clean-files := vdso32.so vdso32.so.dbg vdso64* vdso-image-*.c vdsox32.so*
diff --combined arch/x86/kvm/Kconfig
index 8c3032a96caf167b30c1fc76b91039c809bc44e4,d72be552c86dcede446dac7f3a7b9b8ef6fd6ab1..3aaf7e86a859a2f680625b4d13b1c27d43fa5629
@@@ -7,6 -7,7 +7,6 @@@ source "virt/kvm/Kconfig
  
  menuconfig VIRTUALIZATION
        bool "Virtualization"
 -      depends on HAVE_KVM || X86
        default y
        help
          Say Y here to get to see options for using your Linux host to run other
@@@ -19,6 -20,7 +19,6 @@@ if VIRTUALIZATIO
  
  config KVM
        tristate "Kernel-based Virtual Machine (KVM) support"
 -      depends on HAVE_KVM
        depends on HIGH_RES_TIMERS
        depends on X86_LOCAL_APIC
        select KVM_COMMON
@@@ -27,9 -29,9 +27,9 @@@
        select HAVE_KVM_PFNCACHE
        select HAVE_KVM_DIRTY_RING_TSO
        select HAVE_KVM_DIRTY_RING_ACQ_REL
 -      select IRQ_BYPASS_MANAGER
        select HAVE_KVM_IRQ_BYPASS
        select HAVE_KVM_IRQ_ROUTING
 +      select HAVE_KVM_READONLY_MEM
        select KVM_ASYNC_PF
        select USER_RETURN_NOTIFIER
        select KVM_MMIO
@@@ -78,10 -80,9 +78,10 @@@ config KVM_SW_PROTECTED_V
        depends on KVM && X86_64
        select KVM_GENERIC_PRIVATE_MEM
        help
 -        Enable support for KVM software-protected VMs.  Currently "protected"
 -        means the VM can be backed with memory provided by
 -        KVM_CREATE_GUEST_MEMFD.
 +        Enable support for KVM software-protected VMs.  Currently, software-
 +        protected VMs are purely a development and testing vehicle for
 +        KVM_CREATE_GUEST_MEMFD.  Attempting to run a "real" VM workload as a
 +        software-protected VM will fail miserably.
  
          If unsure, say "N".
  
@@@ -118,8 -119,8 +118,8 @@@ config KVM_AM
          will be called kvm-amd.
  
  config KVM_AMD_SEV
-       def_bool y
        bool "AMD Secure Encrypted Virtualization (SEV) support"
+       default y
        depends on KVM_AMD && X86_64
        depends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m)
        help
diff --combined drivers/acpi/Kconfig
index c645bb453f3b7fdf16fa228c30d53d7809ea24a8,8ce591679d50e9a2d18decb2c6dbd9dc8d6e4bb4..5d1fb83b2d32ec715eb40dc724e297329d78fec8
@@@ -449,6 -449,20 +449,6 @@@ config ACPI_HE
          which is used to report some hardware errors notified via
          SCI, mainly the corrected errors.
  
 -config ACPI_CUSTOM_METHOD
 -      tristate "Allow ACPI methods to be inserted/replaced at run time"
 -      depends on DEBUG_FS
 -      help
 -        This debug facility allows ACPI AML methods to be inserted and/or
 -        replaced without rebooting the system. For details refer to:
 -        Documentation/firmware-guide/acpi/method-customizing.rst.
 -
 -        NOTE: This option is security sensitive, because it allows arbitrary
 -        kernel memory to be written to by root (uid=0) users, allowing them
 -        to bypass certain security measures (e.g. if root is not allowed to
 -        load additional kernel modules after boot, this feature may be used
 -        to override that restriction).
 -
  config ACPI_BGRT
        bool "Boottime Graphics Resource Table support"
        depends on EFI && (X86 || ARM64)
  
  config ACPI_REDUCED_HARDWARE_ONLY
        bool "Hardware-reduced ACPI support only" if EXPERT
-       def_bool n
        help
          This config item changes the way the ACPI code is built.  When this
          option is selected, the kernel will use a specialized version of
index 6cf9f48e7d8c8e954dd0dd026a35f6fb40d7e9dc,95d9f4e1a17626c2dba01a093d3a7076b227076c..f52fb39c968eb1e7b38ce808cade3a0da6b32f0c
@@@ -51,7 -51,6 +51,7 @@@ config INTEL_IOMMU_SV
        depends on X86_64
        select MMU_NOTIFIER
        select IOMMU_SVA
 +      select IOMMU_IOPF
        help
          Shared Virtual Memory (SVM) provides a facility for devices
          to access DMA resources through process address space by
@@@ -65,6 -64,17 +65,6 @@@ config INTEL_IOMMU_DEFAULT_O
          one is found. If this option is not selected, DMAR support can
          be enabled by passing intel_iommu=on to the kernel.
  
 -config INTEL_IOMMU_BROKEN_GFX_WA
 -      bool "Workaround broken graphics drivers (going away soon)"
 -      depends on BROKEN && X86
 -      help
 -        Current Graphics drivers tend to use physical address
 -        for DMA and avoid using DMA APIs. Setting this config
 -        option permits the IOMMU driver to set a unity map for
 -        all the OS-visible memory. Hence the driver can continue
 -        to use physical addresses for DMA, at least until this
 -        option is removed in the 2.6.32 kernel.
 -
  config INTEL_IOMMU_FLOPPY_WA
        def_bool y
        depends on X86
@@@ -87,8 -97,8 +87,8 @@@ config INTEL_IOMMU_SCALABLE_MODE_DEFAUL
          the default value.
  
  config INTEL_IOMMU_PERF_EVENTS
-       def_bool y
        bool "Intel IOMMU performance events"
+       default y
        depends on INTEL_IOMMU && PERF_EVENTS
        help
          Selecting this option will enable the performance monitoring
diff --combined drivers/md/Kconfig
index 68ce56fc61d0a4ba7fcc62a6b394c0a7d71d169d,0392154bbcab821bdf3c78534d73517d2d959b49..35b1080752cd7517f481313c26667e9d2154f36b
@@@ -519,7 -519,6 +519,6 @@@ config DM_VERIT
          If unsure, say N.
  
  config DM_VERITY_VERIFY_ROOTHASH_SIG
-       def_bool n
        bool "Verity data device root hash signature verification support"
        depends on DM_VERITY
        select SYSTEM_DATA_VERIFICATION
@@@ -634,6 -633,4 +633,6 @@@ config DM_AUDI
          Enables audit logging of several security relevant events in the
          particular device-mapper targets, especially the integrity target.
  
 +source "drivers/md/dm-vdo/Kconfig"
 +
  endif # MD
index 3e64ec0f7ac80b03af19a4812bc97cd80396efa9,fb8888678687cdb0359be60026bdab5c84514d2b..2abaa3a825a9ec3f86a69e6e9cf169ad9614b20c
@@@ -99,17 -99,17 +99,17 @@@ static inline void __chk_io_ptr(const v
   *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Label-Attributes.html#index-cold-label-attribute
   *
   * When -falign-functions=N is in use, we must avoid the cold attribute as
-  * contemporary versions of GCC drop the alignment for cold functions. Worse,
-  * GCC can implicitly mark callees of cold functions as cold themselves, so
-  * it's not sufficient to add __function_aligned here as that will not ensure
-  * that callees are correctly aligned.
+  * GCC drops the alignment for cold functions. Worse, GCC can implicitly mark
+  * callees of cold functions as cold themselves, so it's not sufficient to add
+  * __function_aligned here as that will not ensure that callees are correctly
+  * aligned.
   *
   * See:
   *
   *   https://lore.kernel.org/lkml/Y77%2FqVgvaJidFpYt@FVFF77S0Q05N
   *   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88345#c9
   */
- #if !defined(CONFIG_CC_IS_GCC) || (CONFIG_FUNCTION_ALIGNMENT == 0)
+ #if defined(CONFIG_CC_HAS_SANE_FUNCTION_ALIGNMENT) || (CONFIG_FUNCTION_ALIGNMENT == 0)
  #define __cold                                __attribute__((__cold__))
  #else
  #define __cold
@@@ -282,18 -282,11 +282,18 @@@ struct ftrace_likely_data 
  #define __no_sanitize_or_inline __always_inline
  #endif
  
 +/* Do not trap wrapping arithmetic within an annotated function. */
 +#ifdef CONFIG_UBSAN_SIGNED_WRAP
 +# define __signed_wrap __attribute__((no_sanitize("signed-integer-overflow")))
 +#else
 +# define __signed_wrap
 +#endif
 +
  /* Section for code which can't be instrumented at all */
  #define __noinstr_section(section)                                    \
        noinline notrace __attribute((__section__(section)))            \
        __no_kcsan __no_sanitize_address __no_profile __no_sanitize_coverage \
 -      __no_sanitize_memory
 +      __no_sanitize_memory __signed_wrap
  
  #define noinstr __noinstr_section(".noinstr.text")
  
diff --combined init/Kconfig
index f3ea5dea9c8510db8148d0fb5f51fc6b441dbf06,a4b80754e5807dc06a46bc14c146a9baec2f1f8a..d56d71fe0f87878b5515512ab0ddc7997e322d28
@@@ -115,7 -115,7 +115,7 @@@ config CONSTRUCTOR
        bool
  
  config IRQ_WORK
 -      bool
 +      def_bool y if SMP
  
  config BUILDTIME_TABLE_SORT
        bool
@@@ -876,14 -876,14 +876,14 @@@ config CC_IMPLICIT_FALLTHROUG
        default "-Wimplicit-fallthrough=5" if CC_IS_GCC && $(cc-option,-Wimplicit-fallthrough=5)
        default "-Wimplicit-fallthrough" if CC_IS_CLANG && $(cc-option,-Wunreachable-code-fallthrough)
  
 -# Currently, disable gcc-11+ array-bounds globally.
 +# Currently, disable gcc-10+ array-bounds globally.
  # It's still broken in gcc-13, so no upper bound yet.
 -config GCC11_NO_ARRAY_BOUNDS
 +config GCC10_NO_ARRAY_BOUNDS
        def_bool y
  
  config CC_NO_ARRAY_BOUNDS
        bool
 -      default y if CC_IS_GCC && GCC_VERSION >= 110000 && GCC11_NO_ARRAY_BOUNDS
 +      default y if CC_IS_GCC && GCC_VERSION >= 100000 && GCC10_NO_ARRAY_BOUNDS
  
  # Currently, disable -Wstringop-overflow for GCC globally.
  config GCC_NO_STRINGOP_OVERFLOW
@@@ -1466,6 -1466,11 +1466,6 @@@ config SYSCTL_ARCH_UNALIGN_ALLO
  config HAVE_PCSPKR_PLATFORM
        bool
  
 -# interpreter that classic socket filters depend on
 -config BPF
 -      bool
 -      select CRYPTO_LIB_SHA1
 -
  menuconfig EXPERT
        bool "Configure standard kernel features (expert users)"
        # Unhide debug options, to make the on-by-default options visible
@@@ -1499,7 -1504,7 +1499,7 @@@ config MULTIUSE
  
  config SGETMASK_SYSCALL
        bool "sgetmask/ssetmask syscalls support" if EXPERT
-       def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH
+       default PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH
        help
          sys_sgetmask and sys_ssetmask are obsolete system calls
          no longer supported in libc but still enabled by default in some
diff --combined lib/Kconfig.debug
index 733ee2ac0138e34b8da1f97956758cc9e1cba030,e9b3b9543661f1fd7ecbbf87c450265558324a56..f4a12980a8da3406c4dc67f60ca11ff77a99b626
@@@ -1303,7 -1303,7 +1303,7 @@@ config PROVE_LOCKIN
        select DEBUG_SPINLOCK
        select DEBUG_MUTEXES if !PREEMPT_RT
        select DEBUG_RT_MUTEXES if RT_MUTEXES
 -      select DEBUG_RWSEMS
 +      select DEBUG_RWSEMS if !PREEMPT_RT
        select DEBUG_WW_MUTEX_SLOWPATH
        select DEBUG_LOCK_ALLOC
        select PREEMPT_COUNT if !ARCH_NO_PREEMPT
@@@ -1426,7 -1426,7 +1426,7 @@@ config DEBUG_WW_MUTEX_SLOWPAT
  
  config DEBUG_RWSEMS
        bool "RW Semaphore debugging: basic checks"
 -      depends on DEBUG_KERNEL
 +      depends on DEBUG_KERNEL && !PREEMPT_RT
        help
          This debugging feature allows mismatched rw semaphore locks
          and unlocks to be detected and reported.
@@@ -2085,7 -2085,7 +2085,7 @@@ config KCO
        depends on ARCH_HAS_KCOV
        depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
        depends on !ARCH_WANTS_NO_INSTR || HAVE_NOINSTR_HACK || \
 -                 GCC_VERSION >= 120000 || CLANG_VERSION >= 130000
 +                 GCC_VERSION >= 120000 || CC_IS_CLANG
        select DEBUG_FS
        select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
        select OBJTOOL if HAVE_NOINSTR_HACK
@@@ -2127,7 -2127,7 +2127,7 @@@ config KCOV_IRQ_AREA_SIZ
  
  menuconfig RUNTIME_TESTING_MENU
        bool "Runtime Testing"
-       def_bool y
+       default y
  
  if RUNTIME_TESTING_MENU
  
@@@ -2142,7 -2142,7 +2142,7 @@@ config TEST_DHR
  
          To run the benchmark, it needs to be enabled explicitly, either from
          the kernel command line (when built-in), or from userspace (when
 -        built-in or modular.
 +        built-in or modular).
  
          Run once during kernel boot:
  
@@@ -2235,7 -2235,6 +2235,7 @@@ config TEST_DIV6
  config TEST_IOV_ITER
        tristate "Test iov_iter operation" if !KUNIT_ALL_TESTS
        depends on KUNIT
 +      depends on MMU
        default KUNIT_ALL_TESTS
        help
          Enable this to turn on testing of the operation of the I/O iterator
@@@ -2353,15 -2352,11 +2353,15 @@@ config ASYNC_RAID6_TES
  config TEST_HEXDUMP
        tristate "Test functions located in the hexdump module at runtime"
  
 -config STRING_SELFTEST
 -      tristate "Test string functions at runtime"
 +config STRING_KUNIT_TEST
 +      tristate "KUnit test string functions at runtime" if !KUNIT_ALL_TESTS
 +      depends on KUNIT
 +      default KUNIT_ALL_TESTS
  
 -config TEST_STRING_HELPERS
 -      tristate "Test functions located in the string_helpers module at runtime"
 +config STRING_HELPERS_KUNIT_TEST
 +      tristate "KUnit test string helpers at runtime" if !KUNIT_ALL_TESTS
 +      depends on KUNIT
 +      default KUNIT_ALL_TESTS
  
  config TEST_KSTRTOX
        tristate "Test kstrto*() family of functions at runtime"
@@@ -2753,7 -2748,7 +2753,7 @@@ config STACKINIT_KUNIT_TES
  
  config FORTIFY_KUNIT_TEST
        tristate "Test fortified str*() and mem*() function internals at runtime" if !KUNIT_ALL_TESTS
 -      depends on KUNIT && FORTIFY_SOURCE
 +      depends on KUNIT
        default KUNIT_ALL_TESTS
        help
          Builds unit tests for checking internals of FORTIFY_SOURCE as used
@@@ -2862,6 -2857,28 +2862,6 @@@ config TEST_MEMCAT_
  
          If unsure, say N.
  
 -config TEST_LIVEPATCH
 -      tristate "Test livepatching"
 -      default n
 -      depends on DYNAMIC_DEBUG
 -      depends on LIVEPATCH
 -      depends on m
 -      help
 -        Test kernel livepatching features for correctness.  The tests will
 -        load test modules that will be livepatched in various scenarios.
 -
 -        To run all the livepatching tests:
 -
 -        make -C tools/testing/selftests TARGETS=livepatch run_tests
 -
 -        Alternatively, individual tests may be invoked:
 -
 -        tools/testing/selftests/livepatch/test-callbacks.sh
 -        tools/testing/selftests/livepatch/test-livepatch.sh
 -        tools/testing/selftests/livepatch/test-shadow-vars.sh
 -
 -        If unsure, say N.
 -
  config TEST_OBJAGG
        tristate "Perform selftest on object aggreration manager"
        default n
diff --combined mm/Kconfig
index b924f4a5a3ef8a7bf71498abe4392a350191e618,4914eb3216fccec7bf352a67c3f9d1e9ad17acf0..b1448aa81e15f48d7a2c14d18b666485635f2df1
@@@ -45,6 -45,22 +45,6 @@@ config ZSWAP_DEFAULT_O
          The selection made here can be overridden by using the kernel
          command line 'zswap.enabled=' option.
  
 -config ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON
 -      bool "Invalidate zswap entries when pages are loaded"
 -      depends on ZSWAP
 -      help
 -        If selected, exclusive loads for zswap will be enabled at boot,
 -        otherwise it will be disabled.
 -
 -        If exclusive loads are enabled, when a page is loaded from zswap,
 -        the zswap entry is invalidated at once, as opposed to leaving it
 -        in zswap until the swap entry is freed.
 -
 -        This avoids having two copies of the same page in memory
 -        (compressed and uncompressed) after faulting in a page from zswap.
 -        The cost is that if the page was never dirtied and needs to be
 -        swapped out again, it will be re-compressed.
 -
  config ZSWAP_SHRINKER_DEFAULT_ON
        bool "Shrink the zswap pool on memory pressure"
        depends on ZSWAP
@@@ -583,7 -599,7 +583,7 @@@ config MEMORY_BALLOO
  # support for memory balloon compaction
  config BALLOON_COMPACTION
        bool "Allow for balloon memory compaction/migration"
-       def_bool y
+       default y
        depends on COMPACTION && MEMORY_BALLOON
        help
          Memory fragmentation introduced by ballooning might reduce
  # support for memory compaction
  config COMPACTION
        bool "Allow for memory compaction"
-       def_bool y
+       default y
        select MIGRATION
        depends on MMU
        help
@@@ -621,7 -637,6 +621,6 @@@ config COMPACT_UNEVICTABLE_DEFAUL
  # support for free page reporting
  config PAGE_REPORTING
        bool "Free page reporting"
-       def_bool n
        help
          Free page reporting allows for the incremental acquisition of
          free pages from the buddy allocator for the purpose of reporting
  #
  config MIGRATION
        bool "Page migration"
-       def_bool y
+       default y
        depends on (NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA) && MMU
        help
          Allows the migration of the physical location of pages of processes
@@@ -885,6 -900,15 +884,6 @@@ config CM
  
          If unsure, say "n".
  
 -config CMA_DEBUG
 -      bool "CMA debug messages (DEVELOPMENT)"
 -      depends on DEBUG_KERNEL && CMA
 -      help
 -        Turns on debug messages in CMA.  This produces KERN_DEBUG
 -        messages for every CMA call as well as various messages while
 -        processing calls such as dma_alloc_from_contiguous().
 -        This option does not affect warning and error messages.
 -
  config CMA_DEBUGFS
        bool "CMA debugfs interface"
        depends on CMA && DEBUG_FS
@@@ -901,14 -925,14 +900,14 @@@ config CMA_SYSF
  config CMA_AREAS
        int "Maximum count of the CMA areas"
        depends on CMA
 -      default 19 if NUMA
 -      default 7
 +      default 20 if NUMA
 +      default 8
        help
          CMA allows to create CMA areas for particular purpose, mainly,
          used as device private area. This parameter sets the maximum
          number of CMA area in the system.
  
 -        If unsure, leave the default value "7" in UMA and "19" in NUMA.
 +        If unsure, leave the default value "8" in UMA and "20" in NUMA.
  
  config MEM_SOFT_DIRTY
        bool "Track memory changes"
@@@ -973,12 -997,6 +972,12 @@@ config IDLE_PAGE_TRACKIN
          See Documentation/admin-guide/mm/idle_page_tracking.rst for
          more details.
  
 +# Architectures which implement cpu_dcache_is_aliasing() to query
 +# whether the data caches are aliased (VIVT or VIPT with dcache
 +# aliasing) need to select this.
 +config ARCH_HAS_CPU_CACHE_ALIASING
 +      bool
 +
  config ARCH_HAS_CACHE_LINE_SIZE
        bool
  
diff --combined rust/Makefile
index 1eaefc34f4b73c7bb26d0de5180f01b77906cf56,ae691b71d9fc645cae3c6476a60af221d34c8364..846e6ab9d5a9b660fd871a13c8f984260a1b105a
@@@ -40,7 -40,7 +40,7 @@@ obj-$(CONFIG_RUST_KERNEL_DOCTESTS) += d
  ifdef CONFIG_RUST
  
  # `$(rust_flags)` is passed in case the user added `--sysroot`.
 -rustc_sysroot := $(shell $(RUSTC) $(rust_flags) --print sysroot)
 +rustc_sysroot := $(shell MAKEFLAGS= $(RUSTC) $(rust_flags) --print sysroot)
  rustc_host_target := $(shell $(RUSTC) --version --verbose | grep -F 'host: ' | cut -d' ' -f2)
  RUST_LIB_SRC ?= $(rustc_sysroot)/lib/rustlib/src/rust/library
  
@@@ -100,7 -100,7 +100,7 @@@ rustdoc: rustdoc-core rustdoc-macros ru
                -e 's:rust-logo-[0-9a-f]+\.svg:logo.svg:g' \
                -e 's:favicon-[0-9a-f]+\.svg:logo.svg:g' \
                -e 's:<link rel="alternate icon" type="image/png" href="[/.]+/static\.files/favicon-(16x16|32x32)-[0-9a-f]+\.png">::g' \
-               -e 's:<a href="srctree/([^"]+)">:<a href="$(abs_srctree)/\1">:g'
+               -e 's:<a href="srctree/([^"]+)">:<a href="$(realpath $(srctree))/\1">:g'
        $(Q)for f in $(rustdoc_output)/static.files/rustdoc-*.css; do \
                echo ".logo-container > img { object-fit: contain; }" >> $$f; done
  
@@@ -108,14 -108,14 +108,14 @@@ rustdoc-macros: private rustdoc_host = 
  rustdoc-macros: private rustc_target_flags = --crate-type proc-macro \
      --extern proc_macro
  rustdoc-macros: $(src)/macros/lib.rs FORCE
 -      $(call if_changed,rustdoc)
 +      +$(call if_changed,rustdoc)
  
  rustdoc-core: private rustc_target_flags = $(core-cfgs)
  rustdoc-core: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
 -      $(call if_changed,rustdoc)
 +      +$(call if_changed,rustdoc)
  
  rustdoc-compiler_builtins: $(src)/compiler_builtins.rs rustdoc-core FORCE
 -      $(call if_changed,rustdoc)
 +      +$(call if_changed,rustdoc)
  
  # We need to allow `rustdoc::broken_intra_doc_links` because some
  # `no_global_oom_handling` functions refer to non-`no_global_oom_handling`
  rustdoc-alloc: private rustc_target_flags = $(alloc-cfgs) \
      -Arustdoc::broken_intra_doc_links
  rustdoc-alloc: $(src)/alloc/lib.rs rustdoc-core rustdoc-compiler_builtins FORCE
 -      $(call if_changed,rustdoc)
 +      +$(call if_changed,rustdoc)
  
  rustdoc-kernel: private rustc_target_flags = --extern alloc \
      --extern build_error --extern macros=$(objtree)/$(obj)/libmacros.so \
  rustdoc-kernel: $(src)/kernel/lib.rs rustdoc-core rustdoc-macros \
      rustdoc-compiler_builtins rustdoc-alloc $(obj)/libmacros.so \
      $(obj)/bindings.o FORCE
 -      $(call if_changed,rustdoc)
 +      +$(call if_changed,rustdoc)
  
  quiet_cmd_rustc_test_library = RUSTC TL $<
        cmd_rustc_test_library = \
                --crate-name $(subst rusttest-,,$(subst rusttestlib-,,$@)) $<
  
  rusttestlib-build_error: $(src)/build_error.rs rusttest-prepare FORCE
 -      $(call if_changed,rustc_test_library)
 +      +$(call if_changed,rustc_test_library)
  
  rusttestlib-macros: private rustc_target_flags = --extern proc_macro
  rusttestlib-macros: private rustc_test_library_proc = yes
  rusttestlib-macros: $(src)/macros/lib.rs rusttest-prepare FORCE
 -      $(call if_changed,rustc_test_library)
 +      +$(call if_changed,rustc_test_library)
  
  rusttestlib-bindings: $(src)/bindings/lib.rs rusttest-prepare FORCE
 -      $(call if_changed,rustc_test_library)
 +      +$(call if_changed,rustc_test_library)
  
  rusttestlib-uapi: $(src)/uapi/lib.rs rusttest-prepare FORCE
 -      $(call if_changed,rustc_test_library)
 +      +$(call if_changed,rustc_test_library)
  
  quiet_cmd_rustdoc_test = RUSTDOC T $<
        cmd_rustdoc_test = \
@@@ -189,7 -189,7 +189,7 @@@ quiet_cmd_rustdoc_test_kernel = RUSTDO
      $(src)/kernel/lib.rs $(obj)/kernel.o \
      $(objtree)/scripts/rustdoc_test_builder \
      $(objtree)/scripts/rustdoc_test_gen FORCE
 -      $(call if_changed,rustdoc_test_kernel)
 +      +$(call if_changed,rustdoc_test_kernel)
  
  # We cannot use `-Zpanic-abort-tests` because some tests are dynamic,
  # so for the moment we skip `-Cpanic=abort`.
@@@ -254,21 -254,21 +254,21 @@@ quiet_cmd_rustsysroot = RUSTSYSROO
                $(objtree)/$(obj)/test/sysroot/lib/rustlib/$(rustc_host_target)/lib
  
  rusttest-prepare: FORCE
 -      $(call if_changed,rustsysroot)
 +      +$(call if_changed,rustsysroot)
  
  rusttest-macros: private rustc_target_flags = --extern proc_macro
  rusttest-macros: private rustdoc_test_target_flags = --crate-type proc-macro
  rusttest-macros: $(src)/macros/lib.rs rusttest-prepare FORCE
 -      $(call if_changed,rustc_test)
 -      $(call if_changed,rustdoc_test)
 +      +$(call if_changed,rustc_test)
 +      +$(call if_changed,rustdoc_test)
  
  rusttest-kernel: private rustc_target_flags = --extern alloc \
      --extern build_error --extern macros --extern bindings --extern uapi
  rusttest-kernel: $(src)/kernel/lib.rs rusttest-prepare \
      rusttestlib-build_error rusttestlib-macros rusttestlib-bindings \
      rusttestlib-uapi FORCE
 -      $(call if_changed,rustc_test)
 -      $(call if_changed,rustc_test_library)
 +      +$(call if_changed,rustc_test)
 +      +$(call if_changed,rustc_test_library)
  
  ifdef CONFIG_CC_IS_CLANG
  bindgen_c_flags = $(c_flags)
@@@ -297,7 -297,6 +297,7 @@@ bindgen_skip_c_flags := -mno-fp-ret-in-
  
  # Derived from `scripts/Makefile.clang`.
  BINDGEN_TARGET_x86    := x86_64-linux-gnu
 +BINDGEN_TARGET_arm64  := aarch64-linux-gnu
  BINDGEN_TARGET                := $(BINDGEN_TARGET_$(SRCARCH))
  
  # All warnings are inhibited since GCC builds are very experimental,
@@@ -397,7 -396,7 +397,7 @@@ quiet_cmd_rustc_procmacro = $(RUSTC_OR_
  # Therefore, to get `libmacros.so` automatically recompiled when the compiler
  # version changes, we add `core.o` as a dependency (even if it is not needed).
  $(obj)/libmacros.so: $(src)/macros/lib.rs $(obj)/core.o FORCE
 -      $(call if_changed_dep,rustc_procmacro)
 +      +$(call if_changed_dep,rustc_procmacro)
  
  quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L $@
        cmd_rustc_library = \
  rust-analyzer:
        $(Q)$(srctree)/scripts/generate_rust_analyzer.py \
                --cfgs='core=$(core-cfgs)' --cfgs='alloc=$(alloc-cfgs)' \
-               $(abs_srctree) $(abs_objtree) \
+               $(realpath $(srctree)) $(realpath $(objtree)) \
                $(RUST_LIB_SRC) $(KBUILD_EXTMOD) > \
                $(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/rust-project.json
  
@@@ -435,40 -434,37 +435,40 @@@ $(obj)/core.o: private skip_clippy = 
  $(obj)/core.o: private skip_flags = -Dunreachable_pub
  $(obj)/core.o: private rustc_objcopy = $(foreach sym,$(redirect-intrinsics),--redefine-sym $(sym)=__rust$(sym))
  $(obj)/core.o: private rustc_target_flags = $(core-cfgs)
 -$(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs scripts/target.json FORCE
 -      $(call if_changed_dep,rustc_library)
 +$(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
 +      +$(call if_changed_dep,rustc_library)
 +ifneq ($(or $(CONFIG_X86_64),$(CONFIG_LOONGARCH)),)
 +$(obj)/core.o: scripts/target.json
 +endif
  
  $(obj)/compiler_builtins.o: private rustc_objcopy = -w -W '__*'
  $(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE
 -      $(call if_changed_dep,rustc_library)
 +      +$(call if_changed_dep,rustc_library)
  
  $(obj)/alloc.o: private skip_clippy = 1
  $(obj)/alloc.o: private skip_flags = -Dunreachable_pub
  $(obj)/alloc.o: private rustc_target_flags = $(alloc-cfgs)
  $(obj)/alloc.o: $(src)/alloc/lib.rs $(obj)/compiler_builtins.o FORCE
 -      $(call if_changed_dep,rustc_library)
 +      +$(call if_changed_dep,rustc_library)
  
  $(obj)/build_error.o: $(src)/build_error.rs $(obj)/compiler_builtins.o FORCE
 -      $(call if_changed_dep,rustc_library)
 +      +$(call if_changed_dep,rustc_library)
  
  $(obj)/bindings.o: $(src)/bindings/lib.rs \
      $(obj)/compiler_builtins.o \
      $(obj)/bindings/bindings_generated.rs \
      $(obj)/bindings/bindings_helpers_generated.rs FORCE
 -      $(call if_changed_dep,rustc_library)
 +      +$(call if_changed_dep,rustc_library)
  
  $(obj)/uapi.o: $(src)/uapi/lib.rs \
      $(obj)/compiler_builtins.o \
      $(obj)/uapi/uapi_generated.rs FORCE
 -      $(call if_changed_dep,rustc_library)
 +      +$(call if_changed_dep,rustc_library)
  
  $(obj)/kernel.o: private rustc_target_flags = --extern alloc \
      --extern build_error --extern macros --extern bindings --extern uapi
  $(obj)/kernel.o: $(src)/kernel/lib.rs $(obj)/alloc.o $(obj)/build_error.o \
      $(obj)/libmacros.so $(obj)/bindings.o $(obj)/uapi.o FORCE
 -      $(call if_changed_dep,rustc_library)
 +      +$(call if_changed_dep,rustc_library)
  
  endif # CONFIG_RUST
diff --combined scripts/Makefile.build
index 0fb7a785594c961ee2157be94e28172bdbb71666,256db2a0e9847efc5c42659628d4f7e80af3e07c..baf86c0880b6d7d548f4a6a21cd6305acc717078
@@@ -71,6 -71,7 +71,7 @@@ endi
  # subdir-builtin and subdir-modorder may contain duplications. Use $(sort ...)
  subdir-builtin := $(sort $(filter %/built-in.a, $(real-obj-y)))
  subdir-modorder := $(sort $(filter %/modules.order, $(obj-m)))
+ subdir-dtbslist := $(sort $(filter %/dtbs-list, $(dtb-y)))
  
  targets-for-builtin := $(extra-y)
  
@@@ -213,7 -214,7 +214,7 @@@ endif # CONFIG_FTRACE_MCOUNT_USE_RECORD
  # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file
  # 'OBJECT_FILES_NON_STANDARD_foo.o := 'n': override directory skip for a file
  
- is-standard-object = $(if $(filter-out y%, $(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n),y)
+ is-standard-object = $(if $(filter-out y%, $(OBJECT_FILES_NON_STANDARD_$(target-stem).o)$(OBJECT_FILES_NON_STANDARD)n),y)
  
  $(obj)/%.o: objtool-enabled = $(if $(is-standard-object),$(if $(delay-objtool),$(is-single-obj-m),y))
  
@@@ -290,7 -291,7 +291,7 @@@ quiet_cmd_rustc_o_rs = $(RUSTC_OR_CLIPP
        cmd_rustc_o_rs = $(rust_common_cmd) --emit=obj=$@ $<
  
  $(obj)/%.o: $(src)/%.rs FORCE
 -      $(call if_changed_dep,rustc_o_rs)
 +      +$(call if_changed_dep,rustc_o_rs)
  
  quiet_cmd_rustc_rsi_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
        cmd_rustc_rsi_rs = \
        command -v $(RUSTFMT) >/dev/null && $(RUSTFMT) $@
  
  $(obj)/%.rsi: $(src)/%.rs FORCE
 -      $(call if_changed_dep,rustc_rsi_rs)
 +      +$(call if_changed_dep,rustc_rsi_rs)
  
  quiet_cmd_rustc_s_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
        cmd_rustc_s_rs = $(rust_common_cmd) --emit=asm=$@ $<
  
  $(obj)/%.s: $(src)/%.rs FORCE
 -      $(call if_changed_dep,rustc_s_rs)
 +      +$(call if_changed_dep,rustc_s_rs)
  
  quiet_cmd_rustc_ll_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
        cmd_rustc_ll_rs = $(rust_common_cmd) --emit=llvm-ir=$@ $<
  
  $(obj)/%.ll: $(src)/%.rs FORCE
 -      $(call if_changed_dep,rustc_ll_rs)
 +      +$(call if_changed_dep,rustc_ll_rs)
  
  # Compile assembler sources (.S)
  # ---------------------------------------------------------------------------
@@@ -388,6 -389,7 +389,7 @@@ $(obj)/%.asn1.c $(obj)/%.asn1.h: $(src)
  # To build objects in subdirs, we need to descend into the directories
  $(subdir-builtin): $(obj)/%/built-in.a: $(obj)/% ;
  $(subdir-modorder): $(obj)/%/modules.order: $(obj)/% ;
+ $(subdir-dtbslist): $(obj)/%/dtbs-list: $(obj)/% ;
  
  #
  # Rule to compile a set of .o files into one .a file (without symbol table)
@@@ -404,19 -406,21 +406,21 @@@ $(obj)/built-in.a: $(real-obj-y) FORC
        $(call if_changed,ar_builtin)
  
  #
- # Rule to create modules.order file
+ # Rule to create modules.order and dtbs-list
  #
- # Create commands to either record .ko file or cat modules.order from
- # a subdirectory
- # Add $(obj-m) as the prerequisite to avoid updating the timestamp of
- # modules.order unless contained modules are updated.
+ # This is a list of build artifacts (module or dtb) from the current Makefile
+ # and its sub-directories. The timestamp should be updated when any of the
+ # member files.
  
- cmd_modules_order = { $(foreach m, $(real-prereqs), \
-       $(if $(filter %/modules.order, $m), cat $m, echo $m);) :; } \
+ cmd_gen_order = { $(foreach m, $(real-prereqs), \
+       $(if $(filter %/$(notdir $@), $m), cat $m, echo $m);) :; } \
        > $@
  
  $(obj)/modules.order: $(obj-m) FORCE
-       $(call if_changed,modules_order)
+       $(call if_changed,gen_order)
+ $(obj)/dtbs-list: $(dtb-y) FORCE
+       $(call if_changed,gen_order)
  
  #
  # Rule to compile a set of .o files into one .a file (with symbol table)
diff --combined scripts/Makefile.lib
index 1bd59b8db05f0b8e89a140ee724ec799c3922b86,56f7fe2b476d5697a545a7022018de927b872edc..3179747cbd2cc014d0a8ba98cff008f28fbbc050
@@@ -45,6 -45,11 +45,11 @@@ els
  obj-y         := $(filter-out %/, $(obj-y))
  endif
  
+ ifdef need-dtbslist
+ dtb-y         += $(addsuffix /dtbs-list, $(subdir-ym))
+ always-y      += dtbs-list
+ endif
  # Expand $(foo-objs) $(foo-y) etc. by replacing their individuals
  suffix-search = $(strip $(foreach s, $3, $($(1:%$(strip $2)=%$s))))
  # List composite targets that are constructed by combining other targets
@@@ -99,6 -104,7 +104,7 @@@ lib-y               := $(addprefix $(obj)/,$(lib-y)
  real-obj-y    := $(addprefix $(obj)/,$(real-obj-y))
  real-obj-m    := $(addprefix $(obj)/,$(real-obj-m))
  multi-obj-m   := $(addprefix $(obj)/, $(multi-obj-m))
+ dtb-y         := $(addprefix $(obj)/, $(dtb-y))
  multi-dtb-y   := $(addprefix $(obj)/, $(multi-dtb-y))
  real-dtb-y    := $(addprefix $(obj)/, $(real-dtb-y))
  subdir-ym     := $(addprefix $(obj)/,$(subdir-ym))
@@@ -148,7 -154,7 +154,7 @@@ _cpp_flags     = $(KBUILD_CPPFLAGS) $(c
  #
  ifeq ($(CONFIG_GCOV_KERNEL),y)
  _c_flags += $(if $(patsubst n%,, \
-               $(GCOV_PROFILE_$(basetarget).o)$(GCOV_PROFILE)$(CONFIG_GCOV_PROFILE_ALL)), \
+               $(GCOV_PROFILE_$(target-stem).o)$(GCOV_PROFILE)$(CONFIG_GCOV_PROFILE_ALL)), \
                $(CFLAGS_GCOV))
  endif
  
  ifeq ($(CONFIG_KASAN),y)
  ifneq ($(CONFIG_KASAN_HW_TAGS),y)
  _c_flags += $(if $(patsubst n%,, \
-               $(KASAN_SANITIZE_$(basetarget).o)$(KASAN_SANITIZE)y), \
+               $(KASAN_SANITIZE_$(target-stem).o)$(KASAN_SANITIZE)y), \
                $(CFLAGS_KASAN), $(CFLAGS_KASAN_NOSANITIZE))
  endif
  endif
  
  ifeq ($(CONFIG_KMSAN),y)
  _c_flags += $(if $(patsubst n%,, \
-               $(KMSAN_SANITIZE_$(basetarget).o)$(KMSAN_SANITIZE)y), \
+               $(KMSAN_SANITIZE_$(target-stem).o)$(KMSAN_SANITIZE)y), \
                $(CFLAGS_KMSAN))
  _c_flags += $(if $(patsubst n%,, \
-               $(KMSAN_ENABLE_CHECKS_$(basetarget).o)$(KMSAN_ENABLE_CHECKS)y), \
+               $(KMSAN_ENABLE_CHECKS_$(target-stem).o)$(KMSAN_ENABLE_CHECKS)y), \
                , -mllvm -msan-disable-checks=1)
  endif
  
  ifeq ($(CONFIG_UBSAN),y)
  _c_flags += $(if $(patsubst n%,, \
-               $(UBSAN_SANITIZE_$(basetarget).o)$(UBSAN_SANITIZE)y), \
 -              $(UBSAN_SANITIZE_$(target-stem).o)$(UBSAN_SANITIZE)$(CONFIG_UBSAN_SANITIZE_ALL)), \
++              $(UBSAN_SANITIZE_$(target-stem).o)$(UBSAN_SANITIZE)y), \
                $(CFLAGS_UBSAN))
-               $(UBSAN_SIGNED_WRAP_$(basetarget).o)$(UBSAN_SANITIZE_$(basetarget).o)$(UBSAN_SIGNED_WRAP)$(UBSAN_SANITIZE)y), \
 +_c_flags += $(if $(patsubst n%,, \
++              $(UBSAN_SIGNED_WRAP_$(target-stem).o)$(UBSAN_SANITIZE_$(target-stem).o)$(UBSAN_SIGNED_WRAP)$(UBSAN_SANITIZE)y), \
 +              $(CFLAGS_UBSAN_SIGNED_WRAP))
  endif
  
  ifeq ($(CONFIG_KCOV),y)
  _c_flags += $(if $(patsubst n%,, \
-       $(KCOV_INSTRUMENT_$(basetarget).o)$(KCOV_INSTRUMENT)$(CONFIG_KCOV_INSTRUMENT_ALL)), \
+       $(KCOV_INSTRUMENT_$(target-stem).o)$(KCOV_INSTRUMENT)$(CONFIG_KCOV_INSTRUMENT_ALL)), \
        $(CFLAGS_KCOV))
  endif
  
  #
  ifeq ($(CONFIG_KCSAN),y)
  _c_flags += $(if $(patsubst n%,, \
-       $(KCSAN_SANITIZE_$(basetarget).o)$(KCSAN_SANITIZE)y), \
+       $(KCSAN_SANITIZE_$(target-stem).o)$(KCSAN_SANITIZE)y), \
        $(CFLAGS_KCSAN))
  # Some uninstrumented files provide implied barriers required to avoid false
  # positives: set KCSAN_INSTRUMENT_BARRIERS for barrier instrumentation only.
  _c_flags += $(if $(patsubst n%,, \
-       $(KCSAN_INSTRUMENT_BARRIERS_$(basetarget).o)$(KCSAN_INSTRUMENT_BARRIERS)n), \
+       $(KCSAN_INSTRUMENT_BARRIERS_$(target-stem).o)$(KCSAN_INSTRUMENT_BARRIERS)n), \
        -D__KCSAN_INSTRUMENT_BARRIERS__)
  endif
  
@@@ -257,7 -260,7 +263,7 @@@ objtool := $(objtree)/tools/objtool/obj
  
  objtool-args-$(CONFIG_HAVE_JUMP_LABEL_HACK)           += --hacks=jump_label
  objtool-args-$(CONFIG_HAVE_NOINSTR_HACK)              += --hacks=noinstr
 -objtool-args-$(CONFIG_CALL_DEPTH_TRACKING)            += --hacks=skylake
 +objtool-args-$(CONFIG_MITIGATION_CALL_DEPTH_TRACKING) += --hacks=skylake
  objtool-args-$(CONFIG_X86_KERNEL_IBT)                 += --ibt
  objtool-args-$(CONFIG_FINEIBT)                                += --cfi
  objtool-args-$(CONFIG_FTRACE_MCOUNT_USE_OBJTOOL)      += --mcount
@@@ -265,9 -268,9 +271,9 @@@ ifdef CONFIG_FTRACE_MCOUNT_USE_OBJTOO
  objtool-args-$(CONFIG_HAVE_OBJTOOL_NOP_MCOUNT)                += --mnop
  endif
  objtool-args-$(CONFIG_UNWINDER_ORC)                   += --orc
 -objtool-args-$(CONFIG_RETPOLINE)                      += --retpoline
 -objtool-args-$(CONFIG_RETHUNK)                                += --rethunk
 -objtool-args-$(CONFIG_SLS)                            += --sls
 +objtool-args-$(CONFIG_MITIGATION_RETPOLINE)           += --retpoline
 +objtool-args-$(CONFIG_MITIGATION_RETHUNK)             += --rethunk
 +objtool-args-$(CONFIG_MITIGATION_SLS)                 += --sls
  objtool-args-$(CONFIG_STACK_VALIDATION)                       += --stackval
  objtool-args-$(CONFIG_HAVE_STATIC_CALL_INLINE)                += --static-call
  objtool-args-$(CONFIG_HAVE_UACCESS_VALIDATION)                += --uaccess
@@@ -343,7 -346,7 +349,7 @@@ quiet_cmd_gzip = GZIP    $
  # DTC
  # ---------------------------------------------------------------------------
  DTC ?= $(objtree)/scripts/dtc/dtc
 -DTC_FLAGS += -Wno-interrupt_provider \
 +DTC_FLAGS += \
        -Wno-unique_unit_address
  
  # Disable noisy checks by default
@@@ -361,10 -364,11 +367,10 @@@ endi
  ifneq ($(findstring 2,$(KBUILD_EXTRA_WARN)),)
  DTC_FLAGS += -Wnode_name_chars_strict \
        -Wproperty_name_chars_strict \
 -      -Winterrupt_provider \
        -Wunique_unit_address
  endif
  
- DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
+ DTC_FLAGS += $(DTC_FLAGS_$(target-stem))
  
  # Set -@ if the target is a base DTB that overlay is applied onto
  DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)
diff --combined scripts/mod/modpost.c
index bf7c4b4b5ff45694322af0d6b221b6735ea1a739,9106fe7579466938d3c9d40630045c1e83f88f92..6b37039c9e927bc3ffcad77b82e3e9f95d7bf0a7
@@@ -1050,7 -1050,9 +1050,9 @@@ static void default_mismatch_handler(co
        sec_mismatch_count++;
  
        warn("%s: section mismatch in reference: %s+0x%x (section: %s) -> %s (section: %s)\n",
-            modname, fromsym, (unsigned int)(faddr - from->st_value), fromsec, tosym, tosec);
+            modname, fromsym,
+            (unsigned int)(faddr - (from ? from->st_value : 0)),
+            fromsec, tosym, tosec);
  
        if (mismatch->mismatch == EXTABLE_TO_NON_TEXT) {
                if (match(tosec, mismatch->bad_tosec))
@@@ -1848,7 -1850,7 +1850,7 @@@ static void add_header(struct buffer *b
  
        buf_printf(b,
                   "\n"
 -                 "#ifdef CONFIG_RETPOLINE\n"
 +                 "#ifdef CONFIG_MITIGATION_RETPOLINE\n"
                   "MODULE_INFO(retpoline, \"Y\");\n"
                   "#endif\n");
  
This page took 0.196217 seconds and 4 git commands to generate.