build: Add option KERNEL_KASAN_SW_TAGS and HW_TAGS
[openwrt/staging/jow.git] / config / Config-kernel.in
index ed75dd585355abfb07da5970ef7aeda2fa764265..0c9e00d11fe5edf5bd7275ae118e2545c0ca466f 100644 (file)
@@ -1,8 +1,6 @@
-# Copyright (C) 2006-2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
+# SPDX-License-Identifier: GPL-2.0-only
 #
 #
+# Copyright (C) 2006-2014 OpenWrt.org
 
 config KERNEL_BUILD_USER
        string "Custom Kernel Build User Name"
 
 config KERNEL_BUILD_USER
        string "Custom Kernel Build User Name"
@@ -26,15 +24,14 @@ config KERNEL_PRINTK
        bool "Enable support for printk"
        default y
 
        bool "Enable support for printk"
        default y
 
-config KERNEL_CRASHLOG
-       bool "Crash logging"
-       depends on !(arm || powerpc || sparc || TARGET_uml || i386 || x86_64)
-       default y
-
 config KERNEL_SWAP
        bool "Support for paging of anonymous memory (swap)"
        default y if !SMALL_FLASH
 
 config KERNEL_SWAP
        bool "Support for paging of anonymous memory (swap)"
        default y if !SMALL_FLASH
 
+config KERNEL_PROC_STRIPPED
+       bool "Strip non-essential /proc functionality to reduce code size"
+       default y if SMALL_FLASH
+
 config KERNEL_DEBUG_FS
        bool "Compile the kernel with debug filesystem enabled"
        default y
 config KERNEL_DEBUG_FS
        bool "Compile the kernel with debug filesystem enabled"
        default y
@@ -44,19 +41,16 @@ config KERNEL_DEBUG_FS
          write to these files. Many common debugging facilities, such as
          ftrace, require the existence of debugfs.
 
          write to these files. Many common debugging facilities, such as
          ftrace, require the existence of debugfs.
 
-config KERNEL_MIPS_FPU_EMULATOR
-       bool "Compile the kernel with MIPS FPU Emulator"
+config KERNEL_MIPS_FP_SUPPORT
+       bool
        default y if TARGET_pistachio
        default y if TARGET_pistachio
-       depends on (mips || mipsel || mips64 || mips64el)
 
 config KERNEL_ARM_PMU
        bool
 
 config KERNEL_ARM_PMU
        bool
-       default n
        depends on (arm || aarch64)
 
 config KERNEL_X86_VSYSCALL_EMULATION
        bool "Enable vsyscall emulation"
        depends on (arm || aarch64)
 
 config KERNEL_X86_VSYSCALL_EMULATION
        bool "Enable vsyscall emulation"
-       default n
        depends on x86_64
        help
          This enables emulation of the legacy vsyscall page.  Disabling
        depends on x86_64
        help
          This enables emulation of the legacy vsyscall page.  Disabling
@@ -74,17 +68,20 @@ config KERNEL_X86_VSYSCALL_EMULATION
 
 config KERNEL_PERF_EVENTS
        bool "Compile the kernel with performance events and counters"
 
 config KERNEL_PERF_EVENTS
        bool "Compile the kernel with performance events and counters"
-       default n
        select KERNEL_ARM_PMU if (arm || aarch64)
 
 config KERNEL_PROFILING
        bool "Compile the kernel with profiling enabled"
        select KERNEL_ARM_PMU if (arm || aarch64)
 
 config KERNEL_PROFILING
        bool "Compile the kernel with profiling enabled"
-       default n
        select KERNEL_PERF_EVENTS
        help
          Enable the extended profiling support mechanisms used by profilers such
          as OProfile.
 
        select KERNEL_PERF_EVENTS
        help
          Enable the extended profiling support mechanisms used by profilers such
          as OProfile.
 
+config KERNEL_RPI_AXIPERF
+       bool "Compile the kernel with RaspberryPi AXI Performance monitors"
+       default y
+       depends on KERNEL_PERF_EVENTS && TARGET_bcm27xx
+
 config KERNEL_UBSAN
        bool "Compile the kernel with undefined behaviour sanity checker"
        help
 config KERNEL_UBSAN
        bool "Compile the kernel with undefined behaviour sanity checker"
        help
@@ -113,6 +110,16 @@ config KERNEL_UBSAN_ALIGNMENT
          Enabling this option on architectures that support unaligned
          accesses may produce a lot of false positives.
 
          Enabling this option on architectures that support unaligned
          accesses may produce a lot of false positives.
 
+config KERNEL_UBSAN_BOUNDS
+       bool "Perform array index bounds checking"
+       depends on KERNEL_UBSAN
+       help
+         This option enables detection of directly indexed out of bounds array
+         accesses, where the array size is known at compile time. Note that
+         this does not protect array overflows via bad calls to the
+         {str,mem}*cpy() family of functions (that is addressed by
+         FORTIFY_SOURCE).
+
 config KERNEL_UBSAN_NULL
        bool "Enable checking of null pointers"
        depends on KERNEL_UBSAN
 config KERNEL_UBSAN_NULL
        bool "Enable checking of null pointers"
        depends on KERNEL_UBSAN
@@ -120,6 +127,19 @@ config KERNEL_UBSAN_NULL
          This option enables detection of memory accesses via a
          null pointer.
 
          This option enables detection of memory accesses via a
          null pointer.
 
+config KERNEL_UBSAN_TRAP
+       bool "On Sanitizer warnings, abort the running kernel code"
+       depends on KERNEL_UBSAN
+       help
+         Building kernels with Sanitizer features enabled tends to grow the
+         kernel size by around 5%, due to adding all the debugging text on
+         failure paths. To avoid this, Sanitizer instrumentation can just
+         issue a trap. This reduces the kernel size overhead but turns all
+         warnings (including potentially harmless conditions) into full
+         exceptions that abort the running kernel code (regardless of context,
+         locks held, etc), which may destabilize the system. For some system
+         builders this is an acceptable trade-off.
+
 config KERNEL_KASAN
        bool "Compile the kernel with KASan: runtime memory debugger"
        select KERNEL_SLUB_DEBUG
 config KERNEL_KASAN
        bool "Compile the kernel with KASan: runtime memory debugger"
        select KERNEL_SLUB_DEBUG
