tools/llvm-bpf: filter out STAGING_DIR_HOST/include from cflags on non-linux systems
[openwrt/openwrt.git] / config / Config-kernel.in
index ad23b21479612797324e152ee5a72c2be2cfee42..4bd2cde135fbcad8ba618d9547657f70ee1a0c5e 100644 (file)
@@ -47,8 +47,23 @@ config KERNEL_MIPS_FP_SUPPORT
 
 config KERNEL_ARM_PMU
        bool
 
 config KERNEL_ARM_PMU
        bool
+       default y if TARGET_armsr_armv8
        depends on (arm || aarch64)
 
        depends on (arm || aarch64)
 
+config KERNEL_ARM_PMUV3
+       bool
+       default y if TARGET_armsr_armv8
+       depends on (arm_v7 || aarch64) && LINUX_6_6
+
+config KERNEL_RISCV_PMU
+       bool
+       select KERNEL_RISCV_PMU_SBI
+       depends on riscv64
+
+config KERNEL_RISCV_PMU_SBI
+       bool
+       depends on riscv64
+
 config KERNEL_X86_VSYSCALL_EMULATION
        bool "Enable vsyscall emulation"
        depends on x86_64
 config KERNEL_X86_VSYSCALL_EMULATION
        bool "Enable vsyscall emulation"
        depends on x86_64
@@ -69,6 +84,8 @@ config KERNEL_X86_VSYSCALL_EMULATION
 config KERNEL_PERF_EVENTS
        bool "Compile the kernel with performance events and counters"
        select KERNEL_ARM_PMU if (arm || aarch64)
 config KERNEL_PERF_EVENTS
        bool "Compile the kernel with performance events and counters"
        select KERNEL_ARM_PMU if (arm || aarch64)
+       select KERNEL_ARM_PMUV3 if (arm_v7 || aarch64) && LINUX_6_6
+       select KERNEL_RISCV_PMU if riscv64
 
 config KERNEL_PROFILING
        bool "Compile the kernel with profiling enabled"
 
 config KERNEL_PROFILING
        bool "Compile the kernel with profiling enabled"
@@ -143,7 +160,7 @@ config KERNEL_UBSAN_TRAP
 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
-       depends on (x86_64 || aarch64)
+       depends on (x86_64 || aarch64 || arm || powerpc || riscv64)
        help
          Enables kernel address sanitizer - runtime memory debugger,
          designed to find out-of-bounds accesses and use-after-free bugs.
        help
          Enables kernel address sanitizer - runtime memory debugger,
          designed to find out-of-bounds accesses and use-after-free bugs.
@@ -156,16 +173,6 @@ config KERNEL_KASAN
          Currently CONFIG_KASAN doesn't work with CONFIG_DEBUG_SLAB
          (the resulting kernel does not boot).
 
          Currently CONFIG_KASAN doesn't work with CONFIG_DEBUG_SLAB
          (the resulting kernel does not boot).
 
-config KERNEL_KASAN_EXTRA
-       bool "KAsan: extra checks"
-       depends on KERNEL_KASAN && KERNEL_DEBUG_KERNEL
-       help
-         This enables further checks in the kernel address sanitizer, for now
-         it only includes the address-use-after-scope check that can lead
-         to excessive kernel stack usage, frame size warnings and longer
-         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
 config KERNEL_KASAN_VMALLOC
        bool "Back mappings in vmalloc space with real shadow memory"
        depends on KERNEL_KASAN
@@ -184,16 +191,73 @@ config KERNEL_KASAN_VMALLOC
          will have no effect.
 
 if KERNEL_KASAN
          will have no effect.
 
 if KERNEL_KASAN
-       config KERNEL_KASAN_GENERIC
-       def_bool y
+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
 
 
-       config KERNEL_KASAN_SW_TAGS
-       def_bool n
 endif
 
 choice
        prompt "Instrumentation type"
        depends on KERNEL_KASAN
 endif
 
 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
@@ -361,7 +425,6 @@ config KERNEL_DEBUG_INFO
          This will compile your kernel and modules with debug information.
 
 config KERNEL_DEBUG_INFO_BTF
          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
        bool "Enable additional BTF type information"
        depends on !HOST_OS_MACOS
        depends on KERNEL_DEBUG_INFO && !KERNEL_DEBUG_INFO_REDUCED
@@ -373,6 +436,20 @@ config KERNEL_DEBUG_INFO_BTF
 
          Required to run BPF CO-RE applications.
 
 
          Required to run BPF CO-RE applications.
 
+config KERNEL_DEBUG_INFO_BTF_MODULES
+       def_bool y
+       depends on KERNEL_DEBUG_INFO_BTF
+
+config KERNEL_MODULE_ALLOW_BTF_MISMATCH
+       bool "Allow loading modules with non-matching BTF type info"
+       depends on KERNEL_DEBUG_INFO_BTF_MODULES
+       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
 config KERNEL_DEBUG_INFO_REDUCED
        bool "Reduce debugging information"
        default y
@@ -387,6 +464,17 @@ config KERNEL_DEBUG_INFO_REDUCED
          DEBUG_INFO build and compile times are reduced too.
          Only works with newer gcc versions.
 
          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_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
@@ -458,6 +546,10 @@ config KERNEL_BPF_EVENTS
          for sending data from BPF programs to user-space for post-processing
          or logging.
 
          for sending data from BPF programs to user-space for post-processing
          or logging.
 
+config KERNEL_PROBE_EVENTS_BTF_ARGS
+       bool "Support BTF function arguments for probe events"
+       depends on KERNEL_DEBUG_INFO_BTF && KERNEL_KPROBE_EVENTS && LINUX_6_6
+
 config KERNEL_BPF_KPROBE_OVERRIDE
        bool
        depends on KERNEL_KPROBES
 config KERNEL_BPF_KPROBE_OVERRIDE
        bool
        depends on KERNEL_KPROBES
