hc
2024-05-10 093a6c67005148ae32a5c9e4553491b9f5c2457b
kernel/init/Kconfig
....@@ -1,3 +1,4 @@
1
+# SPDX-License-Identifier: GPL-2.0-only
12 config DEFCONFIG_LIST
23 string
34 depends on !UML
....@@ -5,19 +6,39 @@
56 default "/lib/modules/$(shell,uname -r)/.config"
67 default "/etc/kernel-config"
78 default "/boot/config-$(shell,uname -r)"
8
- default ARCH_DEFCONFIG
9
- default "arch/$(ARCH)/defconfig"
9
+ default "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)"
10
+
11
+config CC_VERSION_TEXT
12
+ string
13
+ default "$(CC_VERSION_TEXT)"
14
+ help
15
+ This is used in unclear ways:
16
+
17
+ - Re-run Kconfig when the compiler is updated
18
+ The 'default' property references the environment variable,
19
+ CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd.
20
+ When the compiler is updated, Kconfig will be invoked.
21
+
22
+ - Ensure full rebuild when the compier is updated
23
+ include/linux/kconfig.h contains this option in the comment line so
24
+ fixdep adds include/config/cc/version/text.h into the auto-generated
25
+ dependency. When the compiler is updated, syncconfig will touch it
26
+ and then every file will be rebuilt.
1027
1128 config CC_IS_GCC
12
- def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc)
29
+ def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc)
1330
1431 config GCC_VERSION
1532 int
16
- default $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//') if CC_IS_GCC
33
+ default $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) if CC_IS_GCC
1734 default 0
1835
36
+config LD_VERSION
37
+ int
38
+ default $(shell,$(LD) --version | $(srctree)/scripts/ld-version.sh)
39
+
1940 config CC_IS_CLANG
20
- def_bool $(success,$(CC) --version | head -n 1 | grep -q clang)
41
+ def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q clang)
2142
2243 config LD_IS_LLD
2344 def_bool $(success,$(LD) -v | head -n 1 | grep -q LLD)
....@@ -26,15 +47,49 @@
2647 int
2748 default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
2849
50
+config AS_IS_GNU
51
+ def_bool $(success,test "$(as-name)" = GNU)
52
+
53
+config AS_IS_LLVM
54
+ def_bool $(success,test "$(as-name)" = LLVM)
55
+
56
+config AS_VERSION
57
+ int
58
+ # Use clang version if this is the integrated assembler
59
+ default CLANG_VERSION if AS_IS_LLVM
60
+ default $(as-version)
61
+
2962 config LLD_VERSION
3063 int
3164 default $(shell,$(srctree)/scripts/lld-version.sh $(LD))
3265
66
+config CC_CAN_LINK
67
+ bool
68
+ default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag)) if 64BIT
69
+ default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag))
70
+
71
+config CC_CAN_LINK_STATIC
72
+ bool
73
+ default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag) -static) if 64BIT
74
+ default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag) -static)
75
+
3376 config CC_HAS_ASM_GOTO
3477 def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC))
3578
79
+config CC_HAS_ASM_GOTO_OUTPUT
80
+ depends on CC_HAS_ASM_GOTO
81
+ def_bool $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null)
82
+
83
+config CC_HAS_ASM_GOTO_TIED_OUTPUT
84
+ depends on CC_HAS_ASM_GOTO_OUTPUT
85
+ # Detect buggy gcc and clang, fixed in gcc-11 clang-14.
86
+ 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)
87
+
3688 config TOOLS_SUPPORT_RELR
3789 def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh)
90
+
91
+config CC_HAS_ASM_INLINE
92
+ def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
3893
3994 config CONSTRUCTORS
4095 bool
....@@ -43,7 +98,7 @@
4398 config IRQ_WORK
4499 bool
45100
46
-config BUILDTIME_EXTABLE_SORT
101
+config BUILDTIME_TABLE_SORT
47102 bool
48103
49104 config THREAD_INFO_IN_TASK
....@@ -88,6 +143,30 @@
88143 here. If you are a user/distributor, say N here to exclude useless
89144 drivers to be distributed.
90145
146
+config WERROR
147
+ bool "Compile the kernel with warnings as errors"
148
+ default y
149
+ help
150
+ A kernel build should not cause any compiler warnings, and this
151
+ enables the '-Werror' flag to enforce that rule by default.
152
+
153
+ However, if you have a new (or very old) compiler with odd and
154
+ unusual warnings, or you have some architecture with problems,
155
+ you may need to disable this config option in order to
156
+ successfully build the kernel.
157
+
158
+ If in doubt, say Y.
159
+
160
+config UAPI_HEADER_TEST
161
+ bool "Compile test UAPI headers"
162
+ depends on HEADERS_INSTALL && CC_CAN_LINK
163
+ help
164
+ Compile test headers exported to user-space to ensure they are
165
+ self-contained, i.e. compilable as standalone units.
166
+
167
+ If you are a developer or tester and want to ensure the exported
168
+ headers are self-contained, say Y here. Otherwise, choose N.
169
+
91170 config LOCALVERSION
92171 string "Local version - append to kernel release"
93172 help
....@@ -120,13 +199,13 @@
120199 which is done within the script "scripts/setlocalversion".)
121200
122201 config BUILD_SALT
123
- string "Build ID Salt"
124
- default ""
125
- help
126
- The build ID is used to link binaries and their debug info. Setting
127
- this option will use the value in the calculation of the build id.
128
- This is mostly useful for distributions which want to ensure the
129
- build is unique between builds. It's safe to leave the default.
202
+ string "Build ID Salt"
203
+ default ""
204
+ help
205
+ The build ID is used to link binaries and their debug info. Setting
206
+ this option will use the value in the calculation of the build id.
207
+ This is mostly useful for distributions which want to ensure the
208
+ build is unique between builds. It's safe to leave the default.
130209
131210 config HAVE_KERNEL_GZIP
132211 bool
....@@ -146,13 +225,16 @@
146225 config HAVE_KERNEL_LZ4
147226 bool
148227
228
+config HAVE_KERNEL_ZSTD
229
+ bool
230
+
149231 config HAVE_KERNEL_UNCOMPRESSED
150232 bool
151233
152234 choice
153235 prompt "Kernel compression mode"
154236 default KERNEL_GZIP
155
- depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_UNCOMPRESSED
237
+ 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
156238 help
157239 The linux kernel is a kind of self-extracting executable.
158240 Several compression algorithms are available, which differ
....@@ -231,6 +313,16 @@
231313 is about 8% bigger than LZO. But the decompression speed is
232314 faster than LZO.
233315
316
+config KERNEL_ZSTD
317
+ bool "ZSTD"
318
+ depends on HAVE_KERNEL_ZSTD
319
+ help
320
+ ZSTD is a compression algorithm targeting intermediate compression
321
+ with fast decompression speed. It will compress better than GZIP and
322
+ decompress around the same speed as LZO, but slower than LZ4. You
323
+ will need at least 192 KB RAM or more for booting. The zstd command
324
+ line tool is required for compression.
325
+
234326 config KERNEL_UNCOMPRESSED
235327 bool "None"
236328 depends on HAVE_KERNEL_UNCOMPRESSED
....@@ -242,6 +334,16 @@
242334 and jump right at uncompressed kernel image.
243335
244336 endchoice
337
+
338
+config DEFAULT_INIT
339
+ string "Default init path"
340
+ default ""
341
+ help
342
+ This option determines the default init for the system if no init=
343
+ option is passed on the kernel command line. If the requested path is
344
+ not present, we will still then move on to attempting further
345
+ locations (e.g. /sbin/init, etc). If this is empty, we will just use
346
+ the fallback list when init= is not passed.
245347
246348 config DEFAULT_HOSTNAME
247349 string "Default hostname"
....@@ -271,7 +373,7 @@
271373
272374 config SYSVIPC
273375 bool "System V IPC"
274
- ---help---
376
+ help
275377 Inter Process Communication is a suite of library functions and
276378 system calls which let processes (running programs) synchronize and
277379 exchange information. It is generally considered to be a good thing,
....@@ -293,7 +395,7 @@
293395 config POSIX_MQUEUE
294396 bool "POSIX Message Queues"
295397 depends on NET
296
- ---help---
398
+ help
297399 POSIX variant of message queues is a part of IPC. In POSIX message
298400 queues every message has a priority which decides about succession
299401 of receiving it by a process. If you want to compile and run
....@@ -311,6 +413,18 @@
311413 depends on POSIX_MQUEUE
312414 depends on SYSCTL
313415 default y
416
+
417
+config WATCH_QUEUE
418
+ bool "General notification queue"
419
+ default n
420
+ help
421
+
422
+ This is a general notification queue for the kernel to pass events to
423
+ userspace by splicing them into pipes. It can be used in conjunction
424
+ with watches for key/keyring change notifications and device
425
+ notifications.
426
+
427
+ See Documentation/watch_queue.rst
314428
315429 config CROSS_MEMORY_ATTACH
316430 bool "Enable process_vm_readv/writev syscalls"
....@@ -338,29 +452,15 @@
338452 help
339453 Enable auditing infrastructure that can be used with another
340454 kernel subsystem, such as SELinux (which requires this for
341
- logging of avc messages output). Does not do system-call
342
- auditing without CONFIG_AUDITSYSCALL.
455
+ logging of avc messages output). System call auditing is included
456
+ on architectures which support it.
343457
344458 config HAVE_ARCH_AUDITSYSCALL
345459 bool
346460
347461 config AUDITSYSCALL
348
- bool "Enable system-call auditing support"
462
+ def_bool y
349463 depends on AUDIT && HAVE_ARCH_AUDITSYSCALL
350
- default y if SECURITY_SELINUX
351
- help
352
- Enable low-overhead system-call auditing infrastructure that
353
- can be used independently or with another kernel subsystem,
354
- such as SELinux.
355
-
356
-config AUDIT_WATCH
357
- def_bool y
358
- depends on AUDITSYSCALL
359
- select FSNOTIFY
360
-
361
-config AUDIT_TREE
362
- def_bool y
363
- depends on AUDITSYSCALL
364464 select FSNOTIFY
365465
366466 source "kernel/irq/Kconfig"
....@@ -405,6 +505,7 @@
405505 bool "Full dynticks CPU time accounting"
406506 depends on HAVE_CONTEXT_TRACKING
407507 depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
508
+ depends on GENERIC_CLOCKEVENTS
408509 select VIRT_CPU_ACCOUNTING
409510 select CONTEXT_TRACKING
410511 help
....@@ -436,6 +537,25 @@
436537 def_bool y
437538 depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING
438539 depends on SMP
540
+
541
+config SCHED_THERMAL_PRESSURE
542
+ bool
543
+ default y if ARM && ARM_CPU_TOPOLOGY
544
+ default y if ARM64
545
+ depends on SMP
546
+ depends on CPU_FREQ_THERMAL
547
+ help
548
+ Select this option to enable thermal pressure accounting in the
549
+ scheduler. Thermal pressure is the value conveyed to the scheduler
550
+ that reflects the reduction in CPU compute capacity resulted from
551
+ thermal throttling. Thermal throttling occurs when the performance of
552
+ a CPU is capped due to high operating temperatures.
553
+
554
+ If selected, the scheduler will be able to balance tasks accordingly,
555
+ i.e. put less load on throttled CPUs than on non/less throttled ones.
556
+
557
+ This requires the architecture to implement
558
+ arch_set_thermal_pressure() and arch_get_thermal_pressure().
439559
440560 config BSD_PROCESS_ACCT
441561 bool "BSD Process Accounting"
....@@ -522,7 +642,7 @@
522642 have cpu.pressure, memory.pressure, and io.pressure files,
523643 which aggregate pressure stalls for the grouped tasks only.
524644
525
- For more details see Documentation/accounting/psi.txt.
645
+ For more details see Documentation/accounting/psi.rst.
526646
527647 Say N if unsure.
528648
....@@ -568,8 +688,7 @@
568688
569689 config IKCONFIG
570690 tristate "Kernel .config support"
571
- select BUILD_BIN2C
572
- ---help---
691
+ help
573692 This option enables the complete Linux kernel ".config" file
574693 contents to be saved in the kernel. It provides documentation
575694 of which kernel options are used in a running kernel or in an
....@@ -582,7 +701,7 @@
582701 config IKCONFIG_PROC
583702 bool "Enable access to .config through /proc/config.gz"
584703 depends on IKCONFIG && PROC_FS
585
- ---help---
704
+ help
586705 This option enables access to the kernel configuration file
587706 through /proc/config.gz.
588707
....@@ -634,7 +753,7 @@
634753 with more CPUs. Therefore this value is used only when the sum of
635754 contributions is greater than the half of the default kernel ring
636755 buffer as defined by LOG_BUF_SHIFT. The default values are set
637
- so that more than 64 CPUs are needed to trigger the allocation.
756
+ so that more than 16 CPUs are needed to trigger the allocation.
638757
639758 Also this option is ignored when "log_buf_len" kernel parameter is
640759 used as it forces an exact (power of two) size of the ring buffer.
....@@ -754,6 +873,9 @@
754873 config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
755874 bool
756875
876
+config CC_HAS_INT128
877
+ def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT
878
+
757879 #
758880 # For architectures that know their GCC __int128 support is sound
759881 #
....@@ -794,8 +916,8 @@
794916 use with process control subsystems such as Cpusets, CFS, memory
795917 controls or device isolation.
796918 See
797
- - Documentation/scheduler/sched-design-CFS.txt (CFS)
798
- - Documentation/cgroup-v1/ (features for grouping, isolation
919
+ - Documentation/scheduler/sched-design-CFS.rst (CFS)
920
+ - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation
799921 and resource control)
800922
801923 Say N if unsure.
....@@ -803,7 +925,7 @@
803925 if CGROUPS
804926
805927 config PAGE_COUNTER
806
- bool
928
+ bool
807929
808930 config MEMCG
809931 bool "Memory controller"
....@@ -813,24 +935,9 @@
813935 Provides control over the memory footprint of tasks in a cgroup.
814936
815937 config MEMCG_SWAP
816
- bool "Swap controller"
938
+ bool
817939 depends on MEMCG && SWAP
818
- help
819
- Provides control over the swap space consumed by tasks in a cgroup.
820
-
821
-config MEMCG_SWAP_ENABLED
822
- bool "Swap controller enabled by default"
823
- depends on MEMCG_SWAP
824940 default y
825
- help
826
- Memory Resource Controller Swap Extension comes with its price in
827
- a bigger memory consumption. General purpose distribution kernels
828
- which want to enable the feature but keep it disabled by default
829
- and let the user enable it by swapaccount=1 boot command line
830
- parameter should have this option unselected.
831
- For those who want to have the feature enabled by default should
832
- select this option (if, for some reason, they need to disable it
833
- then swapaccount=0 does the trick).
834941
835942 config MEMCG_KMEM
836943 bool
....@@ -841,7 +948,7 @@
841948 bool "IO controller"
842949 depends on BLOCK
843950 default n
844
- ---help---
951
+ help
845952 Generic block IO controller cgroup interface. This is the common
846953 cgroup interface which should be used by various IO controlling
847954 policies.
....@@ -854,18 +961,10 @@
854961 This option only enables generic Block IO controller infrastructure.
855962 One needs to also enable actual IO controlling logic/policy. For
856963 enabling proportional weight division of disk bandwidth in CFQ, set
857
- CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
964
+ CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
858965 CONFIG_BLK_DEV_THROTTLING=y.
859966
860
- See Documentation/cgroup-v1/blkio-controller.txt for more information.
861
-
862
-config DEBUG_BLK_CGROUP
863
- bool "IO controller debugging"
864
- depends on BLK_CGROUP
865
- default n
866
- ---help---
867
- Enable some debugging help. Currently it exports additional stat
868
- files in a cgroup which can be useful for debugging.
967
+ See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.
869968
870969 config CGROUP_WRITEBACK
871970 bool
....@@ -895,7 +994,7 @@
895994 tasks running within the fair group scheduler. Groups with no limit
896995 set are considered to be unconstrained and will run with no
897996 restriction.
898
- See Documentation/scheduler/sched-bwc.txt for more information.
997
+ See Documentation/scheduler/sched-bwc.rst for more information.
899998
900999 config RT_GROUP_SCHED
9011000 bool "Group scheduling for SCHED_RR/FIFO"
....@@ -906,7 +1005,7 @@
9061005 to task groups. If enabled, it will also make it impossible to
9071006 schedule realtime tasks for non-root users until you allocate
9081007 realtime bandwidth for them.
909
- See Documentation/scheduler/sched-rt-group.txt for more information.
1008
+ See Documentation/scheduler/sched-rt-group.rst for more information.
9101009
9111010 endif #CGROUP_SCHED
9121011
....@@ -944,7 +1043,7 @@
9441043 PIDs controller is designed to stop this from happening.
9451044
9461045 It should be noted that organisational operations (such as attaching
947
- to a cgroup hierarchy will *not* be blocked by the PIDs controller),
1046
+ to a cgroup hierarchy) will *not* be blocked by the PIDs controller,
9481047 since the PIDs limit only affects a process's ability to fork, not to
9491048 attach to a cgroup.
9501049
....@@ -1019,7 +1118,8 @@
10191118 help
10201119 This option extends the perf per-cpu mode to restrict monitoring
10211120 to threads which belong to the cgroup specified and run on the
1022
- designated cpu.
1121
+ designated cpu. Or this can be used to have cgroup ID in samples
1122
+ so that it can monitor performance events among cgroups.
10231123
10241124 Say N if unsure.
10251125
....@@ -1073,6 +1173,14 @@
10731173 In this namespace tasks see different info provided with the
10741174 uname() system call
10751175
1176
+config TIME_NS
1177
+ bool "TIME namespace"
1178
+ depends on GENERIC_VDSO_TIME_NS
1179
+ default y
1180
+ help
1181
+ In this namespace boottime and monotonic clocks can be set.
1182
+ The time will keep going with the same pace.
1183
+
10761184 config IPC_NS
10771185 bool "IPC namespace"
10781186 depends on (SYSVIPC || POSIX_MQUEUE)
....@@ -1116,6 +1224,7 @@
11161224 config CHECKPOINT_RESTORE
11171225 bool "Checkpoint/restore support"
11181226 select PROC_CHILDREN
1227
+ select KCMP
11191228 default n
11201229 help
11211230 Enables additional kernel features in a sake of checkpoint/restore.
....@@ -1137,29 +1246,16 @@
11371246 desktop applications. Task group autogeneration is currently based
11381247 upon task session.
11391248
1140
-config SCHED_TUNE
1141
- bool "Boosting for CFS tasks (EXPERIMENTAL)"
1142
- depends on !UCLAMP_TASK
1143
- depends on SMP
1144
- help
1145
- This option enables support for task classification using a new
1146
- cgroup controller, schedtune. Schedtune allows tasks to be given
1147
- a boost value and marked as latency-sensitive or not. This option
1148
- provides the "schedtune" controller.
1149
-
1150
- This new controller:
1151
- 1. allows only a two layers hierarchy, where the root defines the
1152
- system-wide boost value and its direct childrens define each one a
1153
- different "class of tasks" to be boosted with a different value
1154
- 2. supports up to 16 different task classes, each one which could be
1155
- configured with a different boost value
1156
-
1157
- Latency-sensitive tasks are not subject to energy-aware wakeup
1158
- task placement. The boost value assigned to tasks is used to
1159
- influence task placement and CPU frequency selection (if
1160
- utilization-driven frequency selection is in use).
1161
-
1162
- If unsure, say N.
1249
+config RT_SOFTINT_OPTIMIZATION
1250
+ bool "Improve RT scheduling during long softint execution"
1251
+ depends on ARM64
1252
+ depends on SMP
1253
+ default n
1254
+ help
1255
+ Enable an optimization which tries to avoid placing RT tasks on CPUs
1256
+ occupied by nonpreemptible tasks, such as a long softint, or CPUs
1257
+ which may soon block preemptions, such as a CPU running a ksoftirq
1258
+ thread which handles slow softints.
11631259
11641260 config SYSFS_DEPRECATED
11651261 bool "Enable deprecated sysfs features to support old userspace tools"
....@@ -1232,16 +1328,9 @@
12321328
12331329 config INITRD_ASYNC
12341330 bool "Initrd async"
1331
+ depends on NO_GKI
12351332 help
12361333 Init ramdisk async, can reduce kernel init time.
1237
-
1238
-config ROCKCHIP_ONE_INITRD
1239
- bool "Detect only one initrd"
1240
- depends on ARCH_ROCKCHIP
1241
- default ARCH_ROCKCHIP
1242
- help
1243
- RK bootloader does not put a correct size to cmdline.
1244
- Directly return when we get a good initrd.
12451334
12461335 endif
12471336
....@@ -1254,24 +1343,41 @@
12541343 initcall_nr_threads default is 0, which disable intcall async.
12551344 initcall_nr_threads=-1, auto selected the number of threads.
12561345
1346
+config BOOT_CONFIG
1347
+ bool "Boot config support"
1348
+ select BLK_DEV_INITRD
1349
+ help
1350
+ Extra boot config allows system admin to pass a config file as
1351
+ complemental extension of kernel cmdline when booting.
1352
+ The boot config file must be attached at the end of initramfs
1353
+ with checksum, size and magic word.
1354
+ See <file:Documentation/admin-guide/bootconfig.rst> for details.
1355
+
1356
+ If unsure, say Y.
1357
+
12571358 choice
12581359 prompt "Compiler optimization level"
12591360 default CC_OPTIMIZE_FOR_PERFORMANCE
12601361
12611362 config CC_OPTIMIZE_FOR_PERFORMANCE
1262
- bool "Optimize for performance"
1363
+ bool "Optimize for performance (-O2)"
12631364 help
12641365 This is the default optimization level for the kernel, building
12651366 with the "-O2" compiler flag for best performance and most
12661367 helpful compile-time warnings.
12671368
1268
-config CC_OPTIMIZE_FOR_SIZE
1269
- bool "Optimize for size"
1369
+config CC_OPTIMIZE_FOR_PERFORMANCE_O3
1370
+ bool "Optimize more for performance (-O3)"
1371
+ depends on ARC
12701372 help
1271
- Enabling this option will pass "-Os" instead of "-O2" to
1272
- your compiler resulting in a smaller kernel.
1373
+ Choosing this option will pass "-O3" to your compiler to optimize
1374
+ the kernel yet more for performance.
12731375
1274
- If unsure, say N.
1376
+config CC_OPTIMIZE_FOR_SIZE
1377
+ bool "Optimize for size (-Os)"
1378
+ help
1379
+ Choosing this option will pass "-Os" to your compiler resulting
1380
+ in a smaller kernel.
12751381
12761382 endchoice
12771383
....@@ -1289,7 +1395,6 @@
12891395 bool "Dead code and data elimination (EXPERIMENTAL)"
12901396 depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION
12911397 depends on EXPERT
1292
- depends on !(FUNCTION_TRACER && CC_IS_GCC && GCC_VERSION < 40800)
12931398 depends on $(cc-option,-ffunction-sections -fdata-sections)
12941399 depends on $(ld-option,--gc-sections)
12951400 help
....@@ -1303,6 +1408,12 @@
13031408 silently broken kernel if the required annotations are not
13041409 present. This option is not well tested yet, so use at your
13051410 own risk.
1411
+
1412
+config LD_ORPHAN_WARN
1413
+ def_bool y
1414
+ depends on ARCH_WANT_LD_ORPHAN_WARN
1415
+ depends on !LD_IS_LLD || LLD_VERSION >= 110000
1416
+ depends on $(ld-option,--orphan-handling=warn)
13061417
13071418 config SYSCTL
13081419 bool
....@@ -1343,9 +1454,9 @@
13431454 select DEBUG_KERNEL
13441455 help
13451456 This option allows certain base kernel options and settings
1346
- to be disabled or tweaked. This is for specialized
1347
- environments which can tolerate a "non-standard" kernel.
1348
- Only use this if you really know what you are doing.
1457
+ to be disabled or tweaked. This is for specialized
1458
+ environments which can tolerate a "non-standard" kernel.
1459
+ Only use this if you really know what you are doing.
13491460
13501461 config UID16
13511462 bool "Enable 16-bit UID system calls" if EXPERT
....@@ -1371,7 +1482,7 @@
13711482 config SGETMASK_SYSCALL
13721483 bool "sgetmask/ssetmask syscalls support" if EXPERT
13731484 def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH
1374
- ---help---
1485
+ help
13751486 sys_sgetmask and sys_ssetmask are obsolete system calls
13761487 no longer supported in libc but still enabled by default in some
13771488 architectures.
....@@ -1381,29 +1492,12 @@
13811492 config SYSFS_SYSCALL
13821493 bool "Sysfs syscall support" if EXPERT
13831494 default y
1384
- ---help---
1495
+ help
13851496 sys_sysfs is an obsolete system call no longer supported in libc.
13861497 Note that disabling this option is more secure but might break
13871498 compatibility with some systems.
13881499
13891500 If unsure say Y here.
1390
-
1391
-config SYSCTL_SYSCALL
1392
- bool "Sysctl syscall support" if EXPERT
1393
- depends on PROC_SYSCTL
1394
- default n
1395
- select SYSCTL
1396
- ---help---
1397
- sys_sysctl uses binary paths that have been found challenging
1398
- to properly maintain and use. The interface in /proc/sys
1399
- using paths with ascii names is now the primary path to this
1400
- information.
1401
-
1402
- Almost nothing using the binary sysctl interface so if you are
1403
- trying to save some space it is probably safe to disable this,
1404
- making your kernel marginally smaller.
1405
-
1406
- If unsure say N here.
14071501
14081502 config FHANDLE
14091503 bool "open by fhandle syscalls" if EXPERT
....@@ -1455,11 +1549,11 @@
14551549 bool "BUG() support" if EXPERT
14561550 default y
14571551 help
1458
- Disabling this option eliminates support for BUG and WARN, reducing
1459
- the size of your kernel image and potentially quietly ignoring
1460
- numerous fatal conditions. You should only consider disabling this
1461
- option for embedded systems with no facilities for reporting errors.
1462
- Just say Y.
1552
+ Disabling this option eliminates support for BUG and WARN, reducing
1553
+ the size of your kernel image and potentially quietly ignoring
1554
+ numerous fatal conditions. You should only consider disabling this
1555
+ option for embedded systems with no facilities for reporting errors.
1556
+ Just say Y.
14631557
14641558 config ELF_CORE
14651559 depends on COREDUMP
....@@ -1475,8 +1569,8 @@
14751569 select I8253_LOCK
14761570 default y
14771571 help
1478
- This option allows to disable the internal PC-Speaker
1479
- support, saving some memory.
1572
+ This option allows to disable the internal PC-Speaker
1573
+ support, saving some memory.
14801574
14811575 config BASE_FULL
14821576 default y
....@@ -1561,6 +1655,15 @@
15611655 by some high performance threaded applications. Disabling
15621656 this option saves about 7k.
15631657
1658
+config IO_URING
1659
+ bool "Enable IO uring support" if EXPERT
1660
+ select IO_WQ
1661
+ default y
1662
+ help
1663
+ This option enables support for the io_uring interface, enabling
1664
+ applications to submit and complete IO through submission and
1665
+ completion rings that are shared between the kernel and application.
1666
+
15641667 config ADVISE_SYSCALLS
15651668 bool "Enable madvise/fadvise syscalls" if EXPERT
15661669 default y
....@@ -1570,6 +1673,16 @@
15701673 usage, improving performance. If building an embedded system where no
15711674 applications use these syscalls, you can disable this option to save
15721675 space.
1676
+
1677
+config HAVE_ARCH_USERFAULTFD_WP
1678
+ bool
1679
+ help
1680
+ Arch has userfaultfd write protection support
1681
+
1682
+config HAVE_ARCH_USERFAULTFD_MINOR
1683
+ bool
1684
+ help
1685
+ Arch has userfaultfd minor fault support
15731686
15741687 config MEMBARRIER
15751688 bool "Enable membarrier() system call" if EXPERT
....@@ -1584,29 +1697,29 @@
15841697 If unsure, say Y.
15851698
15861699 config KALLSYMS
1587
- bool "Load all symbols for debugging/ksymoops" if EXPERT
1588
- default y
1589
- help
1590
- Say Y here to let the kernel print out symbolic crash information and
1591
- symbolic stack backtraces. This increases the size of the kernel
1592
- somewhat, as all symbols have to be loaded into the kernel image.
1700
+ bool "Load all symbols for debugging/ksymoops" if EXPERT
1701
+ default y
1702
+ help
1703
+ Say Y here to let the kernel print out symbolic crash information and
1704
+ symbolic stack backtraces. This increases the size of the kernel
1705
+ somewhat, as all symbols have to be loaded into the kernel image.
15931706
15941707 config KALLSYMS_ALL
15951708 bool "Include all symbols in kallsyms"
15961709 depends on DEBUG_KERNEL && KALLSYMS
15971710 help
1598
- Normally kallsyms only contains the symbols of functions for nicer
1599
- OOPS messages and backtraces (i.e., symbols from the text and inittext
1600
- sections). This is sufficient for most cases. And only in very rare
1601
- cases (e.g., when a debugger is used) all symbols are required (e.g.,
1602
- names of variables from the data sections, etc).
1711
+ Normally kallsyms only contains the symbols of functions for nicer
1712
+ OOPS messages and backtraces (i.e., symbols from the text and inittext
1713
+ sections). This is sufficient for most cases. And only in very rare
1714
+ cases (e.g., when a debugger is used) all symbols are required (e.g.,
1715
+ names of variables from the data sections, etc).
16031716
1604
- This option makes sure that all symbols are loaded into the kernel
1605
- image (i.e., symbols from all sections) in cost of increased kernel
1606
- size (depending on the kernel configuration, it may be 300KiB or
1607
- something like this).
1717
+ This option makes sure that all symbols are loaded into the kernel
1718
+ image (i.e., symbols from all sections) in cost of increased kernel
1719
+ size (depending on the kernel configuration, it may be 300KiB or
1720
+ something like this).
16081721
1609
- Say N unless you really need all symbols.
1722
+ Say N unless you really need all symbols.
16101723
16111724 config KALLSYMS_ABSOLUTE_PERCPU
16121725 bool
....@@ -1634,14 +1747,31 @@
16341747 # end of the "standard kernel features (expert users)" menu
16351748
16361749 # syscall, maps, verifier
1750
+
1751
+config BPF_LSM
1752
+ bool "LSM Instrumentation with BPF"
1753
+ depends on BPF_EVENTS
1754
+ depends on BPF_SYSCALL
1755
+ depends on SECURITY
1756
+ depends on BPF_JIT
1757
+ help
1758
+ Enables instrumentation of the security hooks with eBPF programs for
1759
+ implementing dynamic MAC and Audit Policies.
1760
+
1761
+ If you are unsure how to answer this question, answer N.
1762
+
16371763 config BPF_SYSCALL
16381764 bool "Enable bpf() system call"
16391765 select BPF
16401766 select IRQ_WORK
1767
+ select TASKS_TRACE_RCU
16411768 default n
16421769 help
16431770 Enable the bpf() system call that allows to manipulate eBPF
16441771 programs and maps via file descriptors.
1772
+
1773
+config ARCH_WANT_DEFAULT_BPF_JIT
1774
+ bool
16451775
16461776 config BPF_JIT_ALWAYS_ON
16471777 bool "Permanently enable BPF JIT and remove BPF interpreter"
....@@ -1649,6 +1779,10 @@
16491779 help
16501780 Enables BPF JIT and removes BPF interpreter to avoid
16511781 speculative execution of BPF instructions by the interpreter
1782
+
1783
+config BPF_JIT_DEFAULT_ON
1784
+ def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON
1785
+ depends on HAVE_EBPF_JIT && BPF_JIT
16521786
16531787 config BPF_UNPRIV_DEFAULT_OFF
16541788 bool "Disable unprivileged BPF by default"
....@@ -1659,6 +1793,8 @@
16591793 still reenable it by setting it to 0 later on, or permanently
16601794 disable it by setting it to 1 (from which no other transition to
16611795 0 is possible anymore).
1796
+
1797
+source "kernel/bpf/preload/Kconfig"
16621798
16631799 config USERFAULTFD
16641800 bool "Enable userfaultfd() system call"
....@@ -1672,6 +1808,16 @@
16721808
16731809 config ARCH_HAS_MEMBARRIER_SYNC_CORE
16741810 bool
1811
+
1812
+config KCMP
1813
+ bool "Enable kcmp() system call" if EXPERT
1814
+ help
1815
+ Enable the kernel resource comparison system call. It provides
1816
+ user-space with the ability to compare two processes to see if they
1817
+ share a common resource, such as a file descriptor or even virtual
1818
+ memory space.
1819
+
1820
+ If unsure, say N.
16751821
16761822 config RSEQ
16771823 bool "Enable rseq() system call" if EXPERT
....@@ -1759,12 +1905,12 @@
17591905 depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
17601906 select PERF_USE_VMALLOC
17611907 help
1762
- Use vmalloc memory to back perf mmap() buffers.
1908
+ Use vmalloc memory to back perf mmap() buffers.
17631909
1764
- Mostly useful for debugging the vmalloc code on platforms
1765
- that don't require it.
1910
+ Mostly useful for debugging the vmalloc code on platforms
1911
+ that don't require it.
17661912
1767
- Say N if unsure.
1913
+ Say N if unsure.
17681914
17691915 endmenu
17701916
....@@ -1786,7 +1932,6 @@
17861932 default y
17871933 bool "Enable SLUB debugging support" if EXPERT
17881934 depends on SLUB && SYSFS
1789
- select SLUB_SYSFS
17901935 help
17911936 SLUB has extensive debug support features. Disabling these can
17921937 result in significant savings in code size. This also disables
....@@ -1869,9 +2014,8 @@
18692014 command line.
18702015
18712016 config SLAB_FREELIST_RANDOM
1872
- default n
2017
+ bool "Randomize slab freelist"
18732018 depends on SLAB || SLUB
1874
- bool "SLAB freelist randomization"
18752019 help
18762020 Randomizes the freelist order used on creating new pages. This
18772021 security feature reduces the predictability of the kernel slab
....@@ -1879,19 +2023,45 @@
18792023
18802024 config SLAB_FREELIST_HARDENED
18812025 bool "Harden slab freelist metadata"
1882
- depends on SLUB
2026
+ depends on SLAB || SLUB
18832027 help
18842028 Many kernel heap attacks try to target slab cache metadata and
18852029 other infrastructure. This options makes minor performance
1886
- sacrifies to harden the kernel slab allocator against common
1887
- freelist exploit methods.
2030
+ sacrifices to harden the kernel slab allocator against common
2031
+ freelist exploit methods. Some slab implementations have more
2032
+ sanity-checking than others. This option is most effective with
2033
+ CONFIG_SLUB.
2034
+
2035
+config SHUFFLE_PAGE_ALLOCATOR
2036
+ bool "Page allocator randomization"
2037
+ default SLAB_FREELIST_RANDOM && ACPI_NUMA
2038
+ help
2039
+ Randomization of the page allocator improves the average
2040
+ utilization of a direct-mapped memory-side-cache. See section
2041
+ 5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI
2042
+ 6.2a specification for an example of how a platform advertises
2043
+ the presence of a memory-side-cache. There are also incidental
2044
+ security benefits as it reduces the predictability of page
2045
+ allocations to compliment SLAB_FREELIST_RANDOM, but the
2046
+ default granularity of shuffling on the "MAX_ORDER - 1" i.e,
2047
+ 10th order of pages is selected based on cache utilization
2048
+ benefits on x86.
2049
+
2050
+ While the randomization improves cache utilization it may
2051
+ negatively impact workloads on platforms without a cache. For
2052
+ this reason, by default, the randomization is enabled only
2053
+ after runtime detection of a direct-mapped memory-side-cache.
2054
+ Otherwise, the randomization may be force enabled with the
2055
+ 'page_alloc.shuffle' kernel command line parameter.
2056
+
2057
+ Say Y if unsure.
18882058
18892059 config SLUB_CPU_PARTIAL
18902060 default y
18912061 depends on SLUB && SMP
18922062 bool "SLUB per cpu partial cache"
18932063 help
1894
- Per cpu partial caches accellerate objects allocation and freeing
2064
+ Per cpu partial caches accelerate objects allocation and freeing
18952065 that is local to a processor at the price of more indeterminism
18962066 in the latency of the free. On overflow these caches will be cleared
18972067 which requires the taking of locks that may cause latency spikes.
....@@ -1917,7 +2087,7 @@
19172087 userspace. Since that isn't generally a problem on no-MMU systems,
19182088 it is normally safe to say Y here.
19192089
1920
- See Documentation/nommu-mmap.txt for more information.
2090
+ See Documentation/admin-guide/mm/nommu-mmap.rst for more information.
19212091
19222092 config SYSTEM_DATA_VERIFICATION
19232093 def_bool n
....@@ -1961,6 +2131,10 @@
19612131 int
19622132 default 0 if BASE_FULL
19632133 default 1 if !BASE_FULL
2134
+
2135
+config MODULE_SIG_FORMAT
2136
+ def_bool n
2137
+ select SYSTEM_DATA_VERIFICATION
19642138
19652139 menuconfig MODULES
19662140 bool "Enable loadable module support"
....@@ -2021,6 +2195,14 @@
20212195 make them incompatible with the kernel you are running. If
20222196 unsure, say N.
20232197
2198
+config ASM_MODVERSIONS
2199
+ bool
2200
+ default HAVE_ASM_MODVERSIONS && MODVERSIONS
2201
+ help
2202
+ This enables module versioning for exported symbols also from
2203
+ assembly. This can be enabled only when the target architecture
2204
+ supports it.
2205
+
20242206 config MODULE_REL_CRCS
20252207 bool
20262208 depends on MODVERSIONS
....@@ -2036,10 +2218,23 @@
20362218 the version). With this option, such a "srcversion" field
20372219 will be created for all modules. If unsure, say N.
20382220
2221
+config MODULE_SCMVERSION
2222
+ bool "SCM version for modules"
2223
+ depends on LOCALVERSION_AUTO
2224
+ help
2225
+ This enables the module attribute "scmversion" which can be used
2226
+ by developers to identify the SCM version of a given module, e.g.
2227
+ git sha1 or hg sha1. The SCM version can be queried by modinfo or
2228
+ via the sysfs node: /sys/modules/MODULENAME/scmversion. This is
2229
+ useful when the kernel or kernel modules are updated separately
2230
+ since that causes the vermagic of the kernel and the module to
2231
+ differ.
2232
+
2233
+ If unsure, say N.
2234
+
20392235 config MODULE_SIG
20402236 bool "Module signature verification"
2041
- depends on MODULES
2042
- select SYSTEM_DATA_VERIFICATION
2237
+ select MODULE_SIG_FORMAT
20432238 help
20442239 Check modules for valid signatures upon load: the signature
20452240 is simply appended to the module. For more information see
....@@ -2048,6 +2243,11 @@
20482243 Note that this option adds the OpenSSL development packages as a
20492244 kernel build dependency so that the signing tool can use its crypto
20502245 library.
2246
+
2247
+ You should enable this option if you wish to use either
2248
+ CONFIG_SECURITY_LOCKDOWN_LSM or lockdown functionality imposed via
2249
+ another LSM - otherwise unsigned modules will be loadable regardless
2250
+ of the lockdown policy.
20512251
20522252 !!!WARNING!!! If you enable this option, you MUST make sure that the
20532253 module DOES NOT get stripped after being signed. This includes the
....@@ -2115,7 +2315,6 @@
21152315
21162316 config MODULE_COMPRESS
21172317 bool "Compress modules on installation"
2118
- depends on MODULES
21192318 help
21202319
21212320 Compresses kernel modules when 'make modules_install' is run; gzip or
....@@ -2151,9 +2350,38 @@
21512350
21522351 endchoice
21532352
2353
+config MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
2354
+ bool "Allow loading of modules with missing namespace imports"
2355
+ help
2356
+ Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in
2357
+ a namespace. A module that makes use of a symbol exported with such a
2358
+ namespace is required to import the namespace via MODULE_IMPORT_NS().
2359
+ There is no technical reason to enforce correct namespace imports,
2360
+ but it creates consistency between symbols defining namespaces and
2361
+ users importing namespaces they make use of. This option relaxes this
2362
+ requirement and lifts the enforcement when loading a module.
2363
+
2364
+ If unsure, say N.
2365
+
2366
+config UNUSED_SYMBOLS
2367
+ bool "Enable unused/obsolete exported symbols"
2368
+ default y if X86
2369
+ help
2370
+ Unused but exported symbols make the kernel needlessly bigger. For
2371
+ that reason most of these unused exports will soon be removed. This
2372
+ option is provided temporarily to provide a transition period in case
2373
+ some external kernel module needs one of these symbols anyway. If you
2374
+ encounter such a case in your module, consider if you are actually
2375
+ using the right API. (rationale: since nobody in the kernel is using
2376
+ this in a module, there is a pretty good chance it's actually the
2377
+ wrong interface to use). If you really need the symbol, please send a
2378
+ mail to the linux kernel mailing list mentioning the symbol and why
2379
+ you really need it, and what the merge plan to the mainline kernel for
2380
+ your module is.
2381
+
21542382 config TRIM_UNUSED_KSYMS
21552383 bool "Trim unused exported kernel symbols"
2156
- depends on MODULES && !UNUSED_SYMBOLS
2384
+ depends on !UNUSED_SYMBOLS
21572385 help
21582386 The kernel and some modules make many symbols available for
21592387 other modules to use via EXPORT_SYMBOL() and variants. Depending
....@@ -2214,6 +2442,9 @@
22142442
22152443 source "kernel/Kconfig.locks"
22162444
2445
+config ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
2446
+ bool
2447
+
22172448 config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
22182449 bool
22192450
....@@ -2227,4 +2458,6 @@
22272458 config ARCH_HAS_SYSCALL_WRAPPER
22282459 def_bool n
22292460
2461
+if !ROCKCHIP_MINI_KERNEL
22302462 source "init/Kconfig.gki"
2463
+endif