@@ -146,10 +166,91 @@ config KERNEL_KASAN_EXTRA
          compile time.
          https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715 has more
 
          compile time.
          https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715 has more
 
+config KERNEL_KASAN_VMALLOC
+       bool "Back mappings in vmalloc space with real shadow memory"
+       depends on KERNEL_KASAN
+       help
+         By default, the shadow region for vmalloc space is the read-only
+         zero page. This means that KASAN cannot detect errors involving
+         vmalloc space.
+
+         Enabling this option will hook in to vmap/vmalloc and back those
+         mappings with real shadow memory allocated on demand. This allows
+         for KASAN to detect more sorts of errors (and to support vmapped
+         stacks), but at the cost of higher memory usage.
+
+         This option depends on HAVE_ARCH_KASAN_VMALLOC, but we can't
+         depend on that in here, so it is possible that enabling this
+         will have no effect.
+
+if KERNEL_KASAN
+choice
+       prompt "KASAN mode"
+       depends on KERNEL_KASAN
+       default KERNEL_KASAN_GENERIC
+       help
+         KASAN has three modes:
+
+         1. Generic KASAN (supported by many architectures, enabled with
+            CONFIG_KASAN_GENERIC, similar to userspace ASan),
+         2. Software Tag-Based KASAN (arm64 only, based on software memory
+            tagging, enabled with CONFIG_KASAN_SW_TAGS, similar to userspace
+            HWASan), and
+         3. Hardware Tag-Based KASAN (arm64 only, based on hardware memory
+            tagging, enabled with CONFIG_KASAN_HW_TAGS).
+
+config KERNEL_KASAN_GENERIC
+       bool "Generic KASAN"
+       select KERNEL_SLUB_DEBUG
+       help
+         Enables Generic KASAN.
+
+         Consumes about 1/8th of available memory at kernel start and adds an
+         overhead of ~50% for dynamic allocations.
+         The performance slowdown is ~x3.
+
+config KERNEL_KASAN_SW_TAGS
+       bool "Software Tag-Based KASAN"
+       depends on aarch64
+       select KERNEL_SLUB_DEBUG
+       help
+         Enables Software Tag-Based KASAN.
+
+         Supported only on arm64 CPUs and relies on Top Byte Ignore.
+
+         Consumes about 1/16th of available memory at kernel start and
+         add an overhead of ~20% for dynamic allocations.
+
+         May potentially introduce problems related to pointer casting and
+         comparison, as it embeds a tag into the top byte of each pointer.
+
+config KERNEL_KASAN_HW_TAGS
+       bool "Hardware Tag-Based KASAN"
+       depends on aarch64
+       select KERNEL_SLUB_DEBUG
+       select KERNEL_ARM64_MTE
+       help
+         Enables Hardware Tag-Based KASAN.
+
+         Supported only on arm64 CPUs starting from ARMv8.5 and relies on
+         Memory Tagging Extension and Top Byte Ignore.
+
+         Consumes about 1/32nd of available memory.
+
+         May potentially introduce problems related to pointer casting and
+         comparison, as it embeds a tag into the top byte of each pointer.
+
+endchoice
+
+       config KERNEL_ARM64_MTE
+               def_bool n
+
+endif
 
 choice
        prompt "Instrumentation type"
        depends on KERNEL_KASAN
 
 choice
        prompt "Instrumentation type"
        depends on KERNEL_KASAN
+       depends on !KERNEL_KASAN_HW_TAGS
        default KERNEL_KASAN_OUTLINE
 
 config KERNEL_KASAN_OUTLINE
        default KERNEL_KASAN_OUTLINE
 
 config KERNEL_KASAN_OUTLINE
@@ -172,9 +273,41 @@ config KERNEL_KASAN_INLINE
 
 endchoice
 
 
 endchoice
 
+config KERNEL_KCOV
+       bool "Compile the kernel with code coverage for fuzzing"
+       select KERNEL_DEBUG_FS
+       help
+         KCOV exposes kernel code coverage information in a form suitable
+         for coverage-guided fuzzing (randomized testing).
+
+         If RANDOMIZE_BASE is enabled, PC values will not be stable across
+         different machines and across reboots. If you need stable PC values,
+         disable RANDOMIZE_BASE.
+
+         For more details, see Documentation/kcov.txt.
+
+config KERNEL_KCOV_ENABLE_COMPARISONS
+       bool "Enable comparison operands collection by KCOV"
+       depends on KERNEL_KCOV
+       help
+         KCOV also exposes operands of every comparison in the instrumented
+         code along with operand sizes and PCs of the comparison instructions.
+         These operands can be used by fuzzing engines to improve the quality
+         of fuzzing coverage.
+
+config KERNEL_KCOV_INSTRUMENT_ALL
+       bool "Instrument all code by default"
+       depends on KERNEL_KCOV
+       default y if KERNEL_KCOV
+       help
+         If you are doing generic system call fuzzing (like e.g. syzkaller),
+         then you will want to instrument the whole kernel and you should
+         say y here. If you are doing more targeted fuzzing (like e.g.
+         filesystem fuzzing with AFL) then you will want to enable coverage
+         for more specific subsets of files, and should say n here.
+
 config KERNEL_TASKSTATS
        bool "Compile the kernel with task resource/io statistics and accounting"
 config KERNEL_TASKSTATS
        bool "Compile the kernel with task resource/io statistics and accounting"
-       default n
        help
          Enable the collection and publishing of task/io statistics and
          accounting.  Enable this option to enable i/o monitoring in system
        help
          Enable the collection and publishing of task/io statistics and
          accounting.  Enable this option to enable i/o monitoring in system
@@ -202,41 +335,80 @@ config KERNEL_KALLSYMS
 config KERNEL_FTRACE
        bool "Compile the kernel with tracing support"
        depends on !TARGET_uml
 config KERNEL_FTRACE
        bool "Compile the kernel with tracing support"
        depends on !TARGET_uml
-       default n
 
 config KERNEL_FTRACE_SYSCALLS
        bool "Trace system calls"
        depends on KERNEL_FTRACE
 
 config KERNEL_FTRACE_SYSCALLS
        bool "Trace system calls"
        depends on KERNEL_FTRACE