@@ -469,7 +561,8 @@ config KERNEL_AIO
 
 config KERNEL_IO_URING
        bool "Compile the kernel with io_uring support"
 
 config KERNEL_IO_URING
        bool "Compile the kernel with io_uring support"
-       default y if !SMALL_FLASH
+       depends on !SMALL_FLASH
+       default y if (x86_64 || aarch64)
 
 config KERNEL_FHANDLE
        bool "Compile the kernel with support for fhandle syscalls"
 
 config KERNEL_FHANDLE
        bool "Compile the kernel with support for fhandle syscalls"
@@ -541,6 +634,18 @@ config KERNEL_SOFTLOCKUP_DETECTOR
          chance to run.  The current stack trace is displayed upon
          detection and the system will stay locked up.
 
          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
 config KERNEL_DETECT_HUNG_TASK
        bool "Compile the kernel with detect Hung Tasks"
        depends on KERNEL_DEBUG_KERNEL
@@ -590,10 +695,23 @@ config KERNEL_PRINTK_TIME
        default y
 
 config KERNEL_SLUB_DEBUG
        default y
 
 config KERNEL_SLUB_DEBUG
-       bool
+       bool "Enable SLUB debugging support"
+       help
+         This enables various debugging features:
+           - Accepts "slub_debug" kernel parameter
+           - Provides caches debugging options (e.g. tracing, validating)
+           - Adds /sys/kernel/slab/ attrs for reading amounts of *objects*
+           - Enables /proc/slabinfo support
+           - Prints info when running out of memory
+
+         Enabling this can result in a significant increase of code size.
 
 config KERNEL_SLUB_DEBUG_ON
 
 config KERNEL_SLUB_DEBUG_ON
-       bool
+       depends on KERNEL_SLUB_DEBUG
+       bool "Boot kernel with basic caches debugging enabled"
+       help
+         This enables by default sanity_checks, red_zone, poison and store_user
+         debugging options for all caches.
 
 config KERNEL_SLABINFO
        select KERNEL_SLUB_DEBUG
 
 config KERNEL_SLABINFO
        select KERNEL_SLUB_DEBUG
@@ -1073,20 +1191,11 @@ config KERNEL_NET_L3_MASTER_DEV
          This module provides glue between core networking code and device
          drivers to support L3 master devices like VRF.
 
          This module provides glue between core networking code and device
          drivers to support L3 master devices like VRF.
 
-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_XDP_SOCKETS
+       bool "XDP sockets support"
+       help
+         XDP sockets allows a channel between XDP programs and
+         userspace applications.
 
 config KERNEL_PAGE_POOL
        def_bool n
 
 config KERNEL_PAGE_POOL
        def_bool n
@@ -1094,7 +1203,6 @@ config KERNEL_PAGE_POOL
 config KERNEL_PAGE_POOL_STATS
        bool "Page pool stats support"
        depends on KERNEL_PAGE_POOL
 config KERNEL_PAGE_POOL_STATS
        bool "Page pool stats support"
        depends on KERNEL_PAGE_POOL
-       depends on !LINUX_5_10
 
 #
 # NFS related symbols
 
 #
 # NFS related symbols
@@ -1130,13 +1238,20 @@ if KERNEL_IP_PNP
 
 endif
 
 
 endif
 
+config KERNEL_BTRFS_FS
+       bool "Compile the kernel with built-in BTRFS support"
+       help
+         Say Y here if you want to make the kernel to be able to boot off a
+         BTRFS partition.
+
 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 y if !SMALL_FLASH
                help
                  Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default
                help
                  Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default
-                 for kernel and packages, except tmpfs, flash filesystems,
-                 and old NFS.  Also enable userspace extended attribute support
+                 for kernel and packages, except old NFS.
+                 Also enable userspace extended attribute support
                  by default.  (OpenWrt already has an expection it will be
                  present in the kernel).
 
                  by default.  (OpenWrt already has an expection it will be
                  present in the kernel).
 
@@ -1157,14 +1272,17 @@ 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 y if USE_FS_ACL_ATTR
 
        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 y if USE_FS_ACL_ATTR
 
        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 y if USE_FS_ACL_ATTR
 
        config KERNEL_CIFS_ACL
                bool "Enable CIFS ACLs"
 
        config KERNEL_CIFS_ACL
                bool "Enable CIFS ACLs"
@@ -1301,12 +1419,30 @@ config KERNEL_LSM
 
 config KERNEL_EXT4_FS_SECURITY
        bool "Ext4 Security Labels"
 
 config KERNEL_EXT4_FS_SECURITY
        bool "Ext4 Security Labels"
+       default y if !SMALL_FLASH
 
 config KERNEL_F2FS_FS_SECURITY
        bool "F2FS Security Labels"
 
 config KERNEL_F2FS_FS_SECURITY
        bool "F2FS Security Labels"
+       default y if !SMALL_FLASH
 
 config KERNEL_UBIFS_FS_SECURITY
        bool "UBIFS Security Labels"
 
 config KERNEL_UBIFS_FS_SECURITY
        bool "UBIFS Security Labels"
+       default y if !SMALL_FLASH
 
 config KERNEL_JFFS2_FS_SECURITY
        bool "JFFS2 Security Labels"
 
 config KERNEL_JFFS2_FS_SECURITY
        bool "JFFS2 Security Labels"
+       default y if !SMALL_FLASH
+
+config KERNEL_WERROR
+       bool "Compile the kernel with warnings as errors"
+       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.