1# SPDX-License-Identifier: GPL-2.0-only 2config CC_VERSION_TEXT 3 string 4 default "$(CC_VERSION_TEXT)" 5 help 6 This is used in unclear ways: 7 8 - Re-run Kconfig when the compiler is updated 9 The 'default' property references the environment variable, 10 CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd. 11 When the compiler is updated, Kconfig will be invoked. 12 13 - Ensure full rebuild when the compiler is updated 14 include/linux/compiler-version.h contains this option in the comment 15 line so fixdep adds include/config/CC_VERSION_TEXT into the 16 auto-generated dependency. When the compiler is updated, syncconfig 17 will touch it and then every file will be rebuilt. 18 19config CC_IS_GCC 20 def_bool $(success,test "$(cc-name)" = GCC) 21 22config GCC_VERSION 23 int 24 default $(cc-version) if CC_IS_GCC 25 default 0 26 27config CC_IS_CLANG 28 def_bool $(success,test "$(cc-name)" = Clang) 29 30config CLANG_VERSION 31 int 32 default $(cc-version) if CC_IS_CLANG 33 default 0 34 35config AS_IS_GNU 36 def_bool $(success,test "$(as-name)" = GNU) 37 38config AS_IS_LLVM 39 def_bool $(success,test "$(as-name)" = LLVM) 40 41config AS_VERSION 42 int 43 # Use clang version if this is the integrated assembler 44 default CLANG_VERSION if AS_IS_LLVM 45 default $(as-version) 46 47config LD_IS_BFD 48 def_bool $(success,test "$(ld-name)" = BFD) 49 50config LD_VERSION 51 int 52 default $(ld-version) if LD_IS_BFD 53 default 0 54 55config LD_IS_LLD 56 def_bool $(success,test "$(ld-name)" = LLD) 57 58config LLD_VERSION 59 int 60 default $(ld-version) if LD_IS_LLD 61 default 0 62 63config RUSTC_VERSION 64 int 65 default $(rustc-version) 66 help 67 It does not depend on `RUST` since that one may need to use the version 68 in a `depends on`. 69 70config RUST_IS_AVAILABLE 71 def_bool $(success,$(srctree)/scripts/rust_is_available.sh) 72 help 73 This shows whether a suitable Rust toolchain is available (found). 74 75 Please see Documentation/rust/quick-start.rst for instructions on how 76 to satisfy the build requirements of Rust support. 77 78 In particular, the Makefile target 'rustavailable' is useful to check 79 why the Rust toolchain is not being detected. 80 81config RUSTC_LLVM_VERSION 82 int 83 default $(rustc-llvm-version) 84 85config CC_CAN_LINK 86 bool 87 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag)) if 64BIT 88 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag)) 89 90# Fixed in GCC 14, 13.3, 12.4 and 11.5 91# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113921 92config GCC_ASM_GOTO_OUTPUT_BROKEN 93 bool 94 depends on CC_IS_GCC 95 default y if GCC_VERSION < 110500 96 default y if GCC_VERSION >= 120000 && GCC_VERSION < 120400 97 default y if GCC_VERSION >= 130000 && GCC_VERSION < 130300 98 99config CC_HAS_ASM_GOTO_OUTPUT 100 def_bool y 101 depends on !GCC_ASM_GOTO_OUTPUT_BROKEN 102 depends on $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null) 103 104config CC_HAS_ASM_GOTO_TIED_OUTPUT 105 depends on CC_HAS_ASM_GOTO_OUTPUT 106 # Detect buggy gcc and clang, fixed in gcc-11 clang-14. 107 def_bool $(success,echo 'int foo(int *x) { asm goto (".long (%l[bar]) - .": "+m"(*x) ::: bar); return *x; bar: return 0; }' | $CC -x c - -c -o /dev/null) 108 109config TOOLS_SUPPORT_RELR 110 def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) 111 112config CC_HAS_ASM_INLINE 113 def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 114 115config CC_HAS_NO_PROFILE_FN_ATTR 116 def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror) 117 118config CC_HAS_COUNTED_BY 119 bool 120 # clang needs to be at least 19.1.3 to avoid __bdos miscalculations 121 # https://github.com/llvm/llvm-project/pull/110497 122 # https://github.com/llvm/llvm-project/pull/112636 123 default y if CC_IS_CLANG && CLANG_VERSION >= 190103 124 # supported since gcc 15.1.0 125 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896 126 default y if CC_IS_GCC && GCC_VERSION >= 150100 127 128config CC_HAS_MULTIDIMENSIONAL_NONSTRING 129 def_bool $(success,echo 'char tag[][4] __attribute__((__nonstring__)) = { };' | $(CC) $(CLANG_FLAGS) -x c - -c -o /dev/null -Werror) 130 131config LD_CAN_USE_KEEP_IN_OVERLAY 132 # ld.lld prior to 21.0.0 did not support KEEP within an overlay description 133 # https://github.com/llvm/llvm-project/pull/130661 134 def_bool LD_IS_BFD || LLD_VERSION >= 210000 135 136config RUSTC_HAS_COERCE_POINTEE 137 def_bool RUSTC_VERSION >= 108400 138 139config RUSTC_HAS_SPAN_FILE 140 def_bool RUSTC_VERSION >= 108800 141 142config RUSTC_HAS_UNNECESSARY_TRANSMUTES 143 def_bool RUSTC_VERSION >= 108800 144 145config PAHOLE_VERSION 146 int 147 default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE)) 148 149config CONSTRUCTORS 150 bool 151 152config IRQ_WORK 153 def_bool y if SMP 154 155config BUILDTIME_TABLE_SORT 156 bool 157 158config THREAD_INFO_IN_TASK 159 bool 160 help 161 Select this to move thread_info off the stack into task_struct. To 162 make this work, an arch will need to remove all thread_info fields 163 except flags and fix any runtime bugs. 164 165 One subtle change that will be needed is to use try_get_task_stack() 166 and put_task_stack() in save_thread_stack_tsk() and get_wchan(). 167 168menu "General setup" 169 170config BROKEN 171 bool 172 173config BROKEN_ON_SMP 174 bool 175 depends on BROKEN || !SMP 176 default y 177 178config INIT_ENV_ARG_LIMIT 179 int 180 default 32 if !UML 181 default 128 if UML 182 help 183 Maximum of each of the number of arguments and environment 184 variables passed to init from the kernel command line. 185 186config COMPILE_TEST 187 bool "Compile also drivers which will not load" 188 depends on HAS_IOMEM 189 help 190 Some drivers can be compiled on a different platform than they are 191 intended to be run on. Despite they cannot be loaded there (or even 192 when they load they cannot be used due to missing HW support), 193 developers still, opposing to distributors, might want to build such 194 drivers to compile-test them. 195 196 If you are a developer and want to build everything available, say Y 197 here. If you are a user/distributor, say N here to exclude useless 198 drivers to be distributed. 199 200config WERROR 201 bool "Compile the kernel with warnings as errors" 202 default COMPILE_TEST 203 help 204 A kernel build should not cause any compiler warnings, and this 205 enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags 206 to enforce that rule by default. Certain warnings from other tools 207 such as the linker may be upgraded to errors with this option as 208 well. 209 210 However, if you have a new (or very old) compiler or linker with odd 211 and unusual warnings, or you have some architecture with problems, 212 you may need to disable this config option in order to 213 successfully build the kernel. 214 215 If in doubt, say Y. 216 217config UAPI_HEADER_TEST 218 bool "Compile test UAPI headers" 219 depends on HEADERS_INSTALL && CC_CAN_LINK 220 help 221 Compile test headers exported to user-space to ensure they are 222 self-contained, i.e. compilable as standalone units. 223 224 If you are a developer or tester and want to ensure the exported 225 headers are self-contained, say Y here. Otherwise, choose N. 226 227config LOCALVERSION 228 string "Local version - append to kernel release" 229 help 230 Append an extra string to the end of your kernel version. 231 This will show up when you type uname, for example. 232 The string you set here will be appended after the contents of 233 any files with a filename matching localversion* in your 234 object and source tree, in that order. Your total string can 235 be a maximum of 64 characters. 236 237config LOCALVERSION_AUTO 238 bool "Automatically append version information to the version string" 239 default y 240 depends on !COMPILE_TEST 241 help 242 This will try to automatically determine if the current tree is a 243 release tree by looking for git tags that belong to the current 244 top of tree revision. 245 246 A string of the format -gxxxxxxxx will be added to the localversion 247 if a git-based tree is found. The string generated by this will be 248 appended after any matching localversion* files, and after the value 249 set in CONFIG_LOCALVERSION. 250 251 (The actual string used here is the first 12 characters produced 252 by running the command: 253 254 $ git rev-parse --verify HEAD 255 256 which is done within the script "scripts/setlocalversion".) 257 258config BUILD_SALT 259 string "Build ID Salt" 260 default "" 261 help 262 The build ID is used to link binaries and their debug info. Setting 263 this option will use the value in the calculation of the build id. 264 This is mostly useful for distributions which want to ensure the 265 build is unique between builds. It's safe to leave the default. 266 267config HAVE_KERNEL_GZIP 268 bool 269 270config HAVE_KERNEL_BZIP2 271 bool 272 273config HAVE_KERNEL_LZMA 274 bool 275 276config HAVE_KERNEL_XZ 277 bool 278 279config HAVE_KERNEL_LZO 280 bool 281 282config HAVE_KERNEL_LZ4 283 bool 284 285config HAVE_KERNEL_ZSTD 286 bool 287 288config HAVE_KERNEL_UNCOMPRESSED 289 bool 290 291choice 292 prompt "Kernel compression mode" 293 default KERNEL_GZIP 294 depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_ZSTD || HAVE_KERNEL_UNCOMPRESSED 295 help 296 The linux kernel is a kind of self-extracting executable. 297 Several compression algorithms are available, which differ 298 in efficiency, compression and decompression speed. 299 Compression speed is only relevant when building a kernel. 300 Decompression speed is relevant at each boot. 301 302 If you have any problems with bzip2 or lzma compressed 303 kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 304 version of this functionality (bzip2 only), for 2.4, was 305 supplied by Christian Ludwig) 306 307 High compression options are mostly useful for users, who 308 are low on disk space (embedded systems), but for whom ram 309 size matters less. 310 311 If in doubt, select 'gzip' 312 313config KERNEL_GZIP 314 bool "Gzip" 315 depends on HAVE_KERNEL_GZIP 316 help 317 The old and tried gzip compression. It provides a good balance 318 between compression ratio and decompression speed. 319 320config KERNEL_BZIP2 321 bool "Bzip2" 322 depends on HAVE_KERNEL_BZIP2 323 help 324 Its compression ratio and speed is intermediate. 325 Decompression speed is slowest among the choices. The kernel 326 size is about 10% smaller with bzip2, in comparison to gzip. 327 Bzip2 uses a large amount of memory. For modern kernels you 328 will need at least 8MB RAM or more for booting. 329 330config KERNEL_LZMA 331 bool "LZMA" 332 depends on HAVE_KERNEL_LZMA 333 help 334 This compression algorithm's ratio is best. Decompression speed 335 is between gzip and bzip2. Compression is slowest. 336 The kernel size is about 33% smaller with LZMA in comparison to gzip. 337 338config KERNEL_XZ 339 bool "XZ" 340 depends on HAVE_KERNEL_XZ 341 help 342 XZ uses the LZMA2 algorithm and instruction set specific 343 BCJ filters which can improve compression ratio of executable 344 code. The size of the kernel is about 30% smaller with XZ in 345 comparison to gzip. On architectures for which there is a BCJ 346 filter (i386, x86_64, ARM, ARM64, RISC-V, big endian PowerPC, 347 and SPARC), XZ will create a few percent smaller kernel than 348 plain LZMA. 349 350 The speed is about the same as with LZMA: The decompression 351 speed of XZ is better than that of bzip2 but worse than gzip 352 and LZO. Compression is slow. 353 354config KERNEL_LZO 355 bool "LZO" 356 depends on HAVE_KERNEL_LZO 357 help 358 Its compression ratio is the poorest among the choices. The kernel 359 size is about 10% bigger than gzip; however its speed 360 (both compression and decompression) is the fastest. 361 362config KERNEL_LZ4 363 bool "LZ4" 364 depends on HAVE_KERNEL_LZ4 365 help 366 LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. 367 A preliminary version of LZ4 de/compression tool is available at 368 <https://code.google.com/p/lz4/>. 369 370 Its compression ratio is worse than LZO. The size of the kernel 371 is about 8% bigger than LZO. But the decompression speed is 372 faster than LZO. 373 374config KERNEL_ZSTD 375 bool "ZSTD" 376 depends on HAVE_KERNEL_ZSTD 377 help 378 ZSTD is a compression algorithm targeting intermediate compression 379 with fast decompression speed. It will compress better than GZIP and 380 decompress around the same speed as LZO, but slower than LZ4. You 381 will need at least 192 KB RAM or more for booting. The zstd command 382 line tool is required for compression. 383 384config KERNEL_UNCOMPRESSED 385 bool "None" 386 depends on HAVE_KERNEL_UNCOMPRESSED 387 help 388 Produce uncompressed kernel image. This option is usually not what 389 you want. It is useful for debugging the kernel in slow simulation 390 environments, where decompressing and moving the kernel is awfully 391 slow. This option allows early boot code to skip the decompressor 392 and jump right at uncompressed kernel image. 393 394endchoice 395 396config DEFAULT_INIT 397 string "Default init path" 398 default "" 399 help 400 This option determines the default init for the system if no init= 401 option is passed on the kernel command line. If the requested path is 402 not present, we will still then move on to attempting further 403 locations (e.g. /sbin/init, etc). If this is empty, we will just use 404 the fallback list when init= is not passed. 405 406config DEFAULT_HOSTNAME 407 string "Default hostname" 408 default "(none)" 409 help 410 This option determines the default system hostname before userspace 411 calls sethostname(2). The kernel traditionally uses "(none)" here, 412 but you may wish to use a different default here to make a minimal 413 system more usable with less configuration. 414 415config SYSVIPC 416 bool "System V IPC" 417 help 418 Inter Process Communication is a suite of library functions and 419 system calls which let processes (running programs) synchronize and 420 exchange information. It is generally considered to be a good thing, 421 and some programs won't run unless you say Y here. In particular, if 422 you want to run the DOS emulator dosemu under Linux (read the 423 DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 424 you'll need to say Y here. 425 426 You can find documentation about IPC with "info ipc" and also in 427 section 6.4 of the Linux Programmer's Guide, available from 428 <http://www.tldp.org/guides.html>. 429 430config SYSVIPC_SYSCTL 431 bool 432 depends on SYSVIPC 433 depends on SYSCTL 434 default y 435 436config SYSVIPC_COMPAT 437 def_bool y 438 depends on COMPAT && SYSVIPC 439 440config POSIX_MQUEUE 441 bool "POSIX Message Queues" 442 depends on NET 443 help 444 POSIX variant of message queues is a part of IPC. In POSIX message 445 queues every message has a priority which decides about succession 446 of receiving it by a process. If you want to compile and run 447 programs written e.g. for Solaris with use of its POSIX message 448 queues (functions mq_*) say Y here. 449 450 POSIX message queues are visible as a filesystem called 'mqueue' 451 and can be mounted somewhere if you want to do filesystem 452 operations on message queues. 453 454 If unsure, say Y. 455 456config POSIX_MQUEUE_SYSCTL 457 bool 458 depends on POSIX_MQUEUE 459 depends on SYSCTL 460 default y 461 462config WATCH_QUEUE 463 bool "General notification queue" 464 default n 465 help 466 467 This is a general notification queue for the kernel to pass events to 468 userspace by splicing them into pipes. It can be used in conjunction 469 with watches for key/keyring change notifications and device 470 notifications. 471 472 See Documentation/core-api/watch_queue.rst 473 474config CROSS_MEMORY_ATTACH 475 bool "Enable process_vm_readv/writev syscalls" 476 depends on MMU 477 default y 478 help 479 Enabling this option adds the system calls process_vm_readv and 480 process_vm_writev which allow a process with the correct privileges 481 to directly read from or write to another process' address space. 482 See the man page for more details. 483 484config AUDIT 485 bool "Auditing support" 486 depends on NET 487 help 488 Enable auditing infrastructure that can be used with another 489 kernel subsystem, such as SELinux (which requires this for 490 logging of avc messages output). System call auditing is included 491 on architectures which support it. 492 493config HAVE_ARCH_AUDITSYSCALL 494 bool 495 496config AUDITSYSCALL 497 def_bool y 498 depends on AUDIT && HAVE_ARCH_AUDITSYSCALL 499 select FSNOTIFY 500 501source "kernel/irq/Kconfig" 502source "kernel/time/Kconfig" 503source "kernel/bpf/Kconfig" 504source "kernel/Kconfig.preempt" 505 506menu "CPU/Task time and stats accounting" 507 508config VIRT_CPU_ACCOUNTING 509 bool 510 511choice 512 prompt "Cputime accounting" 513 default TICK_CPU_ACCOUNTING 514 515# Kind of a stub config for the pure tick based cputime accounting 516config TICK_CPU_ACCOUNTING 517 bool "Simple tick based cputime accounting" 518 depends on !S390 && !NO_HZ_FULL 519 help 520 This is the basic tick based cputime accounting that maintains 521 statistics about user, system and idle time spent on per jiffies 522 granularity. 523 524 If unsure, say Y. 525 526config VIRT_CPU_ACCOUNTING_NATIVE 527 bool "Deterministic task and CPU time accounting" 528 depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL 529 select VIRT_CPU_ACCOUNTING 530 help 531 Select this option to enable more accurate task and CPU time 532 accounting. This is done by reading a CPU counter on each 533 kernel entry and exit and on transitions within the kernel 534 between system, softirq and hardirq state, so there is a 535 small performance impact. In the case of s390 or IBM POWER > 5, 536 this also enables accounting of stolen time on logically-partitioned 537 systems. 538 539config VIRT_CPU_ACCOUNTING_GEN 540 bool "Full dynticks CPU time accounting" 541 depends on HAVE_CONTEXT_TRACKING_USER 542 depends on HAVE_VIRT_CPU_ACCOUNTING_GEN 543 depends on GENERIC_CLOCKEVENTS 544 select VIRT_CPU_ACCOUNTING 545 select CONTEXT_TRACKING_USER 546 help 547 Select this option to enable task and CPU time accounting on full 548 dynticks systems. This accounting is implemented by watching every 549 kernel-user boundaries using the context tracking subsystem. 550 The accounting is thus performed at the expense of some significant 551 overhead. 552 553 For now this is only useful if you are working on the full 554 dynticks subsystem development. 555 556 If unsure, say N. 557 558endchoice 559 560config IRQ_TIME_ACCOUNTING 561 bool "Fine granularity task level IRQ time accounting" 562 depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE 563 help 564 Select this option to enable fine granularity task irq time 565 accounting. This is done by reading a timestamp on each 566 transitions between softirq and hardirq state, so there can be a 567 small performance impact. 568 569 If in doubt, say N here. 570 571config HAVE_SCHED_AVG_IRQ 572 def_bool y 573 depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING 574 depends on SMP 575 576config SCHED_HW_PRESSURE 577 bool 578 default y if ARM && ARM_CPU_TOPOLOGY 579 default y if ARM64 580 depends on SMP 581 depends on CPU_FREQ_THERMAL 582 help 583 Select this option to enable HW pressure accounting in the 584 scheduler. HW pressure is the value conveyed to the scheduler 585 that reflects the reduction in CPU compute capacity resulted from 586 HW throttling. HW throttling occurs when the performance of 587 a CPU is capped due to high operating temperatures as an example. 588 589 If selected, the scheduler will be able to balance tasks accordingly, 590 i.e. put less load on throttled CPUs than on non/less throttled ones. 591 592 This requires the architecture to implement 593 arch_update_hw_pressure() and arch_scale_thermal_pressure(). 594 595config BSD_PROCESS_ACCT 596 bool "BSD Process Accounting" 597 depends on MULTIUSER 598 help 599 If you say Y here, a user level program will be able to instruct the 600 kernel (via a special system call) to write process accounting 601 information to a file: whenever a process exits, information about 602 that process will be appended to the file by the kernel. The 603 information includes things such as creation time, owning user, 604 command name, memory usage, controlling terminal etc. (the complete 605 list is in the struct acct in <file:include/linux/acct.h>). It is 606 up to the user level program to do useful things with this 607 information. This is generally a good idea, so say Y. 608 609config BSD_PROCESS_ACCT_V3 610 bool "BSD Process Accounting version 3 file format" 611 depends on BSD_PROCESS_ACCT 612 default n 613 help 614 If you say Y here, the process accounting information is written 615 in a new file format that also logs the process IDs of each 616 process and its parent. Note that this file format is incompatible 617 with previous v0/v1/v2 file formats, so you will need updated tools 618 for processing it. A preliminary version of these tools is available 619 at <http://www.gnu.org/software/acct/>. 620 621config TASKSTATS 622 bool "Export task/process statistics through netlink" 623 depends on NET 624 depends on MULTIUSER 625 default n 626 help 627 Export selected statistics for tasks/processes through the 628 generic netlink interface. Unlike BSD process accounting, the 629 statistics are available during the lifetime of tasks/processes as 630 responses to commands. Like BSD accounting, they are sent to user 631 space on task exit. 632 633 Say N if unsure. 634 635config TASK_DELAY_ACCT 636 bool "Enable per-task delay accounting" 637 depends on TASKSTATS 638 select SCHED_INFO 639 help 640 Collect information on time spent by a task waiting for system 641 resources like cpu, synchronous block I/O completion and swapping 642 in pages. Such statistics can help in setting a task's priorities 643 relative to other tasks for cpu, io, rss limits etc. 644 645 Say N if unsure. 646 647config TASK_XACCT 648 bool "Enable extended accounting over taskstats" 649 depends on TASKSTATS 650 help 651 Collect extended task accounting data and send the data 652 to userland for processing over the taskstats interface. 653 654 Say N if unsure. 655 656config TASK_IO_ACCOUNTING 657 bool "Enable per-task storage I/O accounting" 658 depends on TASK_XACCT 659 help 660 Collect information on the number of bytes of storage I/O which this 661 task has caused. 662 663 Say N if unsure. 664 665config PSI 666 bool "Pressure stall information tracking" 667 select KERNFS 668 help 669 Collect metrics that indicate how overcommitted the CPU, memory, 670 and IO capacity are in the system. 671 672 If you say Y here, the kernel will create /proc/pressure/ with the 673 pressure statistics files cpu, memory, and io. These will indicate 674 the share of walltime in which some or all tasks in the system are 675 delayed due to contention of the respective resource. 676 677 In kernels with cgroup support, cgroups (cgroup2 only) will 678 have cpu.pressure, memory.pressure, and io.pressure files, 679 which aggregate pressure stalls for the grouped tasks only. 680 681 For more details see Documentation/accounting/psi.rst. 682 683 Say N if unsure. 684 685config PSI_DEFAULT_DISABLED 686 bool "Require boot parameter to enable pressure stall information tracking" 687 default n 688 depends on PSI 689 help 690 If set, pressure stall information tracking will be disabled 691 per default but can be enabled through passing psi=1 on the 692 kernel commandline during boot. 693 694 This feature adds some code to the task wakeup and sleep 695 paths of the scheduler. The overhead is too low to affect 696 common scheduling-intense workloads in practice (such as 697 webservers, memcache), but it does show up in artificial 698 scheduler stress tests, such as hackbench. 699 700 If you are paranoid and not sure what the kernel will be 701 used for, say Y. 702 703 Say N if unsure. 704 705endmenu # "CPU/Task time and stats accounting" 706 707config CPU_ISOLATION 708 bool "CPU isolation" 709 depends on SMP 710 default y 711 help 712 Make sure that CPUs running critical tasks are not disturbed by 713 any source of "noise" such as unbound workqueues, timers, kthreads... 714 Unbound jobs get offloaded to housekeeping CPUs. This is driven by 715 the "isolcpus=" boot parameter. 716 717 Say Y if unsure. 718 719source "kernel/rcu/Kconfig" 720 721config IKCONFIG 722 tristate "Kernel .config support" 723 help 724 This option enables the complete Linux kernel ".config" file 725 contents to be saved in the kernel. It provides documentation 726 of which kernel options are used in a running kernel or in an 727 on-disk kernel. This information can be extracted from the kernel 728 image file with the script scripts/extract-ikconfig and used as 729 input to rebuild the current kernel or to build another kernel. 730 It can also be extracted from a running kernel by reading 731 /proc/config.gz if enabled (below). 732 733config IKCONFIG_PROC 734 bool "Enable access to .config through /proc/config.gz" 735 depends on IKCONFIG && PROC_FS 736 help 737 This option enables access to the kernel configuration file 738 through /proc/config.gz. 739 740config IKHEADERS 741 tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz" 742 depends on SYSFS 743 help 744 This option enables access to the in-kernel headers that are generated during 745 the build process. These can be used to build eBPF tracing programs, 746 or similar programs. If you build the headers as a module, a module called 747 kheaders.ko is built which can be loaded on-demand to get access to headers. 748 749config LOG_BUF_SHIFT 750 int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 751 range 12 25 752 default 17 753 depends on PRINTK 754 help 755 Select the minimal kernel log buffer size as a power of 2. 756 The final size is affected by LOG_CPU_MAX_BUF_SHIFT config 757 parameter, see below. Any higher size also might be forced 758 by "log_buf_len" boot parameter. 759 760 Examples: 761 17 => 128 KB 762 16 => 64 KB 763 15 => 32 KB 764 14 => 16 KB 765 13 => 8 KB 766 12 => 4 KB 767 768config LOG_CPU_MAX_BUF_SHIFT 769 int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)" 770 depends on SMP 771 range 0 21 772 default 0 if BASE_SMALL 773 default 12 774 depends on PRINTK 775 help 776 This option allows to increase the default ring buffer size 777 according to the number of CPUs. The value defines the contribution 778 of each CPU as a power of 2. The used space is typically only few 779 lines however it might be much more when problems are reported, 780 e.g. backtraces. 781 782 The increased size means that a new buffer has to be allocated and 783 the original static one is unused. It makes sense only on systems 784 with more CPUs. Therefore this value is used only when the sum of 785 contributions is greater than the half of the default kernel ring 786 buffer as defined by LOG_BUF_SHIFT. The default values are set 787 so that more than 16 CPUs are needed to trigger the allocation. 788 789 Also this option is ignored when "log_buf_len" kernel parameter is 790 used as it forces an exact (power of two) size of the ring buffer. 791 792 The number of possible CPUs is used for this computation ignoring 793 hotplugging making the computation optimal for the worst case 794 scenario while allowing a simple algorithm to be used from bootup. 795 796 Examples shift values and their meaning: 797 17 => 128 KB for each CPU 798 16 => 64 KB for each CPU 799 15 => 32 KB for each CPU 800 14 => 16 KB for each CPU 801 13 => 8 KB for each CPU 802 12 => 4 KB for each CPU 803 804config PRINTK_INDEX 805 bool "Printk indexing debugfs interface" 806 depends on PRINTK && DEBUG_FS 807 help 808 Add support for indexing of all printk formats known at compile time 809 at <debugfs>/printk/index/<module>. 810 811 This can be used as part of maintaining daemons which monitor 812 /dev/kmsg, as it permits auditing the printk formats present in a 813 kernel, allowing detection of cases where monitored printks are 814 changed or no longer present. 815 816 There is no additional runtime cost to printk with this enabled. 817 818# 819# Architectures with an unreliable sched_clock() should select this: 820# 821config HAVE_UNSTABLE_SCHED_CLOCK 822 bool 823 824config GENERIC_SCHED_CLOCK 825 bool 826 827menu "Scheduler features" 828 829config UCLAMP_TASK 830 bool "Enable utilization clamping for RT/FAIR tasks" 831 depends on CPU_FREQ_GOV_SCHEDUTIL 832 help 833 This feature enables the scheduler to track the clamped utilization 834 of each CPU based on RUNNABLE tasks scheduled on that CPU. 835 836 With this option, the user can specify the min and max CPU 837 utilization allowed for RUNNABLE tasks. The max utilization defines 838 the maximum frequency a task should use while the min utilization 839 defines the minimum frequency it should use. 840 841 Both min and max utilization clamp values are hints to the scheduler, 842 aiming at improving its frequency selection policy, but they do not 843 enforce or grant any specific bandwidth for tasks. 844 845 If in doubt, say N. 846 847config UCLAMP_BUCKETS_COUNT 848 int "Number of supported utilization clamp buckets" 849 range 5 20 850 default 5 851 depends on UCLAMP_TASK 852 help 853 Defines the number of clamp buckets to use. The range of each bucket 854 will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the 855 number of clamp buckets the finer their granularity and the higher 856 the precision of clamping aggregation and tracking at run-time. 857 858 For example, with the minimum configuration value we will have 5 859 clamp buckets tracking 20% utilization each. A 25% boosted tasks will 860 be refcounted in the [20..39]% bucket and will set the bucket clamp 861 effective value to 25%. 862 If a second 30% boosted task should be co-scheduled on the same CPU, 863 that task will be refcounted in the same bucket of the first task and 864 it will boost the bucket clamp effective value to 30%. 865 The clamp effective value of a bucket is reset to its nominal value 866 (20% in the example above) when there are no more tasks refcounted in 867 that bucket. 868 869 An additional boost/capping margin can be added to some tasks. In the 870 example above the 25% task will be boosted to 30% until it exits the 871 CPU. If that should be considered not acceptable on certain systems, 872 it's always possible to reduce the margin by increasing the number of 873 clamp buckets to trade off used memory for run-time tracking 874 precision. 875 876 If in doubt, use the default value. 877 878endmenu 879 880# 881# For architectures that want to enable the support for NUMA-affine scheduler 882# balancing logic: 883# 884config ARCH_SUPPORTS_NUMA_BALANCING 885 bool 886 887# 888# For architectures that prefer to flush all TLBs after a number of pages 889# are unmapped instead of sending one IPI per page to flush. The architecture 890# must provide guarantees on what happens if a clean TLB cache entry is 891# written after the unmap. Details are in mm/rmap.c near the check for 892# should_defer_flush. The architecture should also consider if the full flush 893# and the refill costs are offset by the savings of sending fewer IPIs. 894config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 895 bool 896 897config CC_HAS_INT128 898 def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT 899 900config CC_IMPLICIT_FALLTHROUGH 901 string 902 default "-Wimplicit-fallthrough=5" if CC_IS_GCC && $(cc-option,-Wimplicit-fallthrough=5) 903 default "-Wimplicit-fallthrough" if CC_IS_CLANG && $(cc-option,-Wunreachable-code-fallthrough) 904 905# Currently, disable gcc-10+ array-bounds globally. 906# It's still broken in gcc-13, so no upper bound yet. 907config GCC10_NO_ARRAY_BOUNDS 908 def_bool y 909 910config CC_NO_ARRAY_BOUNDS 911 bool 912 default y if CC_IS_GCC && GCC_VERSION >= 90000 && GCC10_NO_ARRAY_BOUNDS 913 914# Currently, disable -Wstringop-overflow for GCC globally. 915config GCC_NO_STRINGOP_OVERFLOW 916 def_bool y 917 918config CC_NO_STRINGOP_OVERFLOW 919 bool 920 default y if CC_IS_GCC && GCC_NO_STRINGOP_OVERFLOW 921 922config CC_STRINGOP_OVERFLOW 923 bool 924 default y if CC_IS_GCC && !CC_NO_STRINGOP_OVERFLOW 925 926# 927# For architectures that know their GCC __int128 support is sound 928# 929config ARCH_SUPPORTS_INT128 930 bool 931 932# For architectures that (ab)use NUMA to represent different memory regions 933# all cpu-local but of different latencies, such as SuperH. 934# 935config ARCH_WANT_NUMA_VARIABLE_LOCALITY 936 bool 937 938config NUMA_BALANCING 939 bool "Memory placement aware NUMA scheduler" 940 depends on ARCH_SUPPORTS_NUMA_BALANCING 941 depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY 942 depends on SMP && NUMA && MIGRATION && !PREEMPT_RT 943 help 944 This option adds support for automatic NUMA aware memory/task placement. 945 The mechanism is quite primitive and is based on migrating memory when 946 it has references to the node the task is running on. 947 948 This system will be inactive on UMA systems. 949 950config NUMA_BALANCING_DEFAULT_ENABLED 951 bool "Automatically enable NUMA aware memory/task placement" 952 default y 953 depends on NUMA_BALANCING 954 help 955 If set, automatic NUMA balancing will be enabled if running on a NUMA 956 machine. 957 958config SLAB_OBJ_EXT 959 bool 960 961menuconfig CGROUPS 962 bool "Control Group support" 963 select KERNFS 964 help 965 This option adds support for grouping sets of processes together, for 966 use with process control subsystems such as Cpusets, CFS, memory 967 controls or device isolation. 968 See 969 - Documentation/scheduler/sched-design-CFS.rst (CFS) 970 - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation 971 and resource control) 972 973 Say N if unsure. 974 975if CGROUPS 976 977config PAGE_COUNTER 978 bool 979 980config CGROUP_FAVOR_DYNMODS 981 bool "Favor dynamic modification latency reduction by default" 982 help 983 This option enables the "favordynmods" mount option by default 984 which reduces the latencies of dynamic cgroup modifications such 985 as task migrations and controller on/offs at the cost of making 986 hot path operations such as forks and exits more expensive. 987 988 Say N if unsure. 989 990config MEMCG 991 bool "Memory controller" 992 select PAGE_COUNTER 993 select EVENTFD 994 select SLAB_OBJ_EXT 995 help 996 Provides control over the memory footprint of tasks in a cgroup. 997 998config MEMCG_NMI_UNSAFE 999 bool 1000 depends on MEMCG 1001 depends on HAVE_NMI 1002 depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && !ARCH_HAVE_NMI_SAFE_CMPXCHG 1003 default y 1004 1005config MEMCG_NMI_SAFETY_REQUIRES_ATOMIC 1006 bool 1007 depends on MEMCG 1008 depends on HAVE_NMI 1009 depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && ARCH_HAVE_NMI_SAFE_CMPXCHG 1010 default y 1011 1012config MEMCG_V1 1013 bool "Legacy cgroup v1 memory controller" 1014 depends on MEMCG 1015 default n 1016 help 1017 Legacy cgroup v1 memory controller which has been deprecated by 1018 cgroup v2 implementation. The v1 is there for legacy applications 1019 which haven't migrated to the new cgroup v2 interface yet. If you 1020 do not have any such application then you are completely fine leaving 1021 this option disabled. 1022 1023 Please note that feature set of the legacy memory controller is likely 1024 going to shrink due to deprecation process. New deployments with v1 1025 controller are highly discouraged. 1026 1027 Say N if unsure. 1028 1029config BLK_CGROUP 1030 bool "IO controller" 1031 depends on BLOCK 1032 default n 1033 help 1034 Generic block IO controller cgroup interface. This is the common 1035 cgroup interface which should be used by various IO controlling 1036 policies. 1037 1038 Currently, CFQ IO scheduler uses it to recognize task groups and 1039 control disk bandwidth allocation (proportional time slice allocation) 1040 to such task groups. It is also used by bio throttling logic in 1041 block layer to implement upper limit in IO rates on a device. 1042 1043 This option only enables generic Block IO controller infrastructure. 1044 One needs to also enable actual IO controlling logic/policy. For 1045 enabling proportional weight division of disk bandwidth in CFQ, set 1046 CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set 1047 CONFIG_BLK_DEV_THROTTLING=y. 1048 1049 See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 1050 1051config CGROUP_WRITEBACK 1052 bool 1053 depends on MEMCG && BLK_CGROUP 1054 default y 1055 1056menuconfig CGROUP_SCHED 1057 bool "CPU controller" 1058 default n 1059 help 1060 This feature lets CPU scheduler recognize task groups and control CPU 1061 bandwidth allocation to such task groups. It uses cgroups to group 1062 tasks. 1063 1064if CGROUP_SCHED 1065config GROUP_SCHED_WEIGHT 1066 def_bool n 1067 1068config FAIR_GROUP_SCHED 1069 bool "Group scheduling for SCHED_OTHER" 1070 depends on CGROUP_SCHED 1071 select GROUP_SCHED_WEIGHT 1072 default CGROUP_SCHED 1073 1074config CFS_BANDWIDTH 1075 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED" 1076 depends on FAIR_GROUP_SCHED 1077 default n 1078 help 1079 This option allows users to define CPU bandwidth rates (limits) for 1080 tasks running within the fair group scheduler. Groups with no limit 1081 set are considered to be unconstrained and will run with no 1082 restriction. 1083 See Documentation/scheduler/sched-bwc.rst for more information. 1084 1085config RT_GROUP_SCHED 1086 bool "Group scheduling for SCHED_RR/FIFO" 1087 depends on CGROUP_SCHED 1088 default n 1089 help 1090 This feature lets you explicitly allocate real CPU bandwidth 1091 to task groups. If enabled, it will also make it impossible to 1092 schedule realtime tasks for non-root users until you allocate 1093 realtime bandwidth for them. 1094 See Documentation/scheduler/sched-rt-group.rst for more information. 1095 1096config RT_GROUP_SCHED_DEFAULT_DISABLED 1097 bool "Require boot parameter to enable group scheduling for SCHED_RR/FIFO" 1098 depends on RT_GROUP_SCHED 1099 default n 1100 help 1101 When set, the RT group scheduling is disabled by default. The option 1102 is in inverted form so that mere RT_GROUP_SCHED enables the group 1103 scheduling. 1104 1105 Say N if unsure. 1106 1107config EXT_GROUP_SCHED 1108 bool 1109 depends on SCHED_CLASS_EXT && CGROUP_SCHED 1110 select GROUP_SCHED_WEIGHT 1111 default y 1112 1113endif #CGROUP_SCHED 1114 1115config SCHED_MM_CID 1116 def_bool y 1117 depends on SMP && RSEQ 1118 1119config UCLAMP_TASK_GROUP 1120 bool "Utilization clamping per group of tasks" 1121 depends on CGROUP_SCHED 1122 depends on UCLAMP_TASK 1123 default n 1124 help 1125 This feature enables the scheduler to track the clamped utilization 1126 of each CPU based on RUNNABLE tasks currently scheduled on that CPU. 1127 1128 When this option is enabled, the user can specify a min and max 1129 CPU bandwidth which is allowed for each single task in a group. 1130 The max bandwidth allows to clamp the maximum frequency a task 1131 can use, while the min bandwidth allows to define a minimum 1132 frequency a task will always use. 1133 1134 When task group based utilization clamping is enabled, an eventually 1135 specified task-specific clamp value is constrained by the cgroup 1136 specified clamp value. Both minimum and maximum task clamping cannot 1137 be bigger than the corresponding clamping defined at task group level. 1138 1139 If in doubt, say N. 1140 1141config CGROUP_PIDS 1142 bool "PIDs controller" 1143 help 1144 Provides enforcement of process number limits in the scope of a 1145 cgroup. Any attempt to fork more processes than is allowed in the 1146 cgroup will fail. PIDs are fundamentally a global resource because it 1147 is fairly trivial to reach PID exhaustion before you reach even a 1148 conservative kmemcg limit. As a result, it is possible to grind a 1149 system to halt without being limited by other cgroup policies. The 1150 PIDs controller is designed to stop this from happening. 1151 1152 It should be noted that organisational operations (such as attaching 1153 to a cgroup hierarchy) will *not* be blocked by the PIDs controller, 1154 since the PIDs limit only affects a process's ability to fork, not to 1155 attach to a cgroup. 1156 1157config CGROUP_RDMA 1158 bool "RDMA controller" 1159 help 1160 Provides enforcement of RDMA resources defined by IB stack. 1161 It is fairly easy for consumers to exhaust RDMA resources, which 1162 can result into resource unavailability to other consumers. 1163 RDMA controller is designed to stop this from happening. 1164 Attaching processes with active RDMA resources to the cgroup 1165 hierarchy is allowed even if can cross the hierarchy's limit. 1166 1167config CGROUP_DMEM 1168 bool "Device memory controller (DMEM)" 1169 select PAGE_COUNTER 1170 help 1171 The DMEM controller allows compatible devices to restrict device 1172 memory usage based on the cgroup hierarchy. 1173 1174 As an example, it allows you to restrict VRAM usage for applications 1175 in the DRM subsystem. 1176 1177config CGROUP_FREEZER 1178 bool "Freezer controller" 1179 help 1180 Provides a way to freeze and unfreeze all tasks in a 1181 cgroup. 1182 1183 This option affects the ORIGINAL cgroup interface. The cgroup2 memory 1184 controller includes important in-kernel memory consumers per default. 1185 1186 If you're using cgroup2, say N. 1187 1188config CGROUP_HUGETLB 1189 bool "HugeTLB controller" 1190 depends on HUGETLB_PAGE 1191 select PAGE_COUNTER 1192 default n 1193 help 1194 Provides a cgroup controller for HugeTLB pages. 1195 When you enable this, you can put a per cgroup limit on HugeTLB usage. 1196 The limit is enforced during page fault. Since HugeTLB doesn't 1197 support page reclaim, enforcing the limit at page fault time implies 1198 that, the application will get SIGBUS signal if it tries to access 1199 HugeTLB pages beyond its limit. This requires the application to know 1200 beforehand how much HugeTLB pages it would require for its use. The 1201 control group is tracked in the third page lru pointer. This means 1202 that we cannot use the controller with huge page less than 3 pages. 1203 1204config CPUSETS 1205 bool "Cpuset controller" 1206 depends on SMP 1207 select UNION_FIND 1208 help 1209 This option will let you create and manage CPUSETs which 1210 allow dynamically partitioning a system into sets of CPUs and 1211 Memory Nodes and assigning tasks to run only within those sets. 1212 This is primarily useful on large SMP or NUMA systems. 1213 1214 Say N if unsure. 1215 1216config CPUSETS_V1 1217 bool "Legacy cgroup v1 cpusets controller" 1218 depends on CPUSETS 1219 default n 1220 help 1221 Legacy cgroup v1 cpusets controller which has been deprecated by 1222 cgroup v2 implementation. The v1 is there for legacy applications 1223 which haven't migrated to the new cgroup v2 interface yet. Legacy 1224 interface includes cpuset filesystem and /proc/<pid>/cpuset. If you 1225 do not have any such application then you are completely fine leaving 1226 this option disabled. 1227 1228 Say N if unsure. 1229 1230config PROC_PID_CPUSET 1231 bool "Include legacy /proc/<pid>/cpuset file" 1232 depends on CPUSETS_V1 1233 default y 1234 1235config CGROUP_DEVICE 1236 bool "Device controller" 1237 help 1238 Provides a cgroup controller implementing whitelists for 1239 devices which a process in the cgroup can mknod or open. 1240 1241config CGROUP_CPUACCT 1242 bool "Simple CPU accounting controller" 1243 help 1244 Provides a simple controller for monitoring the 1245 total CPU consumed by the tasks in a cgroup. 1246 1247config CGROUP_PERF 1248 bool "Perf controller" 1249 depends on PERF_EVENTS 1250 help 1251 This option extends the perf per-cpu mode to restrict monitoring 1252 to threads which belong to the cgroup specified and run on the 1253 designated cpu. Or this can be used to have cgroup ID in samples 1254 so that it can monitor performance events among cgroups. 1255 1256 Say N if unsure. 1257 1258config CGROUP_BPF 1259 bool "Support for eBPF programs attached to cgroups" 1260 depends on BPF_SYSCALL 1261 select SOCK_CGROUP_DATA 1262 help 1263 Allow attaching eBPF programs to a cgroup using the bpf(2) 1264 syscall command BPF_PROG_ATTACH. 1265 1266 In which context these programs are accessed depends on the type 1267 of attachment. For instance, programs that are attached using 1268 BPF_CGROUP_INET_INGRESS will be executed on the ingress path of 1269 inet sockets. 1270 1271config CGROUP_MISC 1272 bool "Misc resource controller" 1273 default n 1274 help 1275 Provides a controller for miscellaneous resources on a host. 1276 1277 Miscellaneous scalar resources are the resources on the host system 1278 which cannot be abstracted like the other cgroups. This controller 1279 tracks and limits the miscellaneous resources used by a process 1280 attached to a cgroup hierarchy. 1281 1282 For more information, please check misc cgroup section in 1283 /Documentation/admin-guide/cgroup-v2.rst. 1284 1285config CGROUP_DEBUG 1286 bool "Debug controller" 1287 default n 1288 depends on DEBUG_KERNEL 1289 help 1290 This option enables a simple controller that exports 1291 debugging information about the cgroups framework. This 1292 controller is for control cgroup debugging only. Its 1293 interfaces are not stable. 1294 1295 Say N. 1296 1297config SOCK_CGROUP_DATA 1298 bool 1299 default n 1300 1301endif # CGROUPS 1302 1303menuconfig NAMESPACES 1304 bool "Namespaces support" if EXPERT 1305 depends on MULTIUSER 1306 default !EXPERT 1307 help 1308 Provides the way to make tasks work with different objects using 1309 the same id. For example same IPC id may refer to different objects 1310 or same user id or pid may refer to different tasks when used in 1311 different namespaces. 1312 1313if NAMESPACES 1314 1315config UTS_NS 1316 bool "UTS namespace" 1317 default y 1318 help 1319 In this namespace tasks see different info provided with the 1320 uname() system call 1321 1322config TIME_NS 1323 bool "TIME namespace" 1324 depends on GENERIC_VDSO_TIME_NS 1325 default y 1326 help 1327 In this namespace boottime and monotonic clocks can be set. 1328 The time will keep going with the same pace. 1329 1330config IPC_NS 1331 bool "IPC namespace" 1332 depends on (SYSVIPC || POSIX_MQUEUE) 1333 default y 1334 help 1335 In this namespace tasks work with IPC ids which correspond to 1336 different IPC objects in different namespaces. 1337 1338config USER_NS 1339 bool "User namespace" 1340 default n 1341 help 1342 This allows containers, i.e. vservers, to use user namespaces 1343 to provide different user info for different servers. 1344 1345 When user namespaces are enabled in the kernel it is 1346 recommended that the MEMCG option also be enabled and that 1347 user-space use the memory control groups to limit the amount 1348 of memory a memory unprivileged users can use. 1349 1350 If unsure, say N. 1351 1352config PID_NS 1353 bool "PID Namespaces" 1354 default y 1355 help 1356 Support process id namespaces. This allows having multiple 1357 processes with the same pid as long as they are in different 1358 pid namespaces. This is a building block of containers. 1359 1360config NET_NS 1361 bool "Network namespace" 1362 depends on NET 1363 default y 1364 help 1365 Allow user space to create what appear to be multiple instances 1366 of the network stack. 1367 1368endif # NAMESPACES 1369 1370config CHECKPOINT_RESTORE 1371 bool "Checkpoint/restore support" 1372 depends on PROC_FS 1373 select PROC_CHILDREN 1374 select KCMP 1375 default n 1376 help 1377 Enables additional kernel features in a sake of checkpoint/restore. 1378 In particular it adds auxiliary prctl codes to setup process text, 1379 data and heap segment sizes, and a few additional /proc filesystem 1380 entries. 1381 1382 If unsure, say N here. 1383 1384config SCHED_AUTOGROUP 1385 bool "Automatic process group scheduling" 1386 select CGROUPS 1387 select CGROUP_SCHED 1388 select FAIR_GROUP_SCHED 1389 help 1390 This option optimizes the scheduler for common desktop workloads by 1391 automatically creating and populating task groups. This separation 1392 of workloads isolates aggressive CPU burners (like build jobs) from 1393 desktop applications. Task group autogeneration is currently based 1394 upon task session. 1395 1396config RELAY 1397 bool "Kernel->user space relay support (formerly relayfs)" 1398 select IRQ_WORK 1399 help 1400 This option enables support for relay interface support in 1401 certain file systems (such as debugfs). 1402 It is designed to provide an efficient mechanism for tools and 1403 facilities to relay large amounts of data from kernel space to 1404 user space. 1405 1406 If unsure, say N. 1407 1408config BLK_DEV_INITRD 1409 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 1410 help 1411 The initial RAM filesystem is a ramfs which is loaded by the 1412 boot loader (loadlin or lilo) and that is mounted as root 1413 before the normal boot procedure. It is typically used to 1414 load modules needed to mount the "real" root file system, 1415 etc. See <file:Documentation/admin-guide/initrd.rst> for details. 1416 1417 If RAM disk support (BLK_DEV_RAM) is also included, this 1418 also enables initial RAM disk (initrd) support and adds 1419 15 Kbytes (more on some other architectures) to the kernel size. 1420 1421 If unsure say Y. 1422 1423if BLK_DEV_INITRD 1424 1425source "usr/Kconfig" 1426 1427endif 1428 1429config BOOT_CONFIG 1430 bool "Boot config support" 1431 select BLK_DEV_INITRD if !BOOT_CONFIG_EMBED 1432 help 1433 Extra boot config allows system admin to pass a config file as 1434 complemental extension of kernel cmdline when booting. 1435 The boot config file must be attached at the end of initramfs 1436 with checksum, size and magic word. 1437 See <file:Documentation/admin-guide/bootconfig.rst> for details. 1438 1439 If unsure, say Y. 1440 1441config BOOT_CONFIG_FORCE 1442 bool "Force unconditional bootconfig processing" 1443 depends on BOOT_CONFIG 1444 default y if BOOT_CONFIG_EMBED 1445 help 1446 With this Kconfig option set, BOOT_CONFIG processing is carried 1447 out even when the "bootconfig" kernel-boot parameter is omitted. 1448 In fact, with this Kconfig option set, there is no way to 1449 make the kernel ignore the BOOT_CONFIG-supplied kernel-boot 1450 parameters. 1451 1452 If unsure, say N. 1453 1454config BOOT_CONFIG_EMBED 1455 bool "Embed bootconfig file in the kernel" 1456 depends on BOOT_CONFIG 1457 help 1458 Embed a bootconfig file given by BOOT_CONFIG_EMBED_FILE in the 1459 kernel. Usually, the bootconfig file is loaded with the initrd 1460 image. But if the system doesn't support initrd, this option will 1461 help you by embedding a bootconfig file while building the kernel. 1462 1463 If unsure, say N. 1464 1465config BOOT_CONFIG_EMBED_FILE 1466 string "Embedded bootconfig file path" 1467 depends on BOOT_CONFIG_EMBED 1468 help 1469 Specify a bootconfig file which will be embedded to the kernel. 1470 This bootconfig will be used if there is no initrd or no other 1471 bootconfig in the initrd. 1472 1473config INITRAMFS_PRESERVE_MTIME 1474 bool "Preserve cpio archive mtimes in initramfs" 1475 default y 1476 help 1477 Each entry in an initramfs cpio archive carries an mtime value. When 1478 enabled, extracted cpio items take this mtime, with directory mtime 1479 setting deferred until after creation of any child entries. 1480 1481 If unsure, say Y. 1482 1483config INITRAMFS_TEST 1484 bool "Test initramfs cpio archive extraction" if !KUNIT_ALL_TESTS 1485 depends on BLK_DEV_INITRD && KUNIT=y 1486 default KUNIT_ALL_TESTS 1487 help 1488 Build KUnit tests for initramfs. See Documentation/dev-tools/kunit 1489 1490choice 1491 prompt "Compiler optimization level" 1492 default CC_OPTIMIZE_FOR_PERFORMANCE 1493 1494config CC_OPTIMIZE_FOR_PERFORMANCE 1495 bool "Optimize for performance (-O2)" 1496 help 1497 This is the default optimization level for the kernel, building 1498 with the "-O2" compiler flag for best performance and most 1499 helpful compile-time warnings. 1500 1501config CC_OPTIMIZE_FOR_SIZE 1502 bool "Optimize for size (-Os)" 1503 help 1504 Choosing this option will pass "-Os" to your compiler resulting 1505 in a smaller kernel. 1506 1507endchoice 1508 1509config HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1510 bool 1511 help 1512 This requires that the arch annotates or otherwise protects 1513 its external entry points from being discarded. Linker scripts 1514 must also merge .text.*, .data.*, and .bss.* correctly into 1515 output sections. Care must be taken not to pull in unrelated 1516 sections (e.g., '.text.init'). Typically '.' in section names 1517 is used to distinguish them from label names / C identifiers. 1518 1519config LD_DEAD_CODE_DATA_ELIMINATION 1520 bool "Dead code and data elimination (EXPERIMENTAL)" 1521 depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1522 depends on EXPERT 1523 depends on $(cc-option,-ffunction-sections -fdata-sections) 1524 depends on $(ld-option,--gc-sections) 1525 help 1526 Enable this if you want to do dead code and data elimination with 1527 the linker by compiling with -ffunction-sections -fdata-sections, 1528 and linking with --gc-sections. 1529 1530 This can reduce on disk and in-memory size of the kernel 1531 code and static data, particularly for small configs and 1532 on small systems. This has the possibility of introducing 1533 silently broken kernel if the required annotations are not 1534 present. This option is not well tested yet, so use at your 1535 own risk. 1536 1537config LD_ORPHAN_WARN 1538 def_bool y 1539 depends on ARCH_WANT_LD_ORPHAN_WARN 1540 depends on $(ld-option,--orphan-handling=warn) 1541 depends on $(ld-option,--orphan-handling=error) 1542 1543config LD_ORPHAN_WARN_LEVEL 1544 string 1545 depends on LD_ORPHAN_WARN 1546 default "error" if WERROR 1547 default "warn" 1548 1549config SYSCTL 1550 bool 1551 1552config HAVE_UID16 1553 bool 1554 1555config SYSCTL_EXCEPTION_TRACE 1556 bool 1557 help 1558 Enable support for /proc/sys/debug/exception-trace. 1559 1560config SYSCTL_ARCH_UNALIGN_NO_WARN 1561 bool 1562 help 1563 Enable support for /proc/sys/kernel/ignore-unaligned-usertrap 1564 Allows arch to define/use @no_unaligned_warning to possibly warn 1565 about unaligned access emulation going on under the hood. 1566 1567config SYSCTL_ARCH_UNALIGN_ALLOW 1568 bool 1569 help 1570 Enable support for /proc/sys/kernel/unaligned-trap 1571 Allows arches to define/use @unaligned_enabled to runtime toggle 1572 the unaligned access emulation. 1573 see arch/parisc/kernel/unaligned.c for reference 1574 1575config SYSFS_SYSCALL 1576 bool "Sysfs syscall support" 1577 default n 1578 help 1579 sys_sysfs is an obsolete system call no longer supported in libc. 1580 Note that disabling this option is more secure but might break 1581 compatibility with some systems. 1582 1583 If unsure say N here. 1584 1585config HAVE_PCSPKR_PLATFORM 1586 bool 1587 1588menuconfig EXPERT 1589 bool "Configure standard kernel features (expert users)" 1590 # Unhide debug options, to make the on-by-default options visible 1591 select DEBUG_KERNEL 1592 help 1593 This option allows certain base kernel options and settings 1594 to be disabled or tweaked. This is for specialized 1595 environments which can tolerate a "non-standard" kernel. 1596 Only use this if you really know what you are doing. 1597 1598config UID16 1599 bool "Enable 16-bit UID system calls" if EXPERT 1600 depends on HAVE_UID16 && MULTIUSER 1601 default y 1602 help 1603 This enables the legacy 16-bit UID syscall wrappers. 1604 1605config MULTIUSER 1606 bool "Multiple users, groups and capabilities support" if EXPERT 1607 default y 1608 help 1609 This option enables support for non-root users, groups and 1610 capabilities. 1611 1612 If you say N here, all processes will run with UID 0, GID 0, and all 1613 possible capabilities. Saying N here also compiles out support for 1614 system calls related to UIDs, GIDs, and capabilities, such as setuid, 1615 setgid, and capset. 1616 1617 If unsure, say Y here. 1618 1619config SGETMASK_SYSCALL 1620 bool "sgetmask/ssetmask syscalls support" if EXPERT 1621 default PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH 1622 help 1623 sys_sgetmask and sys_ssetmask are obsolete system calls 1624 no longer supported in libc but still enabled by default in some 1625 architectures. 1626 1627 If unsure, leave the default option here. 1628 1629config FHANDLE 1630 bool "open by fhandle syscalls" if EXPERT 1631 select EXPORTFS 1632 default y 1633 help 1634 If you say Y here, a user level program will be able to map 1635 file names to handle and then later use the handle for 1636 different file system operations. This is useful in implementing 1637 userspace file servers, which now track files using handles instead 1638 of names. The handle would remain the same even if file names 1639 get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2) 1640 syscalls. 1641 1642config POSIX_TIMERS 1643 bool "Posix Clocks & timers" if EXPERT 1644 default y 1645 help 1646 This includes native support for POSIX timers to the kernel. 1647 Some embedded systems have no use for them and therefore they 1648 can be configured out to reduce the size of the kernel image. 1649 1650 When this option is disabled, the following syscalls won't be 1651 available: timer_create, timer_gettime: timer_getoverrun, 1652 timer_settime, timer_delete, clock_adjtime, getitimer, 1653 setitimer, alarm. Furthermore, the clock_settime, clock_gettime, 1654 clock_getres and clock_nanosleep syscalls will be limited to 1655 CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only. 1656 1657 If unsure say y. 1658 1659config PRINTK 1660 default y 1661 bool "Enable support for printk" if EXPERT 1662 select IRQ_WORK 1663 help 1664 This option enables normal printk support. Removing it 1665 eliminates most of the message strings from the kernel image 1666 and makes the kernel more or less silent. As this makes it 1667 very difficult to diagnose system problems, saying N here is 1668 strongly discouraged. 1669 1670config BUG 1671 bool "BUG() support" if EXPERT 1672 default y 1673 help 1674 Disabling this option eliminates support for BUG and WARN, reducing 1675 the size of your kernel image and potentially quietly ignoring 1676 numerous fatal conditions. You should only consider disabling this 1677 option for embedded systems with no facilities for reporting errors. 1678 Just say Y. 1679 1680config ELF_CORE 1681 depends on COREDUMP 1682 default y 1683 bool "Enable ELF core dumps" if EXPERT 1684 help 1685 Enable support for generating core dumps. Disabling saves about 4k. 1686 1687 1688config PCSPKR_PLATFORM 1689 bool "Enable PC-Speaker support" if EXPERT 1690 depends on HAVE_PCSPKR_PLATFORM 1691 select I8253_LOCK 1692 default y 1693 help 1694 This option allows to disable the internal PC-Speaker 1695 support, saving some memory. 1696 1697config BASE_SMALL 1698 bool "Enable smaller-sized data structures for core" if EXPERT 1699 help 1700 Enabling this option reduces the size of miscellaneous core 1701 kernel data structures. This saves memory on small machines, 1702 but may reduce performance. 1703 1704config FUTEX 1705 bool "Enable futex support" if EXPERT 1706 depends on !(SPARC32 && SMP) 1707 default y 1708 imply RT_MUTEXES 1709 help 1710 Disabling this option will cause the kernel to be built without 1711 support for "fast userspace mutexes". The resulting kernel may not 1712 run glibc-based applications correctly. 1713 1714config FUTEX_PI 1715 bool 1716 depends on FUTEX && RT_MUTEXES 1717 default y 1718 1719config FUTEX_PRIVATE_HASH 1720 bool 1721 depends on FUTEX && !BASE_SMALL && MMU 1722 default y 1723 1724config FUTEX_MPOL 1725 bool 1726 depends on FUTEX && NUMA 1727 default y 1728 1729config EPOLL 1730 bool "Enable eventpoll support" if EXPERT 1731 default y 1732 help 1733 Disabling this option will cause the kernel to be built without 1734 support for epoll family of system calls. 1735 1736config SIGNALFD 1737 bool "Enable signalfd() system call" if EXPERT 1738 default y 1739 help 1740 Enable the signalfd() system call that allows to receive signals 1741 on a file descriptor. 1742 1743 If unsure, say Y. 1744 1745config TIMERFD 1746 bool "Enable timerfd() system call" if EXPERT 1747 default y 1748 help 1749 Enable the timerfd() system call that allows to receive timer 1750 events on a file descriptor. 1751 1752 If unsure, say Y. 1753 1754config EVENTFD 1755 bool "Enable eventfd() system call" if EXPERT 1756 default y 1757 help 1758 Enable the eventfd() system call that allows to receive both 1759 kernel notification (ie. KAIO) or userspace notifications. 1760 1761 If unsure, say Y. 1762 1763config SHMEM 1764 bool "Use full shmem filesystem" if EXPERT 1765 default y 1766 depends on MMU 1767 help 1768 The shmem is an internal filesystem used to manage shared memory. 1769 It is backed by swap and manages resource limits. It is also exported 1770 to userspace as tmpfs if TMPFS is enabled. Disabling this 1771 option replaces shmem and tmpfs with the much simpler ramfs code, 1772 which may be appropriate on small systems without swap. 1773 1774config AIO 1775 bool "Enable AIO support" if EXPERT 1776 default y 1777 help 1778 This option enables POSIX asynchronous I/O which may by used 1779 by some high performance threaded applications. Disabling 1780 this option saves about 7k. 1781 1782config IO_URING 1783 bool "Enable IO uring support" if EXPERT 1784 select IO_WQ 1785 default y 1786 help 1787 This option enables support for the io_uring interface, enabling 1788 applications to submit and complete IO through submission and 1789 completion rings that are shared between the kernel and application. 1790 1791config GCOV_PROFILE_URING 1792 bool "Enable GCOV profiling on the io_uring subsystem" 1793 depends on GCOV_KERNEL 1794 help 1795 Enable GCOV profiling on the io_uring subsystem, to facilitate 1796 code coverage testing. 1797 1798 If unsure, say N. 1799 1800 Note that this will have a negative impact on the performance of 1801 the io_uring subsystem, hence this should only be enabled for 1802 specific test purposes. 1803 1804config ADVISE_SYSCALLS 1805 bool "Enable madvise/fadvise syscalls" if EXPERT 1806 default y 1807 help 1808 This option enables the madvise and fadvise syscalls, used by 1809 applications to advise the kernel about their future memory or file 1810 usage, improving performance. If building an embedded system where no 1811 applications use these syscalls, you can disable this option to save 1812 space. 1813 1814config MEMBARRIER 1815 bool "Enable membarrier() system call" if EXPERT 1816 default y 1817 help 1818 Enable the membarrier() system call that allows issuing memory 1819 barriers across all running threads, which can be used to distribute 1820 the cost of user-space memory barriers asymmetrically by transforming 1821 pairs of memory barriers into pairs consisting of membarrier() and a 1822 compiler barrier. 1823 1824 If unsure, say Y. 1825 1826config KCMP 1827 bool "Enable kcmp() system call" if EXPERT 1828 help 1829 Enable the kernel resource comparison system call. It provides 1830 user-space with the ability to compare two processes to see if they 1831 share a common resource, such as a file descriptor or even virtual 1832 memory space. 1833 1834 If unsure, say N. 1835 1836config RSEQ 1837 bool "Enable rseq() system call" if EXPERT 1838 default y 1839 depends on HAVE_RSEQ 1840 select MEMBARRIER 1841 help 1842 Enable the restartable sequences system call. It provides a 1843 user-space cache for the current CPU number value, which 1844 speeds up getting the current CPU number from user-space, 1845 as well as an ABI to speed up user-space operations on 1846 per-CPU data. 1847 1848 If unsure, say Y. 1849 1850config DEBUG_RSEQ 1851 default n 1852 bool "Enable debugging of rseq() system call" if EXPERT 1853 depends on RSEQ && DEBUG_KERNEL 1854 help 1855 Enable extra debugging checks for the rseq system call. 1856 1857 If unsure, say N. 1858 1859config CACHESTAT_SYSCALL 1860 bool "Enable cachestat() system call" if EXPERT 1861 default y 1862 help 1863 Enable the cachestat system call, which queries the page cache 1864 statistics of a file (number of cached pages, dirty pages, 1865 pages marked for writeback, (recently) evicted pages). 1866 1867 If unsure say Y here. 1868 1869config PC104 1870 bool "PC/104 support" if EXPERT 1871 help 1872 Expose PC/104 form factor device drivers and options available for 1873 selection and configuration. Enable this option if your target 1874 machine has a PC/104 bus. 1875 1876config KALLSYMS 1877 bool "Load all symbols for debugging/ksymoops" if EXPERT 1878 default y 1879 help 1880 Say Y here to let the kernel print out symbolic crash information and 1881 symbolic stack backtraces. This increases the size of the kernel 1882 somewhat, as all symbols have to be loaded into the kernel image. 1883 1884config KALLSYMS_SELFTEST 1885 bool "Test the basic functions and performance of kallsyms" 1886 depends on KALLSYMS 1887 default n 1888 help 1889 Test the basic functions and performance of some interfaces, such as 1890 kallsyms_lookup_name. It also calculates the compression rate of the 1891 kallsyms compression algorithm for the current symbol set. 1892 1893 Start self-test automatically after system startup. Suggest executing 1894 "dmesg | grep kallsyms_selftest" to collect test results. "finish" is 1895 displayed in the last line, indicating that the test is complete. 1896 1897config KALLSYMS_ALL 1898 bool "Include all symbols in kallsyms" 1899 depends on DEBUG_KERNEL && KALLSYMS 1900 help 1901 Normally kallsyms only contains the symbols of functions for nicer 1902 OOPS messages and backtraces (i.e., symbols from the text and inittext 1903 sections). This is sufficient for most cases. And only if you want to 1904 enable kernel live patching, or other less common use cases (e.g., 1905 when a debugger is used) all symbols are required (i.e., names of 1906 variables from the data sections, etc). 1907 1908 This option makes sure that all symbols are loaded into the kernel 1909 image (i.e., symbols from all sections) in cost of increased kernel 1910 size (depending on the kernel configuration, it may be 300KiB or 1911 something like this). 1912 1913 Say N unless you really need all symbols, or kernel live patching. 1914 1915# end of the "standard kernel features (expert users)" menu 1916 1917config ARCH_HAS_MEMBARRIER_CALLBACKS 1918 bool 1919 1920config ARCH_HAS_MEMBARRIER_SYNC_CORE 1921 bool 1922 1923config ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS 1924 bool 1925 help 1926 Control MSEAL_SYSTEM_MAPPINGS access based on architecture. 1927 1928 A 64-bit kernel is required for the memory sealing feature. 1929 No specific hardware features from the CPU are needed. 1930 1931 To enable this feature, the architecture needs to update their 1932 special mappings calls to include the sealing flag and confirm 1933 that it doesn't unmap/remap system mappings during the life 1934 time of the process. The existence of this flag for an architecture 1935 implies that it does not require the remapping of the system 1936 mappings during process lifetime, so sealing these mappings is safe 1937 from a kernel perspective. 1938 1939 After the architecture enables this, a distribution can set 1940 CONFIG_MSEAL_SYSTEM_MAPPING to manage access to the feature. 1941 1942 For complete descriptions of memory sealing, please see 1943 Documentation/userspace-api/mseal.rst 1944 1945config HAVE_PERF_EVENTS 1946 bool 1947 help 1948 See tools/perf/design.txt for details. 1949 1950config GUEST_PERF_EVENTS 1951 bool 1952 depends on HAVE_PERF_EVENTS 1953 1954config PERF_USE_VMALLOC 1955 bool 1956 help 1957 See tools/perf/design.txt for details 1958 1959menu "Kernel Performance Events And Counters" 1960 1961config PERF_EVENTS 1962 bool "Kernel performance events and counters" 1963 default y if PROFILING 1964 depends on HAVE_PERF_EVENTS 1965 select IRQ_WORK 1966 help 1967 Enable kernel support for various performance events provided 1968 by software and hardware. 1969 1970 Software events are supported either built-in or via the 1971 use of generic tracepoints. 1972 1973 Most modern CPUs support performance events via performance 1974 counter registers. These registers count the number of certain 1975 types of hw events: such as instructions executed, cachemisses 1976 suffered, or branches mis-predicted - without slowing down the 1977 kernel or applications. These registers can also trigger interrupts 1978 when a threshold number of events have passed - and can thus be 1979 used to profile the code that runs on that CPU. 1980 1981 The Linux Performance Event subsystem provides an abstraction of 1982 these software and hardware event capabilities, available via a 1983 system call and used by the "perf" utility in tools/perf/. It 1984 provides per task and per CPU counters, and it provides event 1985 capabilities on top of those. 1986 1987 Say Y if unsure. 1988 1989config DEBUG_PERF_USE_VMALLOC 1990 default n 1991 bool "Debug: use vmalloc to back perf mmap() buffers" 1992 depends on PERF_EVENTS && DEBUG_KERNEL && !PPC 1993 select PERF_USE_VMALLOC 1994 help 1995 Use vmalloc memory to back perf mmap() buffers. 1996 1997 Mostly useful for debugging the vmalloc code on platforms 1998 that don't require it. 1999 2000 Say N if unsure. 2001 2002endmenu 2003 2004config SYSTEM_DATA_VERIFICATION 2005 def_bool n 2006 select SYSTEM_TRUSTED_KEYRING 2007 select KEYS 2008 select CRYPTO 2009 select CRYPTO_RSA 2010 select ASYMMETRIC_KEY_TYPE 2011 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE 2012 select ASN1 2013 select OID_REGISTRY 2014 select X509_CERTIFICATE_PARSER 2015 select PKCS7_MESSAGE_PARSER 2016 help 2017 Provide PKCS#7 message verification using the contents of the system 2018 trusted keyring to provide public keys. This then can be used for 2019 module verification, kexec image verification and firmware blob 2020 verification. 2021 2022config PROFILING 2023 bool "Profiling support" 2024 help 2025 Say Y here to enable the extended profiling support mechanisms used 2026 by profilers. 2027 2028config RUST 2029 bool "Rust support" 2030 depends on HAVE_RUST 2031 depends on RUST_IS_AVAILABLE 2032 select EXTENDED_MODVERSIONS if MODVERSIONS 2033 depends on !MODVERSIONS || GENDWARFKSYMS 2034 depends on !GCC_PLUGIN_RANDSTRUCT 2035 depends on !RANDSTRUCT 2036 depends on !DEBUG_INFO_BTF || (PAHOLE_HAS_LANG_EXCLUDE && !LTO) 2037 depends on !CFI_CLANG || HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC 2038 select CFI_ICALL_NORMALIZE_INTEGERS if CFI_CLANG 2039 depends on !CALL_PADDING || RUSTC_VERSION >= 108100 2040 depends on !KASAN_SW_TAGS 2041 depends on !(MITIGATION_RETHUNK && KASAN) || RUSTC_VERSION >= 108300 2042 help 2043 Enables Rust support in the kernel. 2044 2045 This allows other Rust-related options, like drivers written in Rust, 2046 to be selected. 2047 2048 It is also required to be able to load external kernel modules 2049 written in Rust. 2050 2051 See Documentation/rust/ for more information. 2052 2053 If unsure, say N. 2054 2055config RUSTC_VERSION_TEXT 2056 string 2057 depends on RUST 2058 default "$(RUSTC_VERSION_TEXT)" 2059 help 2060 See `CC_VERSION_TEXT`. 2061 2062config BINDGEN_VERSION_TEXT 2063 string 2064 depends on RUST 2065 # The dummy parameter `workaround-for-0.69.0` is required to support 0.69.0 2066 # (https://github.com/rust-lang/rust-bindgen/pull/2678) and 0.71.0 2067 # (https://github.com/rust-lang/rust-bindgen/pull/3040). It can be removed 2068 # when the minimum version is upgraded past the latter (0.69.1 and 0.71.1 2069 # both fixed the issue). 2070 default "$(shell,$(BINDGEN) --version workaround-for-0.69.0 2>/dev/null)" 2071 2072# 2073# Place an empty function call at each tracepoint site. Can be 2074# dynamically changed for a probe function. 2075# 2076config TRACEPOINTS 2077 bool 2078 select TASKS_TRACE_RCU 2079 2080source "kernel/Kconfig.kexec" 2081 2082endmenu # General setup 2083 2084source "arch/Kconfig" 2085 2086config RT_MUTEXES 2087 bool 2088 default y if PREEMPT_RT 2089 2090config MODULE_SIG_FORMAT 2091 def_bool n 2092 select SYSTEM_DATA_VERIFICATION 2093 2094source "kernel/module/Kconfig" 2095 2096config INIT_ALL_POSSIBLE 2097 bool 2098 help 2099 Back when each arch used to define their own cpu_online_mask and 2100 cpu_possible_mask, some of them chose to initialize cpu_possible_mask 2101 with all 1s, and others with all 0s. When they were centralised, 2102 it was better to provide this option than to break all the archs 2103 and have several arch maintainers pursuing me down dark alleys. 2104 2105source "block/Kconfig" 2106 2107config PREEMPT_NOTIFIERS 2108 bool 2109 2110config PADATA 2111 depends on SMP 2112 bool 2113 2114config ASN1 2115 tristate 2116 help 2117 Build a simple ASN.1 grammar compiler that produces a bytecode output 2118 that can be interpreted by the ASN.1 stream decoder and used to 2119 inform it as to what tags are to be expected in a stream and what 2120 functions to call on what tags. 2121 2122source "kernel/Kconfig.locks" 2123 2124config ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 2125 bool 2126 2127config ARCH_HAS_PREPARE_SYNC_CORE_CMD 2128 bool 2129 2130config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 2131 bool 2132 2133# It may be useful for an architecture to override the definitions of the 2134# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h> 2135# and the COMPAT_ variants in <linux/compat.h>, in particular to use a 2136# different calling convention for syscalls. They can also override the 2137# macros for not-implemented syscalls in kernel/sys_ni.c and 2138# kernel/time/posix-stubs.c. All these overrides need to be available in 2139# <asm/syscall_wrapper.h>. 2140config ARCH_HAS_SYSCALL_WRAPPER 2141 def_bool n 2142