-       default n
 
 config KERNEL_ENABLE_DEFAULT_TRACERS
        bool "Trace process context switches and events"
        depends on KERNEL_FTRACE
 
 config KERNEL_ENABLE_DEFAULT_TRACERS
        bool "Trace process context switches and events"
        depends on KERNEL_FTRACE
-       default n
 
 config KERNEL_FUNCTION_TRACER
        bool "Function tracer"
        depends on KERNEL_FTRACE
 
 config KERNEL_FUNCTION_TRACER
        bool "Function tracer"
        depends on KERNEL_FTRACE
-       default n
 
 config KERNEL_FUNCTION_GRAPH_TRACER
        bool "Function graph tracer"
        depends on KERNEL_FUNCTION_TRACER
 
 config KERNEL_FUNCTION_GRAPH_TRACER
        bool "Function graph tracer"
        depends on KERNEL_FUNCTION_TRACER
-       default n
 
 config KERNEL_DYNAMIC_FTRACE
        bool "Enable/disable function tracing dynamically"
        depends on KERNEL_FUNCTION_TRACER
 
 config KERNEL_DYNAMIC_FTRACE
        bool "Enable/disable function tracing dynamically"
        depends on KERNEL_FUNCTION_TRACER
-       default n
 
 config KERNEL_FUNCTION_PROFILER
        bool "Function profiler"
        depends on KERNEL_FUNCTION_TRACER
 
 config KERNEL_FUNCTION_PROFILER
        bool "Function profiler"
        depends on KERNEL_FUNCTION_TRACER
-       default n
+
+config KERNEL_IRQSOFF_TRACER
+       bool "Interrupts-off Latency Tracer"
+       depends on KERNEL_FTRACE
+       help
+         This option measures the time spent in irqs-off critical
+         sections, with microsecond accuracy.
+
+         The default measurement method is a maximum search, which is
+         disabled by default and can be runtime (re-)started
+         via:
+
+             echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
+
+         (Note that kernel size and overhead increase with this option
+         enabled. This option and the preempt-off timing option can be
+         used together or separately.)
+
+config KERNEL_PREEMPT_TRACER
+       bool "Preemption-off Latency Tracer"
+       depends on KERNEL_FTRACE
+       help
+         This option measures the time spent in preemption-off critical
+         sections, with microsecond accuracy.
+
+         The default measurement method is a maximum search, which is
+         disabled by default and can be runtime (re-)started
+         via:
+
+             echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
+
+         (Note that kernel size and overhead increase with this option
+         enabled. This option and the irqs-off timing option can be
+         used together or separately.)
+
+config KERNEL_HIST_TRIGGERS
+       bool "Histogram triggers"
+       depends on KERNEL_FTRACE
+       help
+         Hist triggers allow one or more arbitrary trace event fields to be
+         aggregated into hash tables and dumped to stdout by reading a
+         debugfs/tracefs file. They're useful for gathering quick and dirty
+         (though precise) summaries of event activity as an initial guide for
+         further investigation using more advanced tools.
+
+         Inter-event tracing of quantities such as latencies is also
+         supported using hist triggers under this option.
 
 config KERNEL_DEBUG_KERNEL
        bool
 
 config KERNEL_DEBUG_KERNEL
        bool
-       default n
 
 config KERNEL_DEBUG_INFO
        bool "Compile the kernel with debug information"
 
 config KERNEL_DEBUG_INFO
        bool "Compile the kernel with debug information"
@@ -245,6 +417,58 @@ config KERNEL_DEBUG_INFO
        help
          This will compile your kernel and modules with debug information.
 
        help
          This will compile your kernel and modules with debug information.
 
+config KERNEL_DEBUG_INFO_BTF
+
+       bool "Enable additional BTF type information"
+       depends on !HOST_OS_MACOS
+       depends on KERNEL_DEBUG_INFO && !KERNEL_DEBUG_INFO_REDUCED
+       select DWARVES
+       help
+         Generate BPF Type Format (BTF) information from DWARF debug info.
+         Turning this on expects presence of pahole tool, which will convert
+         DWARF type info into equivalent deduplicated BTF type info.
+
+         Required to run BPF CO-RE applications.
+
+config KERNEL_MODULE_ALLOW_BTF_MISMATCH
+       bool "Allow loading modules with non-matching BTF type info"
+       depends on KERNEL_DEBUG_INFO_BTF
+       help
+         For modules whose split BTF does not match vmlinux, load without
+         BTF rather than refusing to load. The default behavior with
+         module BTF enabled is to reject modules with such mismatches;
+         this option will still load module BTF where possible but ignore
+         it when a mismatch is found.
+
+config KERNEL_DEBUG_INFO_REDUCED
+       bool "Reduce debugging information"
+       default y
+       depends on KERNEL_DEBUG_INFO
+       help
+         If you say Y here gcc is instructed to generate less debugging
+         information for structure types. This means that tools that
+         need full debugging information (like kgdb or systemtap) won't
+         be happy. But if you merely need debugging information to
+         resolve line numbers there is no loss. Advantage is that
+         build directory object sizes shrink dramatically over a full
+         DEBUG_INFO build and compile times are reduced too.
+         Only works with newer gcc versions.
+
+config KERNEL_FRAME_WARN
+       int
+       range 0 8192
+       default 1280 if KERNEL_KASAN && !ARCH_64BIT
+       default 1024 if !ARCH_64BIT
+       default 2048 if ARCH_64BIT
+       help
+         Tell the compiler to warn at build time for stack frames larger than this.
+         Setting this too low will cause a lot of warnings.
+         Setting it to 0 disables the warning.
+
+# KERNEL_DEBUG_LL symbols must have the default value set as otherwise
+# KConfig wont evaluate them unless KERNEL_EARLY_PRINTK is selected
+# which means that buildroot wont override the DEBUG_LL symbols in target
+# kernel configurations and lead to devices that dont have working console
 config KERNEL_DEBUG_LL_UART_NONE
        bool
        default n
 config KERNEL_DEBUG_LL_UART_NONE
        bool
        default n
@@ -258,10 +482,16 @@ config KERNEL_DEBUG_LL
        help
          ARM low level debugging.
 
        help
          ARM low level debugging.
 
