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