hc
2023-12-09 958e46acc8e900e8569dd467c1af9b8d2d019394
kernel/arch/Kconfig
....@@ -18,17 +18,26 @@
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
2632
33
+config GENERIC_ENTRY
34
+ bool
35
+
2736 config OPROFILE
2837 tristate "OProfile system profiling"
2938 depends on PROFILING
3039 depends on HAVE_OPROFILE
31
- depends on !PREEMPT_RT_FULL
40
+ depends on !PREEMPT_RT
3241 select RING_BUFFER
3342 select RING_BUFFER_ALLOW_SWAP
3443 help
....@@ -70,11 +79,11 @@
7079 If in doubt, say "N".
7180
7281 config JUMP_LABEL
73
- bool "Optimize very unlikely/likely branches"
74
- depends on HAVE_ARCH_JUMP_LABEL
75
- depends on CC_HAS_ASM_GOTO
76
- help
77
- This option enables a transparent branch optimization that
82
+ bool "Optimize very unlikely/likely branches"
83
+ depends on HAVE_ARCH_JUMP_LABEL
84
+ depends on CC_HAS_ASM_GOTO
85
+ help
86
+ This option enables a transparent branch optimization that
7887 makes certain almost-always-true or almost-always-false branch
7988 conditions even cheaper to execute within the kernel.
8089
....@@ -82,7 +91,7 @@
8291 scheduler functionality, networking code and KVM have such
8392 branches and include support for this optimization technique.
8493
85
- If it is detected that the compiler has support for "asm goto",
94
+ If it is detected that the compiler has support for "asm goto",
8695 the kernel will compile such branches with just a nop
8796 instruction. When the condition flag is toggled to true, the
8897 nop will be converted to a jump instruction to execute the
....@@ -101,10 +110,16 @@
101110 help
102111 Boot time self-test of the branch patching code.
103112
113
+config STATIC_CALL_SELFTEST
114
+ bool "Static call selftest"
115
+ depends on HAVE_STATIC_CALL
116
+ help
117
+ Boot time self-test of the call patching code.
118
+
104119 config OPTPROBES
105120 def_bool y
106121 depends on KPROBES && HAVE_OPTPROBES
107
- select TASKS_RCU if PREEMPT
122
+ select TASKS_RCU if PREEMPTION
108123
109124 config KPROBES_ON_FTRACE
110125 def_bool y
....@@ -161,12 +176,12 @@
161176 problems with received packets if doing so would not help
162177 much.
163178
164
- See Documentation/unaligned-memory-access.txt for more
179
+ See Documentation/core-api/unaligned-memory-access.rst for more
165180 information on the topic of unaligned memory accesses.
166181
167182 config ARCH_USE_BUILTIN_BSWAP
168
- bool
169
- help
183
+ bool
184
+ help
170185 Modern versions of GCC (since 4.4) have builtin functions
171186 for handling byte-swapping. Using these, instead of the old
172187 inline assembler that the architecture code provides in the
....@@ -235,10 +250,10 @@
235250 bool
236251
237252 config GENERIC_SMP_IDLE_THREAD
238
- bool
253
+ bool
239254
240255 config GENERIC_IDLE_POLL_SETUP
241
- bool
256
+ bool
242257
243258 config ARCH_HAS_FORTIFY_SOURCE
244259 bool
....@@ -246,13 +261,39 @@
246261 An architecture should select this when it can successfully
247262 build and run with CONFIG_FORTIFY_SOURCE.
248263
264
+#
265
+# Select if the arch provides a historic keepinit alias for the retain_initrd
266
+# command line option
267
+#
268
+config ARCH_HAS_KEEPINITRD
269
+ bool
270
+
249271 # Select if arch has all set_memory_ro/rw/x/nx() functions in asm/cacheflush.h
250272 config ARCH_HAS_SET_MEMORY
251273 bool
252274
275
+# Select if arch has all set_direct_map_invalid/default() functions
276
+config ARCH_HAS_SET_DIRECT_MAP
277
+ bool
278
+
279
+#
280
+# Select if the architecture provides the arch_dma_set_uncached symbol to
281
+# either provide an uncached segement alias for a DMA allocation, or
282
+# to remap the page tables in place.
283
+#
284
+config ARCH_HAS_DMA_SET_UNCACHED
285
+ bool
286
+
287
+#
288
+# Select if the architectures provides the arch_dma_clear_uncached symbol
289
+# to undo an in-place page table remap for uncached access.
290
+#
291
+config ARCH_HAS_DMA_CLEAR_UNCACHED
292
+ bool
293
+
253294 # Select if arch init_task must go in the __init_task_data section
254295 config ARCH_TASK_STRUCT_ON_STACK
255
- bool
296
+ bool
256297
257298 # Select if arch has its private alloc_task_struct() function
258299 config ARCH_TASK_STRUCT_ALLOCATOR
....@@ -277,6 +318,23 @@
277318 config ARCH_WANTS_DYNAMIC_TASK_STRUCT
278319 bool
279320
321
+config ARCH_32BIT_OFF_T
322
+ bool
323
+ depends on !64BIT
324
+ help
325
+ All new 32-bit architectures should have 64-bit off_t type on
326
+ userspace side which corresponds to the loff_t kernel type. This
327
+ is the requirement for modern ABIs. Some existing architectures
328
+ still support 32-bit off_t. This option is enabled for all such
329
+ architectures explicitly.
330
+
331
+config HAVE_ASM_MODVERSIONS
332
+ bool
333
+ help
334
+ This symbol should be selected by an architecure if it provides
335
+ <asm/asm-prototypes.h> to support the module versioning for symbols
336
+ exported from assembly code.
337
+
280338 config HAVE_REGS_AND_STACK_ACCESS_API
281339 bool
282340 help
....@@ -292,11 +350,12 @@
292350 This symbol should be selected by an architecture if it
293351 supports an implementation of restartable sequences.
294352
295
-config HAVE_CLK
353
+config HAVE_FUNCTION_ARG_ACCESS_API
296354 bool
297355 help
298
- The <linux/clk.h> calls support software clock gating and
299
- thus are a key power management tool on many systems.
356
+ This symbol should be selected by an architecure if it supports
357
+ the API needed to access function arguments from pt_regs,
358
+ declared in asm/ptrace.h
300359
301360 config HAVE_HW_BREAKPOINT
302361 bool
....@@ -361,11 +420,25 @@
361420 config HAVE_ARCH_JUMP_LABEL
362421 bool
363422
364
-config HAVE_RCU_TABLE_FREE
423
+config HAVE_ARCH_JUMP_LABEL_RELATIVE
365424 bool
366425
367
-config HAVE_RCU_TABLE_INVALIDATE
426
+config MMU_GATHER_TABLE_FREE
368427 bool
428
+
429
+config MMU_GATHER_RCU_TABLE_FREE
430
+ bool
431
+ select MMU_GATHER_TABLE_FREE
432
+
433
+config MMU_GATHER_PAGE_SIZE
434
+ bool
435
+
436
+config MMU_GATHER_NO_RANGE
437
+ bool
438
+
439
+config MMU_GATHER_NO_GATHER
440
+ bool
441
+ depends on MMU_GATHER_TABLE_FREE
369442
370443 config ARCH_WANT_IRQS_OFF_ACTIVATE_MM
371444 bool
....@@ -404,10 +477,23 @@
404477 select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
405478 bool
406479
407
-config HAVE_ARCH_SECCOMP_FILTER
480
+config HAVE_ARCH_SECCOMP
408481 bool
409482 help
483
+ An arch should select this symbol to support seccomp mode 1 (the fixed
484
+ syscall policy), and must provide an overrides for __NR_seccomp_sigreturn,
485
+ and compat syscalls if the asm-generic/seccomp.h defaults need adjustment:
486
+ - __NR_seccomp_read_32
487
+ - __NR_seccomp_write_32
488
+ - __NR_seccomp_exit_32
489
+ - __NR_seccomp_sigreturn_32
490
+
491
+config HAVE_ARCH_SECCOMP_FILTER
492
+ bool
493
+ select HAVE_ARCH_SECCOMP
494
+ help
410495 An arch should select this symbol if it provides all of these things:
496
+ - all the requirements for HAVE_ARCH_SECCOMP
411497 - syscall_get_arch()
412498 - syscall_get_arguments()
413499 - syscall_rollback()
....@@ -417,6 +503,23 @@
417503 - secure_computing return value is checked and a return value of -1
418504 results in the system call being skipped immediately.
419505 - seccomp syscall wired up
506
+
507
+config SECCOMP
508
+ prompt "Enable seccomp to safely execute untrusted bytecode"
509
+ def_bool y
510
+ depends on HAVE_ARCH_SECCOMP
511
+ help
512
+ This kernel feature is useful for number crunching applications
513
+ that may need to handle untrusted bytecode during their
514
+ execution. By using pipes or other transports made available
515
+ to the process as file descriptors supporting the read/write
516
+ syscalls, it's possible to isolate those applications in their
517
+ own address space using seccomp. Once seccomp is enabled via
518
+ prctl(PR_SET_SECCOMP) or the seccomp() syscall, it cannot be
519
+ disabled and the task is only allowed to execute a few safe
520
+ syscalls defined by each seccomp mode.
521
+
522
+ If unsure, say Y.
420523
421524 config SECCOMP_FILTER
422525 def_bool y
....@@ -428,14 +531,18 @@
428531
429532 See Documentation/userspace-api/seccomp_filter.rst for details.
430533
534
+config HAVE_ARCH_STACKLEAK
535
+ bool
536
+ help
537
+ An architecture should select this if it has the code which
538
+ fills the used part of the kernel stack with the STACKLEAK_POISON
539
+ value before returning from system calls.
540
+
431541 config HAVE_STACKPROTECTOR
432542 bool
433543 help
434544 An arch should select this symbol if:
435545 - it has implemented a stack canary (e.g. __stack_chk_guard)
436
-
437
-config CC_HAS_STACKPROTECTOR_NONE
438
- def_bool $(cc-option,-fno-stack-protector)
439546
440547 config STACKPROTECTOR
441548 bool "Stack Protector buffer overflow detection"
....@@ -483,117 +590,143 @@
483590 about 20% of all kernel functions, which increases the kernel code
484591 size by about 2%.
485592
593
+config ARCH_SUPPORTS_SHADOW_CALL_STACK
594
+ bool
595
+ help
596
+ An architecture should select this if it supports Clang's Shadow
597
+ Call Stack and implements runtime support for shadow stack
598
+ switching.
599
+
600
+config SHADOW_CALL_STACK
601
+ bool "Clang Shadow Call Stack"
602
+ depends on CC_IS_CLANG && ARCH_SUPPORTS_SHADOW_CALL_STACK
603
+ depends on DYNAMIC_FTRACE_WITH_REGS || !FUNCTION_GRAPH_TRACER
604
+ help
605
+ This option enables Clang's Shadow Call Stack, which uses a
606
+ shadow stack to protect function return addresses from being
607
+ overwritten by an attacker. More information can be found in
608
+ Clang's documentation:
609
+
610
+ https://clang.llvm.org/docs/ShadowCallStack.html
611
+
612
+ Note that security guarantees in the kernel differ from the
613
+ ones documented for user space. The kernel must store addresses
614
+ of shadow stacks in memory, which means an attacker capable of
615
+ reading and writing arbitrary memory may be able to locate them
616
+ and hijack control flow by modifying the stacks.
617
+
486618 config LTO
487
- def_bool n
619
+ bool
620
+ help
621
+ Selected if the kernel will be built using the compiler's LTO feature.
622
+
623
+config LTO_CLANG
624
+ bool
625
+ select LTO
626
+ help
627
+ Selected if the kernel will be built using Clang's LTO feature.
488628
489629 config ARCH_SUPPORTS_LTO_CLANG
490630 bool
491631 help
492632 An architecture should select this option if it supports:
493
- - compiling with clang,
494
- - compiling inline assembly with clang's integrated assembler,
633
+ - compiling with Clang,
634
+ - compiling inline assembly with Clang's integrated assembler,
495635 - and linking with LLD.
496636
497
-config ARCH_SUPPORTS_THINLTO
637
+config ARCH_SUPPORTS_LTO_CLANG_THIN
498638 bool
499639 help
500
- An architecture should select this if it supports clang's ThinLTO.
640
+ An architecture should select this option if it can support Clang's
641
+ ThinLTO mode.
501642
502
-config THINLTO
503
- bool "Use clang ThinLTO (EXPERIMENTAL)"
504
- depends on LTO_CLANG && ARCH_SUPPORTS_THINLTO
505
- default y
643
+config HAS_LTO_CLANG
644
+ def_bool y
645
+ # Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
646
+ depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD
647
+ depends on $(success,test $(LLVM) -eq 1)
648
+ depends on $(success,test $(LLVM_IAS) -eq 1)
649
+ depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
650
+ depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
651
+ depends on ARCH_SUPPORTS_LTO_CLANG
652
+ depends on !FTRACE_MCOUNT_USE_RECORDMCOUNT
653
+ depends on !KASAN || KASAN_HW_TAGS
654
+ depends on !GCOV_KERNEL
506655 help
507
- Use ThinLTO to speed up Link Time Optimization.
656
+ The compiler and Kconfig options support building with Clang's
657
+ LTO.
508658
509659 choice
510
- prompt "Link-Time Optimization (LTO) (EXPERIMENTAL)"
660
+ prompt "Link Time Optimization (LTO)"
511661 default LTO_NONE
512662 help
513
- This option turns on Link-Time Optimization (LTO).
663
+ This option enables Link Time Optimization (LTO), which allows the
664
+ compiler to optimize binaries globally.
665
+
666
+ If unsure, select LTO_NONE. Note that LTO is very resource-intensive
667
+ so it's disabled by default.
514668
515669 config LTO_NONE
516670 bool "None"
517
-
518
-config LTO_CLANG
519
- bool "Use clang Link Time Optimization (LTO) (EXPERIMENTAL)"
520
- depends on ARCH_SUPPORTS_LTO_CLANG
521
- depends on !FTRACE_MCOUNT_RECORD || HAVE_C_RECORDMCOUNT
522
- depends on !KASAN
523
- depends on CC_IS_CLANG && LD_IS_LLD
524
- select LTO
525671 help
526
- This option enables clang's Link Time Optimization (LTO), which allows
527
- the compiler to optimize the kernel globally at link time. If you
528
- enable this option, the compiler generates LLVM IR instead of object
529
- files, and the actual compilation from IR occurs at the LTO link step,
530
- which may take several minutes.
672
+ Build the kernel normally, without Link Time Optimization (LTO).
531673
532
- If you select this option, you must compile the kernel with clang and
533
- LLD.
674
+config LTO_CLANG_FULL
675
+ bool "Clang Full LTO (EXPERIMENTAL)"
676
+ depends on HAS_LTO_CLANG
677
+ depends on !COMPILE_TEST
678
+ select LTO_CLANG
679
+ help
680
+ This option enables Clang's full Link Time Optimization (LTO), which
681
+ allows the compiler to optimize the kernel globally. If you enable
682
+ this option, the compiler generates LLVM bitcode instead of ELF
683
+ object files, and the actual compilation from bitcode happens at
684
+ the LTO link step, which may take several minutes depending on the
685
+ kernel configuration. More information can be found from LLVM's
686
+ documentation:
534687
688
+ https://llvm.org/docs/LinkTimeOptimization.html
689
+
690
+ During link time, this option can use a large amount of RAM, and
691
+ may take much longer than the ThinLTO option.
692
+
693
+config LTO_CLANG_THIN
694
+ bool "Clang ThinLTO (EXPERIMENTAL)"
695
+ depends on HAS_LTO_CLANG && ARCH_SUPPORTS_LTO_CLANG_THIN
696
+ select LTO_CLANG
697
+ help
698
+ This option enables Clang's ThinLTO, which allows for parallel
699
+ optimization and faster incremental compiles compared to the
700
+ CONFIG_LTO_CLANG_FULL option. More information can be found
701
+ from Clang's documentation:
702
+
703
+ https://clang.llvm.org/docs/ThinLTO.html
704
+
705
+ If unsure, say Y.
535706 endchoice
536707
537
-config CFI
538
- bool
539
-
540
-config CFI_PERMISSIVE
541
- bool "Use CFI in permissive mode"
542
- depends on CFI
543
- help
544
- When selected, Control Flow Integrity (CFI) violations result in a
545
- warning instead of a kernel panic. This option is useful for finding
546
- CFI violations in drivers during development.
547
-
548708 config CFI_CLANG
549
- bool "Use clang Control Flow Integrity (CFI) (EXPERIMENTAL)"
550
- depends on LTO_CLANG
551
- depends on KALLSYMS
552
- select CFI
709
+ bool "Use Clang's Control Flow Integrity (CFI)"
710
+ depends on LTO_CLANG && KALLSYMS
553711 help
554
- This option enables clang Control Flow Integrity (CFI), which adds
712
+ This option enables Clang's Control Flow Integrity (CFI), which adds
555713 runtime checking for indirect function calls.
556714
557715 config CFI_CLANG_SHADOW
558716 bool "Use CFI shadow to speed up cross-module checks"
559717 default y
560
- depends on CFI_CLANG
718
+ depends on CFI_CLANG && MODULES
561719 help
562720 If you select this option, the kernel builds a fast look-up table of
563721 CFI check functions in loaded modules to reduce overhead.
564722
565
-config ARCH_SUPPORTS_SHADOW_CALL_STACK
566
- bool
723
+config CFI_PERMISSIVE
724
+ bool "Use CFI in permissive mode"
725
+ depends on CFI_CLANG
567726 help
568
- An architecture should select this if it supports Clang's Shadow
569
- Call Stack, has asm/scs.h, and implements runtime support for shadow
570
- stack switching.
571
-
572
-config SHADOW_CALL_STACK
573
- bool "Clang Shadow Call Stack"
574
- depends on ARCH_SUPPORTS_SHADOW_CALL_STACK
575
- help
576
- This option enables Clang's Shadow Call Stack, which uses a
577
- shadow stack to protect function return addresses from being
578
- overwritten by an attacker. More information can be found from
579
- Clang's documentation:
580
-
581
- https://clang.llvm.org/docs/ShadowCallStack.html
582
-
583
- Note that security guarantees in the kernel differ from the ones
584
- documented for user space. The kernel must store addresses of shadow
585
- stacks used by other tasks and interrupt handlers in memory, which
586
- means an attacker capable reading and writing arbitrary memory may
587
- be able to locate them and hijack control flow by modifying shadow
588
- stacks that are not currently in use.
589
-
590
-config SHADOW_CALL_STACK_VMAP
591
- bool "Use virtually mapped shadow call stacks"
592
- depends on SHADOW_CALL_STACK
593
- help
594
- Use virtually mapped shadow call stacks. Selecting this option
595
- provides better stack exhaustion protection, but increases per-thread
596
- memory consumption as a full page is allocated for each shadow stack.
727
+ When selected, Control Flow Integrity (CFI) violations result in a
728
+ warning instead of a kernel panic. This option is useful for finding
729
+ CFI violations during development.
597730
598731 config HAVE_ARCH_WITHIN_STACK_FRAMES
599732 bool
....@@ -609,14 +742,26 @@
609742 help
610743 Provide kernel/user boundaries probes necessary for subsystems
611744 that need it, such as userspace RCU extended quiescent state.
612
- Syscalls need to be wrapped inside user_exit()-user_enter() through
613
- the slow path using TIF_NOHZ flag. Exceptions handlers must be
614
- wrapped as well. Irqs are already protected inside
615
- rcu_irq_enter/rcu_irq_exit() but preemption or signal handling on
616
- irq exit still need to be protected.
745
+ Syscalls need to be wrapped inside user_exit()-user_enter(), either
746
+ optimized behind static key or through the slow path using TIF_NOHZ
747
+ flag. Exceptions handlers must be wrapped as well. Irqs are already
748
+ protected inside rcu_irq_enter/rcu_irq_exit() but preemption or signal
749
+ handling on irq exit still need to be protected.
750
+
751
+config HAVE_TIF_NOHZ
752
+ bool
753
+ help
754
+ Arch relies on TIF_NOHZ and syscall slow path to implement context
755
+ tracking calls to user_enter()/user_exit().
617756
618757 config HAVE_VIRT_CPU_ACCOUNTING
619758 bool
759
+
760
+config HAVE_VIRT_CPU_ACCOUNTING_IDLE
761
+ bool
762
+ help
763
+ Architecture has its own way to account idle CPU time and therefore
764
+ doesn't implement vtime_account_idle().
620765
621766 config ARCH_HAS_SCALED_CPUTIME
622767 bool
....@@ -632,12 +777,23 @@
632777 some 32-bit arches may require multiple accesses, so proper
633778 locking is needed to protect against concurrent accesses.
634779
635
-
636780 config HAVE_IRQ_TIME_ACCOUNTING
637781 bool
638782 help
639783 Archs need to ensure they use a high enough resolution clock to
640784 support irq time accounting and then call enable_sched_clock_irqtime().
785
+
786
+config HAVE_MOVE_PUD
787
+ bool
788
+ help
789
+ Architectures that select this are able to move page tables at the
790
+ PUD level. If there are only 3 page table levels, the move effectively
791
+ happens at the PGD level.
792
+
793
+config HAVE_MOVE_PMD
794
+ bool
795
+ help
796
+ Archs that select this are able to move page tables at the PMD level.
641797
642798 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
643799 bool
....@@ -646,6 +802,9 @@
646802 bool
647803
648804 config HAVE_ARCH_HUGE_VMAP
805
+ bool
806
+
807
+config ARCH_WANT_HUGE_PMD_SHARE
649808 bool
650809
651810 config HAVE_ARCH_SOFT_DIRTY
....@@ -772,12 +931,16 @@
772931 and vice-versa 32-bit applications to call 64-bit mmap().
773932 Required for applications doing different bitness syscalls.
774933
775
-config HAVE_COPY_THREAD_TLS
934
+# This allows to use a set of generic functions to determine mmap base
935
+# address by giving priority to top-down scheme only if the process
936
+# is not in legacy mode (compat task, unlimited stack size or
937
+# sysctl_legacy_va_layout).
938
+# Architecture that selects this option can provide its own version of:
939
+# - STACK_RND_MASK
940
+config ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
776941 bool
777
- help
778
- Architecture provides copy_thread_tls to accept tls argument via
779
- normal C parameter passing, rather than extracting the syscall
780
- argument from pt_regs.
942
+ depends on MMU
943
+ select ARCH_HAS_ELF_RANDOMIZE
781944
782945 config HAVE_STACK_VALIDATION
783946 bool
....@@ -788,8 +951,9 @@
788951 config HAVE_RELIABLE_STACKTRACE
789952 bool
790953 help
791
- Architecture has a save_stack_trace_tsk_reliable() function which
792
- only returns a stack trace if it can guarantee the trace is reliable.
954
+ Architecture has either save_stack_trace_tsk_reliable() or
955
+ arch_stack_walk_reliable() function which only returns a stack trace
956
+ if it can guarantee the trace is reliable.
793957
794958 config HAVE_ARCH_HASH
795959 bool
....@@ -798,6 +962,9 @@
798962 If this is set, the architecture provides an <asm/hash.h>
799963 file which provides platform-specific implementations of some
800964 functions in <linux/hash.h> or fs/namei.c.
965
+
966
+config HAVE_ARCH_NVRAM_OPS
967
+ bool
801968
802969 config ISA_BUS_API
803970 def_bool ISA
....@@ -848,25 +1015,18 @@
8481015 config COMPAT_OLD_SIGACTION
8491016 bool
8501017
851
-config 64BIT_TIME
852
- def_bool ARCH_HAS_64BIT_TIME
853
- help
854
- This should be selected by all architectures that need to support
855
- new system calls with a 64-bit time_t. This is relevant on all 32-bit
856
- architectures, and 64-bit architectures as part of compat syscall
857
- handling.
858
-
8591018 config COMPAT_32BIT_TIME
860
- def_bool (!64BIT && 64BIT_TIME) || COMPAT
1019
+ bool "Provide system calls for 32-bit time_t"
1020
+ default !64BIT || COMPAT
8611021 help
8621022 This enables 32 bit time_t support in addition to 64 bit time_t support.
8631023 This is relevant on all 32-bit architectures, and 64-bit architectures
8641024 as part of compat syscall handling.
8651025
866
-config ARCH_NO_COHERENT_DMA_MMAP
1026
+config ARCH_NO_PREEMPT
8671027 bool
8681028
869
-config ARCH_NO_PREEMPT
1029
+config ARCH_SUPPORTS_RT
8701030 bool
8711031
8721032 config CPU_NO_EFFICIENT_FFS
....@@ -895,16 +1055,17 @@
8951055 config VMAP_STACK
8961056 default y
8971057 bool "Use a virtually-mapped stack"
898
- depends on HAVE_ARCH_VMAP_STACK && !KASAN
899
- ---help---
1058
+ depends on HAVE_ARCH_VMAP_STACK
1059
+ depends on !KASAN || KASAN_HW_TAGS || KASAN_VMALLOC
1060
+ help
9001061 Enable this if you want the use virtually-mapped kernel stacks
9011062 with guard pages. This causes kernel stack overflows to be
9021063 caught immediately rather than causing difficult-to-diagnose
9031064 corruption.
9041065
905
- This is presently incompatible with KASAN because KASAN expects
906
- the stack to map directly to the KASAN shadow map using a formula
907
- that is incorrect if the stack is in vmalloc space.
1066
+ To use this with software KASAN modes, the architecture must support
1067
+ backing virtual mappings with real shadow memory, and KASAN_VMALLOC
1068
+ must be enabled.
9081069
9091070 config ARCH_OPTIONAL_KERNEL_RWX
9101071 def_bool n
....@@ -944,27 +1105,6 @@
9441105 config ARCH_HAS_PHYS_TO_DMA
9451106 bool
9461107
947
-config ARCH_HAS_REFCOUNT
948
- bool
949
- help
950
- An architecture selects this when it has implemented refcount_t
951
- using open coded assembly primitives that provide an optimized
952
- refcount_t implementation, possibly at the expense of some full
953
- refcount state checks of CONFIG_REFCOUNT_FULL=y.
954
-
955
- The refcount overflow check behavior, however, must be retained.
956
- Catching overflows is the primary security concern for protecting
957
- against bugs in reference counts.
958
-
959
-config REFCOUNT_FULL
960
- bool "Perform full reference count validation at the expense of speed"
961
- help
962
- Enabling this switches the refcounting infrastructure from a fast
963
- unchecked atomic_t implementation to a fully state checked
964
- implementation, which can be (slightly) slower but provides protections
965
- against various use-after-free conditions that can be used in
966
- security flaw exploits.
967
-
9681108 config HAVE_ARCH_COMPILER_H
9691109 bool
9701110 help
....@@ -986,6 +1126,15 @@
9861126 config ARCH_USE_MEMREMAP_PROT
9871127 bool
9881128
1129
+config LOCK_EVENT_COUNTS
1130
+ bool "Locking event counts collection"
1131
+ depends on DEBUG_FS
1132
+ help
1133
+ Enable light-weight counting of various locking related events
1134
+ in the system with minimal performance impact. This reduces
1135
+ the chance of application behavior change because of timing
1136
+ differences. The counts are reported via debugfs.
1137
+
9891138 # Select if the architecture has support for applying RELR relocations.
9901139 config ARCH_HAS_RELR
9911140 bool
....@@ -1000,6 +1149,45 @@
10001149 well as compatible NM and OBJCOPY utilities (llvm-nm and llvm-objcopy
10011150 are compatible).
10021151
1152
+config ARCH_HAS_MEM_ENCRYPT
1153
+ bool
1154
+
1155
+config ARCH_HAS_CC_PLATFORM
1156
+ bool
1157
+
1158
+config HAVE_SPARSE_SYSCALL_NR
1159
+ bool
1160
+ help
1161
+ An architecture should select this if its syscall numbering is sparse
1162
+ to save space. For example, MIPS architecture has a syscall array with
1163
+ entries at 4000, 5000 and 6000 locations. This option turns on syscall
1164
+ related optimizations for a given architecture.
1165
+
1166
+config ARCH_HAS_VDSO_DATA
1167
+ bool
1168
+
1169
+config HAVE_STATIC_CALL
1170
+ bool
1171
+
1172
+config HAVE_STATIC_CALL_INLINE
1173
+ bool
1174
+ depends on HAVE_STATIC_CALL
1175
+
1176
+config ARCH_WANT_LD_ORPHAN_WARN
1177
+ bool
1178
+ help
1179
+ An arch should select this symbol once all linker sections are explicitly
1180
+ included, size-asserted, or discarded in the linker scripts. This is
1181
+ important because we never want expected sections to be placed heuristically
1182
+ by the linker, since the locations of such sections can change between linker
1183
+ versions.
1184
+
1185
+config ARCH_SPLIT_ARG64
1186
+ bool
1187
+ help
1188
+ If a 32-bit architecture requires 64-bit arguments to be split into
1189
+ pairs of 32-bit arguments, select this option.
1190
+
10031191 source "kernel/gcov/Kconfig"
10041192
10051193 source "scripts/gcc-plugins/Kconfig"