+config KERNEL_DEBUG_VIRTUAL
+       bool "Compile the kernel with VM translations debugging"
+       select KERNEL_DEBUG_KERNEL
+       help
+         Enable checks sanity checks to catch invalid uses of
+         virt_to_phys()/phys_to_virt() against the non-linear address space.
+
 config KERNEL_DYNAMIC_DEBUG
        bool "Compile the kernel with dynamic printk"
        select KERNEL_DEBUG_FS
 config KERNEL_DYNAMIC_DEBUG
        bool "Compile the kernel with dynamic printk"
        select KERNEL_DEBUG_FS
-       default n
        help
          Compiles debug level messages into the kernel, which would not
          otherwise be available at runtime. These messages can then be
        help
          Compiles debug level messages into the kernel, which would not
          otherwise be available at runtime. These messages can then be
@@ -273,7 +503,6 @@ config KERNEL_DYNAMIC_DEBUG
 config KERNEL_EARLY_PRINTK
        bool "Compile the kernel with early printk"
        default y if TARGET_bcm53xx
 config KERNEL_EARLY_PRINTK
        bool "Compile the kernel with early printk"
        default y if TARGET_bcm53xx
-       default n
        depends on arm
        select KERNEL_DEBUG_KERNEL
        select KERNEL_DEBUG_LL if arm
        depends on arm
        select KERNEL_DEBUG_KERNEL
        select KERNEL_DEBUG_LL if arm
@@ -284,7 +513,6 @@ config KERNEL_EARLY_PRINTK
 
 config KERNEL_KPROBES
        bool "Compile the kernel with kprobes support"
 
 config KERNEL_KPROBES
        bool "Compile the kernel with kprobes support"
-       default n
        select KERNEL_FTRACE
        select KERNEL_PERF_EVENTS
        help
        select KERNEL_FTRACE
        select KERNEL_PERF_EVENTS
        help
@@ -295,18 +523,33 @@ config KERNEL_KPROBES
          instrumentation and testing.
          If in doubt, say "N".
 
          instrumentation and testing.
          If in doubt, say "N".
 
-config KERNEL_KPROBE_EVENT
+config KERNEL_KPROBE_EVENTS
        bool
        default y if KERNEL_KPROBES
 
        bool
        default y if KERNEL_KPROBES
 
-config KERNEL_KPROBE_EVENTS
+config KERNEL_BPF_EVENTS
+       bool "Compile the kernel with BPF event support"
+       select KERNEL_KPROBES
+       help
+         Allows to attach BPF programs to kprobe, uprobe and tracepoint events.
+         This is required to use BPF maps of type BPF_MAP_TYPE_PERF_EVENT_ARRAY
+         for sending data from BPF programs to user-space for post-processing
+         or logging.
+
+config KERNEL_BPF_KPROBE_OVERRIDE
        bool
        bool
-       default y if KERNEL_KPROBES
+       depends on KERNEL_KPROBES
+       default n
 
 config KERNEL_AIO
        bool "Compile the kernel with asynchronous IO support"
        default y if !SMALL_FLASH
 
 
 config KERNEL_AIO
        bool "Compile the kernel with asynchronous IO support"
        default y if !SMALL_FLASH
 
+config KERNEL_IO_URING
+       bool "Compile the kernel with io_uring support"
+       depends on !SMALL_FLASH
+       default y if (x86_64 || aarch64)
+
 config KERNEL_FHANDLE
        bool "Compile the kernel with support for fhandle syscalls"
        default y if !SMALL_FLASH
 config KERNEL_FHANDLE
        bool "Compile the kernel with support for fhandle syscalls"
        default y if !SMALL_FLASH
@@ -317,7 +560,29 @@ config KERNEL_FANOTIFY
 
 config KERNEL_BLK_DEV_BSG
        bool "Compile the kernel with SCSI generic v4 support for any block device"
 
 config KERNEL_BLK_DEV_BSG
        bool "Compile the kernel with SCSI generic v4 support for any block device"
-       default n
+
+config KERNEL_TRANSPARENT_HUGEPAGE
+       bool
+
+choice
+       prompt "Transparent Hugepage Support sysfs defaults"
+       depends on KERNEL_TRANSPARENT_HUGEPAGE
+       default KERNEL_TRANSPARENT_HUGEPAGE_ALWAYS
+
+       config KERNEL_TRANSPARENT_HUGEPAGE_ALWAYS
+               bool "always"
+
+       config KERNEL_TRANSPARENT_HUGEPAGE_MADVISE
+               bool "madvise"
+endchoice
+
+config KERNEL_HUGETLBFS
+       bool
+
+config KERNEL_HUGETLB_PAGE
+       bool "Compile the kernel with HugeTLB support"
+       select KERNEL_TRANSPARENT_HUGEPAGE
+       select KERNEL_HUGETLBFS
 
 config KERNEL_MAGIC_SYSRQ
        bool "Compile the kernel with SysRq support"
 
 config KERNEL_MAGIC_SYSRQ
        bool "Compile the kernel with SysRq support"
@@ -342,7 +607,74 @@ config KERNEL_ELF_CORE
 config KERNEL_PROVE_LOCKING
        bool "Enable kernel lock checking"
        select KERNEL_DEBUG_KERNEL
 config KERNEL_PROVE_LOCKING
        bool "Enable kernel lock checking"
        select KERNEL_DEBUG_KERNEL
