hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/Kconfig
....@@ -18,11 +18,20 @@
1818 select CRASH_CORE
1919 bool
2020
21
+config KEXEC_ELF
22
+ bool
23
+
2124 config HAVE_IMA_KEXEC
25
+ bool
26
+
27
+config SET_FS
2228 bool
2329
2430 config HOTPLUG_SMT
2531 bool
32
+
33
+config GENERIC_ENTRY
34
+ bool
2635
2736 config OPROFILE
2837 tristate "OProfile system profiling"
....@@ -69,11 +78,11 @@
6978 If in doubt, say "N".
7079
7180 config JUMP_LABEL
72
- bool "Optimize very unlikely/likely branches"
73
- depends on HAVE_ARCH_JUMP_LABEL
74
- depends on CC_HAS_ASM_GOTO
75
- help
76
- This option enables a transparent branch optimization that
81
+ bool "Optimize very unlikely/likely branches"
82
+ depends on HAVE_ARCH_JUMP_LABEL
83
+ depends on CC_HAS_ASM_GOTO
84
+ help
85
+ This option enables a transparent branch optimization that
7786 makes certain almost-always-true or almost-always-false branch
7887 conditions even cheaper to execute within the kernel.
7988
....@@ -81,7 +90,7 @@
8190 scheduler functionality, networking code and KVM have such
8291 branches and include support for this optimization technique.
8392
84
- If it is detected that the compiler has support for "asm goto",
93
+ If it is detected that the compiler has support for "asm goto",
8594 the kernel will compile such branches with just a nop
8695 instruction. When the condition flag is toggled to true, the
8796 nop will be converted to a jump instruction to execute the
....@@ -100,10 +109,16 @@
100109 help
101110 Boot time self-test of the branch patching code.
102111
112
+config STATIC_CALL_SELFTEST
113
+ bool "Static call selftest"
114
+ depends on HAVE_STATIC_CALL
115
+ help
116
+ Boot time self-test of the call patching code.
117
+
103118 config OPTPROBES
104119 def_bool y
105120 depends on KPROBES && HAVE_OPTPROBES
106
- select TASKS_RCU if PREEMPT
121
+ select TASKS_RCU if PREEMPTION
107122
108123 config KPROBES_ON_FTRACE
109124 def_bool y
....@@ -160,12 +175,12 @@
160175 problems with received packets if doing so would not help
161176 much.
162177
163
- See Documentation/unaligned-memory-access.txt for more
178
+ See Documentation/core-api/unaligned-memory-access.rst for more
164179 information on the topic of unaligned memory accesses.
165180
166181 config ARCH_USE_BUILTIN_BSWAP
167
- bool
168
- help
182
+ bool
183
+ help
169184 Modern versions of GCC (since 4.4) have builtin functions
170185 for handling byte-swapping. Using these, instead of the old
171186 inline assembler that the architecture code provides in the
....@@ -234,10 +249,10 @@
234249 bool
235250
236251 config GENERIC_SMP_IDLE_THREAD
237
- bool
252
+ bool
238253
239254 config GENERIC_IDLE_POLL_SETUP
240
- bool
255
+ bool
241256
242257 config ARCH_HAS_FORTIFY_SOURCE
243258 bool
....@@ -245,13 +260,42 @@
245260 An architecture should select this when it can successfully
246261 build and run with CONFIG_FORTIFY_SOURCE.
247262
263
+#
264
+# Select if the arch provides a historic keepinit alias for the retain_initrd
265
+# command line option
266
+#
267
+config ARCH_HAS_KEEPINITRD
268
+ bool
269
+
248270 # Select if arch has all set_memory_ro/rw/x/nx() functions in asm/cacheflush.h
249271 config ARCH_HAS_SET_MEMORY
250272 bool
251273
274
+# Select if arch has all set_direct_map_invalid/default() functions
275
+config ARCH_HAS_SET_DIRECT_MAP
276
+ bool
277
+
278
+#
279
+# Select if the architecture provides the arch_dma_set_uncached symbol to
280
+# either provide an uncached segement alias for a DMA allocation, or
281
+# to remap the page tables in place.
282
+#
283
+config ARCH_HAS_DMA_SET_UNCACHED
284
+ bool
285
+
286
+#
287
+# Select if the architectures provides the arch_dma_clear_uncached symbol
288
+# to undo an in-place page table remap for uncached access.
289
+#
290
+config ARCH_HAS_DMA_CLEAR_UNCACHED
291
+ bool
292
+
293
+config ARCH_HAS_CPU_FINALIZE_INIT
294
+ bool
295
+
252296 # Select if arch init_task must go in the __init_task_data section
253297 config ARCH_TASK_STRUCT_ON_STACK
254
- bool
298
+ bool
255299
256300 # Select if arch has its private alloc_task_struct() function
257301 config ARCH_TASK_STRUCT_ALLOCATOR
....@@ -276,6 +320,23 @@
276320 config ARCH_WANTS_DYNAMIC_TASK_STRUCT
277321 bool
278322
323
+config ARCH_32BIT_OFF_T
324
+ bool
325
+ depends on !64BIT
326
+ help
327
+ All new 32-bit architectures should have 64-bit off_t type on
328
+ userspace side which corresponds to the loff_t kernel type. This
329
+ is the requirement for modern ABIs. Some existing architectures
330
+ still support 32-bit off_t. This option is enabled for all such
331
+ architectures explicitly.
332
+
333
+config HAVE_ASM_MODVERSIONS
334
+ bool
335
+ help
336
+ This symbol should be selected by an architecure if it provides
337
+ <asm/asm-prototypes.h> to support the module versioning for symbols
338
+ exported from assembly code.
339
+
279340 config HAVE_REGS_AND_STACK_ACCESS_API
280341 bool
281342 help
....@@ -291,11 +352,12 @@
291352 This symbol should be selected by an architecture if it
292353 supports an implementation of restartable sequences.
293354
294
-config HAVE_CLK
355
+config HAVE_FUNCTION_ARG_ACCESS_API
295356 bool
296357 help
297
- The <linux/clk.h> calls support software clock gating and
298
- thus are a key power management tool on many systems.
358
+ This symbol should be selected by an architecure if it supports
359
+ the API needed to access function arguments from pt_regs,
360
+ declared in asm/ptrace.h
299361
300362 config HAVE_HW_BREAKPOINT
301363 bool
....@@ -360,11 +422,25 @@
360422 config HAVE_ARCH_JUMP_LABEL
361423 bool
362424
363
-config HAVE_RCU_TABLE_FREE
425
+config HAVE_ARCH_JUMP_LABEL_RELATIVE
364426 bool
365427
366
-config HAVE_RCU_TABLE_INVALIDATE
428
+config MMU_GATHER_TABLE_FREE
367429 bool
430
+
431
+config MMU_GATHER_RCU_TABLE_FREE
432
+ bool
433
+ select MMU_GATHER_TABLE_FREE
434
+
435
+config MMU_GATHER_PAGE_SIZE
436
+ bool
437
+
438
+config MMU_GATHER_NO_RANGE
439
+ bool
440
+
441
+config MMU_GATHER_NO_GATHER
442
+ bool
443
+ depends on MMU_GATHER_TABLE_FREE
368444
369445 config ARCH_WANT_IRQS_OFF_ACTIVATE_MM
370446 bool
....@@ -403,10 +479,23 @@
403479 select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
404480 bool
405481
406
-config HAVE_ARCH_SECCOMP_FILTER
482
+config HAVE_ARCH_SECCOMP
407483 bool
408484 help
485
+ An arch should select this symbol to support seccomp mode 1 (the fixed
486
+ syscall policy), and must provide an overrides for __NR_seccomp_sigreturn,
487
+ and compat syscalls if the asm-generic/seccomp.h defaults need adjustment:
488
+ - __NR_seccomp_read_32
489
+ - __NR_seccomp_write_32
490
+ - __NR_seccomp_exit_32
491
+ - __NR_seccomp_sigreturn_32
492
+
493
+config HAVE_ARCH_SECCOMP_FILTER
494
+ bool
495
+ select HAVE_ARCH_SECCOMP
496
+ help
409497 An arch should select this symbol if it provides all of these things:
498
+ - all the requirements for HAVE_ARCH_SECCOMP
410499 - syscall_get_arch()
411500 - syscall_get_arguments()
412501 - syscall_rollback()
....@@ -416,6 +505,23 @@
416505 - secure_computing return value is checked and a return value of -1
417506 results in the system call being skipped immediately.
418507 - seccomp syscall wired up
508
+
509
+config SECCOMP
510
+ prompt "Enable seccomp to safely execute untrusted bytecode"
511
+ def_bool y
512
+ depends on HAVE_ARCH_SECCOMP
513
+ help
514
+ This kernel feature is useful for number crunching applications
515
+ that may need to handle untrusted bytecode during their
516
+ execution. By using pipes or other transports made available
517
+ to the process as file descriptors supporting the read/write
518
+ syscalls, it's possible to isolate those applications in their
519
+ own address space using seccomp. Once seccomp is enabled via
520
+ prctl(PR_SET_SECCOMP) or the seccomp() syscall, it cannot be
521
+ disabled and the task is only allowed to execute a few safe
522
+ syscalls defined by each seccomp mode.
523
+
524
+ If unsure, say Y.
419525
420526 config SECCOMP_FILTER
421527 def_bool y
....@@ -427,14 +533,18 @@
427533
428534 See Documentation/userspace-api/seccomp_filter.rst for details.
429535
536
+config HAVE_ARCH_STACKLEAK
537
+ bool
538
+ help
539
+ An architecture should select this if it has the code which
540
+ fills the used part of the kernel stack with the STACKLEAK_POISON
541
+ value before returning from system calls.
542
+
430543 config HAVE_STACKPROTECTOR
431544 bool
432545 help
433546 An arch should select this symbol if:
434547 - it has implemented a stack canary (e.g. __stack_chk_guard)
435
-
436
-config CC_HAS_STACKPROTECTOR_NONE
437
- def_bool $(cc-option,-fno-stack-protector)
438548
439549 config STACKPROTECTOR
440550 bool "Stack Protector buffer overflow detection"
....@@ -482,117 +592,143 @@
482592 about 20% of all kernel functions, which increases the kernel code
483593 size by about 2%.
484594
595
+config ARCH_SUPPORTS_SHADOW_CALL_STACK
596
+ bool
597
+ help
598
+ An architecture should select this if it supports Clang's Shadow
599
+ Call Stack and implements runtime support for shadow stack
600
+ switching.
601
+
602
+config SHADOW_CALL_STACK
603
+ bool "Clang Shadow Call Stack"
604
+ depends on CC_IS_CLANG && ARCH_SUPPORTS_SHADOW_CALL_STACK
605
+ depends on DYNAMIC_FTRACE_WITH_REGS || !FUNCTION_GRAPH_TRACER
606
+ help
607
+ This option enables Clang's Shadow Call Stack, which uses a
608
+ shadow stack to protect function return addresses from being
609
+ overwritten by an attacker. More information can be found in
610
+ Clang's documentation:
611
+
612
+ https://clang.llvm.org/docs/ShadowCallStack.html
613
+
614
+ Note that security guarantees in the kernel differ from the
615
+ ones documented for user space. The kernel must store addresses
616
+ of shadow stacks in memory, which means an attacker capable of
617
+ reading and writing arbitrary memory may be able to locate them
618
+ and hijack control flow by modifying the stacks.
619
+
485620 config LTO
486
- def_bool n
621
+ bool
622
+ help
623
+ Selected if the kernel will be built using the compiler's LTO feature.
624
+
625
+config LTO_CLANG
626
+ bool
627
+ select LTO
628
+ help
629
+ Selected if the kernel will be built using Clang's LTO feature.
487630
488631 config ARCH_SUPPORTS_LTO_CLANG
489632 bool
490633 help
491634 An architecture should select this option if it supports:
492
- - compiling with clang,
493
- - compiling inline assembly with clang's integrated assembler,
635
+ - compiling with Clang,
636
+ - compiling inline assembly with Clang's integrated assembler,
494637 - and linking with LLD.
495638
496
-config ARCH_SUPPORTS_THINLTO
639
+config ARCH_SUPPORTS_LTO_CLANG_THIN
497640 bool
498641 help
499
- An architecture should select this if it supports clang's ThinLTO.
642
+ An architecture should select this option if it can support Clang's
643
+ ThinLTO mode.
500644
501
-config THINLTO
502
- bool "Use clang ThinLTO (EXPERIMENTAL)"
503
- depends on LTO_CLANG && ARCH_SUPPORTS_THINLTO
504
- default y
645
+config HAS_LTO_CLANG
646
+ def_bool y
647
+ # Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
648
+ depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD
649
+ depends on $(success,test $(LLVM) -eq 1)
650
+ depends on $(success,test $(LLVM_IAS) -eq 1)
651
+ depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
652
+ depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
653
+ depends on ARCH_SUPPORTS_LTO_CLANG
654
+ depends on !FTRACE_MCOUNT_USE_RECORDMCOUNT
655
+ depends on !KASAN || KASAN_HW_TAGS
656
+ depends on !GCOV_KERNEL
505657 help
506
- Use ThinLTO to speed up Link Time Optimization.
658
+ The compiler and Kconfig options support building with Clang's
659
+ LTO.
507660
508661 choice
509
- prompt "Link-Time Optimization (LTO) (EXPERIMENTAL)"
662
+ prompt "Link Time Optimization (LTO)"
510663 default LTO_NONE
511664 help
512
- This option turns on Link-Time Optimization (LTO).
665
+ This option enables Link Time Optimization (LTO), which allows the
666
+ compiler to optimize binaries globally.
667
+
668
+ If unsure, select LTO_NONE. Note that LTO is very resource-intensive
669
+ so it's disabled by default.
513670
514671 config LTO_NONE
515672 bool "None"
516
-
517
-config LTO_CLANG
518
- bool "Use clang Link Time Optimization (LTO) (EXPERIMENTAL)"
519
- depends on ARCH_SUPPORTS_LTO_CLANG
520
- depends on !FTRACE_MCOUNT_RECORD || HAVE_C_RECORDMCOUNT
521
- depends on !KASAN
522
- depends on CC_IS_CLANG && LD_IS_LLD
523
- select LTO
524673 help
525
- This option enables clang's Link Time Optimization (LTO), which allows
526
- the compiler to optimize the kernel globally at link time. If you
527
- enable this option, the compiler generates LLVM IR instead of object
528
- files, and the actual compilation from IR occurs at the LTO link step,
529
- which may take several minutes.
674
+ Build the kernel normally, without Link Time Optimization (LTO).
530675
531
- If you select this option, you must compile the kernel with clang and
532
- LLD.
676
+config LTO_CLANG_FULL
677
+ bool "Clang Full LTO (EXPERIMENTAL)"
678
+ depends on HAS_LTO_CLANG
679
+ depends on !COMPILE_TEST
680
+ select LTO_CLANG
681
+ help
682
+ This option enables Clang's full Link Time Optimization (LTO), which
683
+ allows the compiler to optimize the kernel globally. If you enable
684
+ this option, the compiler generates LLVM bitcode instead of ELF
685
+ object files, and the actual compilation from bitcode happens at
686
+ the LTO link step, which may take several minutes depending on the
687
+ kernel configuration. More information can be found from LLVM's
688
+ documentation:
533689
690
+ https://llvm.org/docs/LinkTimeOptimization.html
691
+
692
+ During link time, this option can use a large amount of RAM, and
693
+ may take much longer than the ThinLTO option.
694
+
695
+config LTO_CLANG_THIN
696
+ bool "Clang ThinLTO (EXPERIMENTAL)"
697
+ depends on HAS_LTO_CLANG && ARCH_SUPPORTS_LTO_CLANG_THIN
698
+ select LTO_CLANG
699
+ help
700
+ This option enables Clang's ThinLTO, which allows for parallel
701
+ optimization and faster incremental compiles compared to the
702
+ CONFIG_LTO_CLANG_FULL option. More information can be found
703
+ from Clang's documentation:
704
+
705
+ https://clang.llvm.org/docs/ThinLTO.html
706
+
707
+ If unsure, say Y.
534708 endchoice
535709
536
-config CFI
537
- bool
538
-
539
-config CFI_PERMISSIVE
540
- bool "Use CFI in permissive mode"
541
- depends on CFI
542
- help
543
- When selected, Control Flow Integrity (CFI) violations result in a
544
- warning instead of a kernel panic. This option is useful for finding
545
- CFI violations in drivers during development.
546
-
547710 config CFI_CLANG
548
- bool "Use clang Control Flow Integrity (CFI) (EXPERIMENTAL)"
549
- depends on LTO_CLANG
550
- depends on KALLSYMS
551
- select CFI
711
+ bool "Use Clang's Control Flow Integrity (CFI)"
712
+ depends on LTO_CLANG && KALLSYMS
552713 help
553
- This option enables clang Control Flow Integrity (CFI), which adds
714
+ This option enables Clang's Control Flow Integrity (CFI), which adds
554715 runtime checking for indirect function calls.
555716
556717 config CFI_CLANG_SHADOW
557718 bool "Use CFI shadow to speed up cross-module checks"
558719 default y
559
- depends on CFI_CLANG
720
+ depends on CFI_CLANG && MODULES
560721 help
561722 If you select this option, the kernel builds a fast look-up table of
562723 CFI check functions in loaded modules to reduce overhead.
563724
564
-config ARCH_SUPPORTS_SHADOW_CALL_STACK
565
- bool
725
+config CFI_PERMISSIVE
726
+ bool "Use CFI in permissive mode"
727
+ depends on CFI_CLANG
566728 help
567
- An architecture should select this if it supports Clang's Shadow
568
- Call Stack, has asm/scs.h, and implements runtime support for shadow
569
- stack switching.
570
-
571
-config SHADOW_CALL_STACK
572
- bool "Clang Shadow Call Stack"
573
- depends on ARCH_SUPPORTS_SHADOW_CALL_STACK
574
- help
575
- This option enables Clang's Shadow Call Stack, which uses a
576
- shadow stack to protect function return addresses from being
577
- overwritten by an attacker. More information can be found from
578
- Clang's documentation:
579
-
580
- https://clang.llvm.org/docs/ShadowCallStack.html
581
-
582
- Note that security guarantees in the kernel differ from the ones
583
- documented for user space. The kernel must store addresses of shadow
584
- stacks used by other tasks and interrupt handlers in memory, which
585
- means an attacker capable reading and writing arbitrary memory may
586
- be able to locate them and hijack control flow by modifying shadow
587
- stacks that are not currently in use.
588
-
589
-config SHADOW_CALL_STACK_VMAP
590
- bool "Use virtually mapped shadow call stacks"
591
- depends on SHADOW_CALL_STACK
592
- help
593
- Use virtually mapped shadow call stacks. Selecting this option
594
- provides better stack exhaustion protection, but increases per-thread
595
- memory consumption as a full page is allocated for each shadow stack.
729
+ When selected, Control Flow Integrity (CFI) violations result in a
730
+ warning instead of a kernel panic. This option is useful for finding
731
+ CFI violations during development.
596732
597733 config HAVE_ARCH_WITHIN_STACK_FRAMES
598734 bool
....@@ -608,11 +744,17 @@
608744 help
609745 Provide kernel/user boundaries probes necessary for subsystems
610746 that need it, such as userspace RCU extended quiescent state.
611
- Syscalls need to be wrapped inside user_exit()-user_enter() through
612
- the slow path using TIF_NOHZ flag. Exceptions handlers must be
613
- wrapped as well. Irqs are already protected inside
614
- rcu_irq_enter/rcu_irq_exit() but preemption or signal handling on
615
- irq exit still need to be protected.
747
+ Syscalls need to be wrapped inside user_exit()-user_enter(), either
748
+ optimized behind static key or through the slow path using TIF_NOHZ
749
+ flag. Exceptions handlers must be wrapped as well. Irqs are already
750
+ protected inside rcu_irq_enter/rcu_irq_exit() but preemption or signal
751
+ handling on irq exit still need to be protected.
752
+
753
+config HAVE_TIF_NOHZ
754
+ bool
755
+ help
756
+ Arch relies on TIF_NOHZ and syscall slow path to implement context
757
+ tracking calls to user_enter()/user_exit().
616758
617759 config HAVE_VIRT_CPU_ACCOUNTING
618760 bool
....@@ -638,6 +780,18 @@
638780 Archs need to ensure they use a high enough resolution clock to
639781 support irq time accounting and then call enable_sched_clock_irqtime().
640782
783
+config HAVE_MOVE_PUD
784
+ bool
785
+ help
786
+ Architectures that select this are able to move page tables at the
787
+ PUD level. If there are only 3 page table levels, the move effectively
788
+ happens at the PGD level.
789
+
790
+config HAVE_MOVE_PMD
791
+ bool
792
+ help
793
+ Archs that select this are able to move page tables at the PMD level.
794
+
641795 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
642796 bool
643797
....@@ -645,6 +799,9 @@
645799 bool
646800
647801 config HAVE_ARCH_HUGE_VMAP
802
+ bool
803
+
804
+config ARCH_WANT_HUGE_PMD_SHARE
648805 bool
649806
650807 config HAVE_ARCH_SOFT_DIRTY
....@@ -771,12 +928,16 @@
771928 and vice-versa 32-bit applications to call 64-bit mmap().
772929 Required for applications doing different bitness syscalls.
773930
774
-config HAVE_COPY_THREAD_TLS
931
+# This allows to use a set of generic functions to determine mmap base
932
+# address by giving priority to top-down scheme only if the process
933
+# is not in legacy mode (compat task, unlimited stack size or
934
+# sysctl_legacy_va_layout).
935
+# Architecture that selects this option can provide its own version of:
936
+# - STACK_RND_MASK
937
+config ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
775938 bool
776
- help
777
- Architecture provides copy_thread_tls to accept tls argument via
778
- normal C parameter passing, rather than extracting the syscall
779
- argument from pt_regs.
939
+ depends on MMU
940
+ select ARCH_HAS_ELF_RANDOMIZE
780941
781942 config HAVE_STACK_VALIDATION
782943 bool
....@@ -787,8 +948,9 @@
787948 config HAVE_RELIABLE_STACKTRACE
788949 bool
789950 help
790
- Architecture has a save_stack_trace_tsk_reliable() function which
791
- only returns a stack trace if it can guarantee the trace is reliable.
951
+ Architecture has either save_stack_trace_tsk_reliable() or
952
+ arch_stack_walk_reliable() function which only returns a stack trace
953
+ if it can guarantee the trace is reliable.
792954
793955 config HAVE_ARCH_HASH
794956 bool
....@@ -797,6 +959,9 @@
797959 If this is set, the architecture provides an <asm/hash.h>
798960 file which provides platform-specific implementations of some
799961 functions in <linux/hash.h> or fs/namei.c.
962
+
963
+config HAVE_ARCH_NVRAM_OPS
964
+ bool
800965
801966 config ISA_BUS_API
802967 def_bool ISA
....@@ -847,25 +1012,18 @@
8471012 config COMPAT_OLD_SIGACTION
8481013 bool
8491014
850
-config 64BIT_TIME
851
- def_bool ARCH_HAS_64BIT_TIME
852
- help
853
- This should be selected by all architectures that need to support
854
- new system calls with a 64-bit time_t. This is relevant on all 32-bit
855
- architectures, and 64-bit architectures as part of compat syscall
856
- handling.
857
-
8581015 config COMPAT_32BIT_TIME
859
- def_bool (!64BIT && 64BIT_TIME) || COMPAT
1016
+ bool "Provide system calls for 32-bit time_t"
1017
+ default !64BIT || COMPAT
8601018 help
8611019 This enables 32 bit time_t support in addition to 64 bit time_t support.
8621020 This is relevant on all 32-bit architectures, and 64-bit architectures
8631021 as part of compat syscall handling.
8641022
865
-config ARCH_NO_COHERENT_DMA_MMAP
1023
+config ARCH_NO_PREEMPT
8661024 bool
8671025
868
-config ARCH_NO_PREEMPT
1026
+config ARCH_SUPPORTS_RT
8691027 bool
8701028
8711029 config CPU_NO_EFFICIENT_FFS
....@@ -894,16 +1052,17 @@
8941052 config VMAP_STACK
8951053 default y
8961054 bool "Use a virtually-mapped stack"
897
- depends on HAVE_ARCH_VMAP_STACK && !KASAN
898
- ---help---
1055
+ depends on HAVE_ARCH_VMAP_STACK
1056
+ depends on !KASAN || KASAN_HW_TAGS || KASAN_VMALLOC
1057
+ help
8991058 Enable this if you want the use virtually-mapped kernel stacks
9001059 with guard pages. This causes kernel stack overflows to be
9011060 caught immediately rather than causing difficult-to-diagnose
9021061 corruption.
9031062
904
- This is presently incompatible with KASAN because KASAN expects
905
- the stack to map directly to the KASAN shadow map using a formula
906
- that is incorrect if the stack is in vmalloc space.
1063
+ To use this with software KASAN modes, the architecture must support
1064
+ backing virtual mappings with real shadow memory, and KASAN_VMALLOC
1065
+ must be enabled.
9071066
9081067 config ARCH_OPTIONAL_KERNEL_RWX
9091068 def_bool n
....@@ -943,27 +1102,6 @@
9431102 config ARCH_HAS_PHYS_TO_DMA
9441103 bool
9451104
946
-config ARCH_HAS_REFCOUNT
947
- bool
948
- help
949
- An architecture selects this when it has implemented refcount_t
950
- using open coded assembly primitives that provide an optimized
951
- refcount_t implementation, possibly at the expense of some full
952
- refcount state checks of CONFIG_REFCOUNT_FULL=y.
953
-
954
- The refcount overflow check behavior, however, must be retained.
955
- Catching overflows is the primary security concern for protecting
956
- against bugs in reference counts.
957
-
958
-config REFCOUNT_FULL
959
- bool "Perform full reference count validation at the expense of speed"
960
- help
961
- Enabling this switches the refcounting infrastructure from a fast
962
- unchecked atomic_t implementation to a fully state checked
963
- implementation, which can be (slightly) slower but provides protections
964
- against various use-after-free conditions that can be used in
965
- security flaw exploits.
966
-
9671105 config HAVE_ARCH_COMPILER_H
9681106 bool
9691107 help
....@@ -985,6 +1123,15 @@
9851123 config ARCH_USE_MEMREMAP_PROT
9861124 bool
9871125
1126
+config LOCK_EVENT_COUNTS
1127
+ bool "Locking event counts collection"
1128
+ depends on DEBUG_FS
1129
+ help
1130
+ Enable light-weight counting of various locking related events
1131
+ in the system with minimal performance impact. This reduces
1132
+ the chance of application behavior change because of timing
1133
+ differences. The counts are reported via debugfs.
1134
+
9881135 # Select if the architecture has support for applying RELR relocations.
9891136 config ARCH_HAS_RELR
9901137 bool
....@@ -999,6 +1146,45 @@
9991146 well as compatible NM and OBJCOPY utilities (llvm-nm and llvm-objcopy
10001147 are compatible).
10011148
1149
+config ARCH_HAS_MEM_ENCRYPT
1150
+ bool
1151
+
1152
+config ARCH_HAS_CC_PLATFORM
1153
+ bool
1154
+
1155
+config HAVE_SPARSE_SYSCALL_NR
1156
+ bool
1157
+ help
1158
+ An architecture should select this if its syscall numbering is sparse
1159
+ to save space. For example, MIPS architecture has a syscall array with
1160
+ entries at 4000, 5000 and 6000 locations. This option turns on syscall
1161
+ related optimizations for a given architecture.
1162
+
1163
+config ARCH_HAS_VDSO_DATA
1164
+ bool
1165
+
1166
+config HAVE_STATIC_CALL
1167
+ bool
1168
+
1169
+config HAVE_STATIC_CALL_INLINE
1170
+ bool
1171
+ depends on HAVE_STATIC_CALL
1172
+
1173
+config ARCH_WANT_LD_ORPHAN_WARN
1174
+ bool
1175
+ help
1176
+ An arch should select this symbol once all linker sections are explicitly
1177
+ included, size-asserted, or discarded in the linker scripts. This is
1178
+ important because we never want expected sections to be placed heuristically
1179
+ by the linker, since the locations of such sections can change between linker
1180
+ versions.
1181
+
1182
+config ARCH_SPLIT_ARG64
1183
+ bool
1184
+ help
1185
+ If a 32-bit architecture requires 64-bit arguments to be split into
1186
+ pairs of 32-bit arguments, select this option.
1187
+
10021188 source "kernel/gcov/Kconfig"
10031189
10041190 source "scripts/gcc-plugins/Kconfig"