-       default n
+
+config KERNEL_SOFTLOCKUP_DETECTOR
+       bool "Compile the kernel with detect Soft Lockups"
+       depends on KERNEL_DEBUG_KERNEL
+       help
+         Say Y here to enable the kernel to act as a watchdog to detect
+         soft lockups.
+
+         Softlockups are bugs that cause the kernel to loop in kernel
+         mode for more than 20 seconds, without giving other tasks a
+         chance to run.  The current stack trace is displayed upon
+         detection and the system will stay locked up.
+
+config KERNEL_HARDLOCKUP_DETECTOR
+       bool "Compile the kernel with detect Hard Lockups"
+       depends on KERNEL_DEBUG_KERNEL
+       help
+         Say Y here to enable the kernel to act as a watchdog to detect
+         hard lockups.
+
+         Hardlockups are bugs that cause the CPU to loop in kernel mode
+         for more than 10 seconds, without letting other interrupts have a
+         chance to run.  The current stack trace is displayed upon detection
+         and the system will stay locked up.
+
+config KERNEL_DETECT_HUNG_TASK
+       bool "Compile the kernel with detect Hung Tasks"
+       depends on KERNEL_DEBUG_KERNEL
+       default KERNEL_SOFTLOCKUP_DETECTOR
+       help
+         Say Y here to enable the kernel to detect "hung tasks",
+         which are bugs that cause the task to be stuck in
+         uninterruptible "D" state indefinitely.
+
+         When a hung task is detected, the kernel will print the
+         current stack trace (which you should report), but the
+         task will stay in uninterruptible state. If lockdep is
+         enabled then all held locks will also be reported. This
+         feature has negligible overhead.
+
+config KERNEL_WQ_WATCHDOG
+       bool "Compile the kernel with detect Workqueue Stalls"
+       depends on KERNEL_DEBUG_KERNEL
+       help
+         Say Y here to enable stall detection on workqueues.  If a
+         worker pool doesn't make forward progress on a pending work
+         item for over a given amount of time, 30s by default, a
+         warning message is printed along with dump of workqueue
+         state.  This can be configured through kernel parameter
+         "workqueue.watchdog_thresh" and its sysfs counterpart.
+
+config KERNEL_DEBUG_ATOMIC_SLEEP
+       bool "Compile the kernel with sleep inside atomic section checking"
+       depends on KERNEL_DEBUG_KERNEL
+       help
+         If you say Y here, various routines which may sleep will become very
+         noisy if they are called inside atomic sections: when a spinlock is
+         held, inside an rcu read side critical section, inside preempt disabled
+         sections, inside an interrupt, etc...
+
+config KERNEL_DEBUG_VM
+       bool "Compile the kernel with debug VM"
+       depends on KERNEL_DEBUG_KERNEL
+       help
+         Enable this to turn on extended checks in the virtual-memory system
+          that may impact performance.
+
+         If unsure, say N.
 
 config KERNEL_PRINTK_TIME
        bool "Enable printk timestamps"
 
 config KERNEL_PRINTK_TIME
        bool "Enable printk timestamps"
@@ -371,10 +703,14 @@ config KERNEL_KEXEC
 config KERNEL_PROC_VMCORE
        bool
 
 config KERNEL_PROC_VMCORE
        bool
 
+config KERNEL_PROC_KCORE
+       bool
+
 config KERNEL_CRASH_DUMP
        depends on i386 || x86_64 || arm || armeb
        select KERNEL_KEXEC
        select KERNEL_PROC_VMCORE
 config KERNEL_CRASH_DUMP
        depends on i386 || x86_64 || arm || armeb
        select KERNEL_KEXEC
        select KERNEL_PROC_VMCORE
+       select KERNEL_PROC_KCORE
        bool "Enable support for kexec crashdump"
        default y
 
        bool "Enable support for kexec crashdump"
        default y
 
@@ -384,11 +720,9 @@ config USE_RFKILL
 
 config USE_SPARSE
        bool "Enable sparse check during kernel build"
 
 config USE_SPARSE
        bool "Enable sparse check during kernel build"
-       default n
 
 config KERNEL_DEVTMPFS
        bool "Compile the kernel with device tmpfs enabled"
 
 config KERNEL_DEVTMPFS
        bool "Compile the kernel with device tmpfs enabled"
-       default n
        help
          devtmpfs is a simple, kernel-managed /dev filesystem. The kernel creates
          devices nodes for all registered devices to simplify boot, but leaves more
        help
          devtmpfs is a simple, kernel-managed /dev filesystem. The kernel creates
          devices nodes for all registered devices to simplify boot, but leaves more
@@ -398,28 +732,24 @@ if KERNEL_DEVTMPFS
 
        config KERNEL_DEVTMPFS_MOUNT
                bool "Automatically mount devtmpfs after root filesystem is mounted"
 
        config KERNEL_DEVTMPFS_MOUNT
                bool "Automatically mount devtmpfs after root filesystem is mounted"
-               default n
 
 endif
 
 config KERNEL_KEYS
 
 endif
 
 config KERNEL_KEYS
-    bool "Enable kernel access key retention support"
-    default n
+       bool "Enable kernel access key retention support"
+       default !SMALL_FLASH
 
 config KERNEL_PERSISTENT_KEYRINGS
 
 config KERNEL_PERSISTENT_KEYRINGS
-    bool "Enable kernel persistent keyrings"
-    depends on KERNEL_KEYS
-    default n
+       bool "Enable kernel persistent keyrings"
+       depends on KERNEL_KEYS
 
 
-config KERNEL_BIG_KEYS
-    bool "Enable large payload keys on kernel keyrings"
-    depends on KERNEL_KEYS
-    default n
+config KERNEL_KEYS_REQUEST_CACHE
+       bool "Enable temporary caching of the last request_key() result"
+       depends on KERNEL_KEYS
 
 
-config KERNEL_ENCRYPTED_KEYS
-    tristate "Enable keys with encrypted payloads on kernel keyrings"
-    depends on KERNEL_KEYS
-    default n
+config KERNEL_BIG_KEYS
+       bool "Enable large payload keys on kernel keyrings"
+       depends on KERNEL_KEYS
 
 #
 # CGROUP support symbols
 
 #
 # CGROUP support symbols
@@ -433,7 +763,6 @@ if KERNEL_CGROUPS
 
        config KERNEL_CGROUP_DEBUG
                bool "Example debug cgroup subsystem"
 
        config KERNEL_CGROUP_DEBUG
                bool "Example debug cgroup subsystem"
-               default n
                help
                  This option enables a simple cgroup subsystem that
                  exports useful debugging information about the cgroups
                help
                  This option enables a simple cgroup subsystem that
                  exports useful debugging information about the cgroups
@@ -441,21 +770,26 @@ if KERNEL_CGROUPS
 
        config KERNEL_FREEZER
                bool
 
        config KERNEL_FREEZER
                bool
-               default y if KERNEL_CGROUP_FREEZER
 
        config KERNEL_CGROUP_FREEZER
 
        config KERNEL_CGROUP_FREEZER
-               bool "Freezer cgroup subsystem"
-               default y
+               bool "legacy Freezer cgroup subsystem"
+               select KERNEL_FREEZER
                help
                  Provides a way to freeze and unfreeze all tasks in a
                  cgroup.
                help
                  Provides a way to freeze and unfreeze all tasks in a
                  cgroup.
+                 (legacy cgroup1-only controller, in cgroup2 freezer
+                 is integrated in the Memory controller)
 
        config KERNEL_CGROUP_DEVICE
 
        config KERNEL_CGROUP_DEVICE
-               bool "Device controller for cgroups"
-               default y
+               bool "legacy Device controller for cgroups"
                help
                  Provides a cgroup implementing whitelists for devices which
                  a process in the cgroup can mknod or open.
                help
                  Provides a cgroup implementing whitelists for devices which
                  a process in the cgroup can mknod or open.
+                 (legacy cgroup1-only controller)
+
+       config KERNEL_CGROUP_HUGETLB
+               bool "HugeTLB controller"
+               select KERNEL_HUGETLB_PAGE
 
        config KERNEL_CGROUP_PIDS
                bool "PIDs cgroup subsystem"
 
        config KERNEL_CGROUP_PIDS
                bool "PIDs cgroup subsystem"
@@ -464,9 +798,17 @@ if KERNEL_CGROUPS
                  Provides enforcement of process number limits in the scope of a
                  cgroup.
 
                  Provides enforcement of process number limits in the scope of a
                  cgroup.
 
+       config KERNEL_CGROUP_RDMA
+               bool "RDMA controller for cgroups"
+               default y
+
+       config KERNEL_CGROUP_BPF
+               bool "Support for eBPF programs attached to cgroups"
+               default y
+
        config KERNEL_CPUSETS
                bool "Cpuset support"
        config KERNEL_CPUSETS
                bool "Cpuset support"
-               default y if !SMALL_FLASH
+               default y
                help
                  This option will let you create and manage CPUSETs which
                  allow dynamically partitioning a system into sets of CPUs and
                help
                  This option will let you create and manage CPUSETs which
                  allow dynamically partitioning a system into sets of CPUs and
@@ -475,19 +817,18 @@ if KERNEL_CGROUPS
 
        config KERNEL_PROC_PID_CPUSET
                bool "Include legacy /proc/<pid>/cpuset file"
 
        config KERNEL_PROC_PID_CPUSET
                bool "Include legacy /proc/<pid>/cpuset file"
-               default n
                depends on KERNEL_CPUSETS
 
        config KERNEL_CGROUP_CPUACCT
                bool "Simple CPU accounting cgroup subsystem"
                depends on KERNEL_CPUSETS
 
        config KERNEL_CGROUP_CPUACCT
                bool "Simple CPU accounting cgroup subsystem"
-               default y if !SMALL_FLASH
+               default y
                help
                  Provides a simple Resource Controller for monitoring the
                  total CPU consumed by the tasks in a cgroup.
 
        config KERNEL_RESOURCE_COUNTERS
                bool "Resource counters"
                help
                  Provides a simple Resource Controller for monitoring the
                  total CPU consumed by the tasks in a cgroup.
 
        config KERNEL_RESOURCE_COUNTERS
                bool "Resource counters"
-               default y if !SMALL_FLASH
+               default y
                help
                  This option enables controller independent resource accounting
                  infrastructure that works with cgroups.
                help
                  This option enables controller independent resource accounting
                  infrastructure that works with cgroups.
@@ -498,8 +839,9 @@ if KERNEL_CGROUPS
 
        config KERNEL_MEMCG
                bool "Memory Resource Controller for Control Groups"
 
        config KERNEL_MEMCG
                bool "Memory Resource Controller for Control Groups"
-               default y if !SMALL_FLASH
-               depends on KERNEL_RESOURCE_COUNTERS || !LINUX_3_18
+               default y
+               select KERNEL_FREEZER
+               depends on KERNEL_RESOURCE_COUNTERS
                help
                  Provides a memory resource controller that manages both anonymous
                  memory and page cache. (See Documentation/cgroups/memory.txt)
                help
                  Provides a memory resource controller that manages both anonymous
                  memory and page cache. (See Documentation/cgroups/memory.txt)
@@ -521,7 +863,7 @@ if KERNEL_CGROUPS
 
        config KERNEL_MEMCG_SWAP
                bool "Memory Resource Controller Swap Extension"
 
        config KERNEL_MEMCG_SWAP
                bool "Memory Resource Controller Swap Extension"
-               default n
+               default y
                depends on KERNEL_MEMCG
                help
                  Add swap management feature to memory resource controller. When you
                depends on KERNEL_MEMCG
                help
                  Add swap management feature to memory resource controller. When you
@@ -540,7 +882,6 @@ if KERNEL_CGROUPS
 
        config KERNEL_MEMCG_SWAP_ENABLED
                bool "Memory Resource Controller Swap Extension enabled by default"
 
        config KERNEL_MEMCG_SWAP_ENABLED
                bool "Memory Resource Controller Swap Extension enabled by default"
-               default n
                depends on KERNEL_MEMCG_SWAP
                help
                  Memory Resource Controller Swap Extension comes with its price in
                depends on KERNEL_MEMCG_SWAP
                help
                  Memory Resource Controller Swap Extension comes with its price in
@@ -556,7 +897,7 @@ if KERNEL_CGROUPS
 
        config KERNEL_MEMCG_KMEM
                bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
 
        config KERNEL_MEMCG_KMEM
                bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
-               default y if !SMALL_FLASH
+               default y
                depends on KERNEL_MEMCG
                help
                  The Kernel Memory extension for Memory Resource Controller can limit
                depends on KERNEL_MEMCG
                help
                  The Kernel Memory extension for Memory Resource Controller can limit
@@ -569,7 +910,6 @@ if KERNEL_CGROUPS
        config KERNEL_CGROUP_PERF
                bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
                select KERNEL_PERF_EVENTS
        config KERNEL_CGROUP_PERF
                bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
                select KERNEL_PERF_EVENTS
-               default n
                help
                  This option extends the per-cpu mode to restrict monitoring to
                  threads which belong to the cgroup specified and run on the
                help
                  This option extends the per-cpu mode to restrict monitoring to
                  threads which belong to the cgroup specified and run on the
@@ -577,7 +917,7 @@ if KERNEL_CGROUPS
 
        menuconfig KERNEL_CGROUP_SCHED
                bool "Group CPU scheduler"
 
        menuconfig KERNEL_CGROUP_SCHED
                bool "Group CPU scheduler"
-               default y if !SMALL_FLASH
+               default y
                help
                  This feature lets CPU scheduler recognize task groups and control CPU
                  bandwidth allocation to such task groups. It uses cgroups to group
                help
                  This feature lets CPU scheduler recognize task groups and control CPU
                  bandwidth allocation to such task groups. It uses cgroups to group
@@ -587,11 +927,11 @@ if KERNEL_CGROUPS
 
                config KERNEL_FAIR_GROUP_SCHED
                        bool "Group scheduling for SCHED_OTHER"
 
                config KERNEL_FAIR_GROUP_SCHED
                        bool "Group scheduling for SCHED_OTHER"
-                       default y if !SMALL_FLASH
+                       default y
 
                config KERNEL_CFS_BANDWIDTH
                        bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
 
                config KERNEL_CFS_BANDWIDTH
                        bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
-                       default n
+                       default y
                        depends on KERNEL_FAIR_GROUP_SCHED
                        help
                          This option allows users to define CPU bandwidth rates (limits) for
                        depends on KERNEL_FAIR_GROUP_SCHED
                        help
                          This option allows users to define CPU bandwidth rates (limits) for
@@ -602,7 +942,7 @@ if KERNEL_CGROUPS
 
                config KERNEL_RT_GROUP_SCHED
                        bool "Group scheduling for SCHED_RR/FIFO"
 
                config KERNEL_RT_GROUP_SCHED
                        bool "Group scheduling for SCHED_RR/FIFO"
-                       default y if !SMALL_FLASH
+                       default y
                        help
                          This feature lets you explicitly allocate real CPU bandwidth
                          to task groups. If enabled, it will also make it impossible to
                        help
                          This feature lets you explicitly allocate real CPU bandwidth
                          to task groups. If enabled, it will also make it impossible to
@@ -637,7 +977,7 @@ if KERNEL_CGROUPS
 
                config KERNEL_BLK_DEV_THROTTLING
                        bool "Enable throttling policy"
 
                config KERNEL_BLK_DEV_THROTTLING
                        bool "Enable throttling policy"
-                       default y if TARGET_bcm27xx
+                       default y
 
                config KERNEL_BLK_DEV_THROTTLING_LOW
                        bool "Block throttling .low limit interface support (EXPERIMENTAL)"
 
                config KERNEL_BLK_DEV_THROTTLING_LOW
                        bool "Block throttling .low limit interface support (EXPERIMENTAL)"
@@ -646,19 +986,19 @@ if KERNEL_CGROUPS
 
        config KERNEL_DEBUG_BLK_CGROUP
                bool "Enable Block IO controller debugging"
 
        config KERNEL_DEBUG_BLK_CGROUP
                bool "Enable Block IO controller debugging"
-               default n
                depends on KERNEL_BLK_CGROUP
                help
                  Enable some debugging help. Currently it exports additional stat
                  files in a cgroup which can be useful for debugging.
 
        config KERNEL_NET_CLS_CGROUP
                depends on KERNEL_BLK_CGROUP
                help
                  Enable some debugging help. Currently it exports additional stat
                  files in a cgroup which can be useful for debugging.
 
        config KERNEL_NET_CLS_CGROUP
-               bool "Control Group Classifier"
-               default y
+               bool "legacy Control Group Classifier"
 
 
-       config KERNEL_NETPRIO_CGROUP
-               bool "Network priority cgroup"
-               default y
+       config KERNEL_CGROUP_NET_CLASSID
+               bool "legacy Network classid cgroup"
+
+       config KERNEL_CGROUP_NET_PRIO
+               bool "legacy Network priority cgroup"
 
 endif
 
 
 endif
 
@@ -758,6 +1098,19 @@ config KERNEL_IP_MROUTE
          Multicast routing requires a multicast routing daemon in
          addition to kernel support.
 
          Multicast routing requires a multicast routing daemon in
          addition to kernel support.
 
+if KERNEL_IP_MROUTE
+
+       config KERNEL_IP_MROUTE_MULTIPLE_TABLES
+               def_bool y
+
+       config KERNEL_IP_PIMSM_V1
+               def_bool y
+
+       config KERNEL_IP_PIMSM_V2
+               def_bool y
+
+endif
+
 #
 # IPv6 configuration
 #
 #
 # IPv6 configuration
 #
@@ -780,11 +1133,65 @@ if KERNEL_IPV6
                  Multicast routing requires a multicast routing daemon in
                  addition to kernel support.
 
                  Multicast routing requires a multicast routing daemon in
                  addition to kernel support.
 
-       config KERNEL_IPV6_PIMSM_V2
+       if KERNEL_IPV6_MROUTE
+
+               config KERNEL_IPV6_MROUTE_MULTIPLE_TABLES
+                       def_bool y
+
+               config KERNEL_IPV6_PIMSM_V2
+                       def_bool y
+
+       endif
+
+       config KERNEL_IPV6_SEG6_LWTUNNEL
+               bool "Enable support for lightweight tunnels"
+               default y if !SMALL_FLASH
+               help
+                 Using lwtunnel (needed for IPv6 segment routing) requires ip-full package.
+
+       config KERNEL_LWTUNNEL_BPF
                def_bool n
 
 endif
 
                def_bool n
 
 endif
 
+#
+# Miscellaneous network configuration
+#
+
+config KERNEL_NET_L3_MASTER_DEV
+       bool "L3 Master device support"
+       help
+         This module provides glue between core networking code and device
+         drivers to support L3 master devices like VRF.
+
+config KERNEL_XDP_SOCKETS
+       bool "XDP sockets support"
+       help
+         XDP sockets allows a channel between XDP programs and
+         userspace applications.
+
+config KERNEL_WIRELESS_EXT
+       def_bool n
+
+config KERNEL_WEXT_CORE
+       def_bool KERNEL_WIRELESS_EXT
+
+config KERNEL_WEXT_PRIV
+       def_bool KERNEL_WIRELESS_EXT
+
+config KERNEL_WEXT_PROC
+       def_bool KERNEL_WIRELESS_EXT
+
+config KERNEL_WEXT_SPY
+       def_bool KERNEL_WIRELESS_EXT
+
+config KERNEL_PAGE_POOL
+       def_bool n
+
+config KERNEL_PAGE_POOL_STATS
+       bool "Page pool stats support"
+       depends on KERNEL_PAGE_POOL
+
 #
 # NFS related symbols
 #
 #
 # NFS related symbols
 #
@@ -822,7 +1229,6 @@ endif
 menu "Filesystem ACL and attr support options"
        config USE_FS_ACL_ATTR
                bool "Use filesystem ACL and attr support by default"
 menu "Filesystem ACL and attr support options"
        config USE_FS_ACL_ATTR
                bool "Use filesystem ACL and attr support by default"
-               default n
                help
                  Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default
                  for kernel and packages, except tmpfs, flash filesystems,
                help
                  Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default
                  for kernel and packages, except tmpfs, flash filesystems,
@@ -847,17 +1253,14 @@ menu "Filesystem ACL and attr support options"
        config KERNEL_F2FS_FS_POSIX_ACL
                bool "Enable POSIX ACL for F2FS Filesystems"
                select KERNEL_FS_POSIX_ACL
        config KERNEL_F2FS_FS_POSIX_ACL
                bool "Enable POSIX ACL for F2FS Filesystems"
                select KERNEL_FS_POSIX_ACL
-               default n
 
        config KERNEL_JFFS2_FS_POSIX_ACL
                bool "Enable POSIX ACL for JFFS2 Filesystems"
                select KERNEL_FS_POSIX_ACL
 
        config KERNEL_JFFS2_FS_POSIX_ACL
                bool "Enable POSIX ACL for JFFS2 Filesystems"
                select KERNEL_FS_POSIX_ACL
-               default n
 
        config KERNEL_TMPFS_POSIX_ACL
                bool "Enable POSIX ACL for TMPFS Filesystems"
                select KERNEL_FS_POSIX_ACL
 
        config KERNEL_TMPFS_POSIX_ACL
                bool "Enable POSIX ACL for TMPFS Filesystems"
                select KERNEL_FS_POSIX_ACL
-               default n
 
        config KERNEL_CIFS_ACL
                bool "Enable CIFS ACLs"
 
        config KERNEL_CIFS_ACL
                bool "Enable CIFS ACLs"
@@ -880,15 +1283,12 @@ menu "Filesystem ACL and attr support options"
 
        config KERNEL_NFS_V3_ACL_SUPPORT
                bool "Enable ACLs for NFSv3"
 
        config KERNEL_NFS_V3_ACL_SUPPORT
                bool "Enable ACLs for NFSv3"
-               default n
 
        config KERNEL_NFSD_V2_ACL_SUPPORT
                bool "Enable ACLs for NFSDv2"
 
        config KERNEL_NFSD_V2_ACL_SUPPORT
                bool "Enable ACLs for NFSDv2"
-               default n
 
        config KERNEL_NFSD_V3_ACL_SUPPORT
                bool "Enable ACLs for NFSDv3"
 
        config KERNEL_NFSD_V3_ACL_SUPPORT
                bool "Enable ACLs for NFSDv3"
-               default n
 
        config KERNEL_REISER_FS_POSIX_ACL
                bool "Enable POSIX ACLs for ReiserFS"
 
        config KERNEL_REISER_FS_POSIX_ACL
                bool "Enable POSIX ACLs for ReiserFS"
@@ -926,8 +1326,11 @@ config KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE
        default 2 if (SMALL_FLASH && !LOW_MEMORY_FOOTPRINT)
        default 3
 
        default 2 if (SMALL_FLASH && !LOW_MEMORY_FOOTPRINT)
        default 3
 
+config KERNEL_SQUASHFS_XATTR
+       bool "Squashfs XATTR support"
+
 #
 #
-# compile optimiziation setting
+# compile optimization setting
 #
 choice
        prompt "Compiler optimization level"
 #
 choice
        prompt "Compiler optimization level"
@@ -947,3 +1350,75 @@ config KERNEL_CC_OPTIMIZE_FOR_SIZE
          your compiler resulting in a smaller kernel.
 
 endchoice
          your compiler resulting in a smaller kernel.
 
 endchoice
+
+config KERNEL_AUDIT
+       bool "Auditing support"
+
+config KERNEL_SECURITY
+       bool "Enable different security models"
+
+config KERNEL_SECURITY_NETWORK
+       bool "Socket and Networking Security Hooks"
+       select KERNEL_SECURITY
+
+config KERNEL_SECURITY_SELINUX
+       bool "NSA SELinux Support"
+       select KERNEL_SECURITY_NETWORK
+       select KERNEL_AUDIT
+
+config KERNEL_SECURITY_SELINUX_BOOTPARAM
+       bool "NSA SELinux boot parameter"
+       depends on KERNEL_SECURITY_SELINUX
+       default y
+
+config KERNEL_SECURITY_SELINUX_DISABLE
+       bool "NSA SELinux runtime disable"
+       depends on KERNEL_SECURITY_SELINUX
+
+config KERNEL_SECURITY_SELINUX_DEVELOP
+       bool "NSA SELinux Development Support"
+       depends on KERNEL_SECURITY_SELINUX
+       default y
+
+config KERNEL_SECURITY_SELINUX_SIDTAB_HASH_BITS
+       int
+       depends on KERNEL_SECURITY_SELINUX
+       default 9
+
+config KERNEL_SECURITY_SELINUX_SID2STR_CACHE_SIZE
+       int
+       depends on KERNEL_SECURITY_SELINUX
+       default 256
+
+config KERNEL_LSM
+       string
+       default "lockdown,yama,loadpin,safesetid,integrity,selinux"
+       depends on KERNEL_SECURITY_SELINUX
+
+config KERNEL_EXT4_FS_SECURITY
+       bool "Ext4 Security Labels"
+
+config KERNEL_F2FS_FS_SECURITY
+       bool "F2FS Security Labels"
+
+config KERNEL_UBIFS_FS_SECURITY
+       bool "UBIFS Security Labels"
+
+config KERNEL_JFFS2_FS_SECURITY
+       bool "JFFS2 Security Labels"
+
+config KERNEL_WERROR
+       bool "Compile the kernel with warnings as errors"
+       default BUILDBOT
+       default y if GCC_USE_VERSION_12
+       help
+         A kernel build should not cause any compiler warnings, and this
+         enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags
+         to enforce that rule by default. Certain warnings from other tools
+         such as the linker may be upgraded to errors with this option as
+         well.
+
+         However, if you have a new (or very old) compiler or linker with odd
+         and unusual warnings, or you have some architecture with problems,
+         you may need to disable this config option in order to
+         successfully build the kernel.