GNU Linux-libre 5.10.217-gnu1
[releases.git] / arch / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 #
3 # General architecture dependent options
4 #
5
6 #
7 # Note: arch/$(SRCARCH)/Kconfig needs to be included first so that it can
8 # override the default values in this file.
9 #
10 source "arch/$(SRCARCH)/Kconfig"
11
12 config ARCH_CONFIGURES_CPU_MITIGATIONS
13         bool
14
15 if !ARCH_CONFIGURES_CPU_MITIGATIONS
16 config CPU_MITIGATIONS
17         def_bool y
18 endif
19
20 menu "General architecture-dependent options"
21
22 config CRASH_CORE
23         bool
24
25 config KEXEC_CORE
26         select CRASH_CORE
27         bool
28
29 config KEXEC_ELF
30         bool
31
32 config HAVE_IMA_KEXEC
33         bool
34
35 config SET_FS
36         bool
37
38 config HOTPLUG_SMT
39         bool
40
41 config GENERIC_ENTRY
42        bool
43
44 config OPROFILE
45         tristate "OProfile system profiling"
46         depends on PROFILING
47         depends on HAVE_OPROFILE
48         select RING_BUFFER
49         select RING_BUFFER_ALLOW_SWAP
50         help
51           OProfile is a profiling system capable of profiling the
52           whole system, include the kernel, kernel modules, libraries,
53           and applications.
54
55           If unsure, say N.
56
57 config OPROFILE_EVENT_MULTIPLEX
58         bool "OProfile multiplexing support (EXPERIMENTAL)"
59         default n
60         depends on OPROFILE && X86
61         help
62           The number of hardware counters is limited. The multiplexing
63           feature enables OProfile to gather more events than counters
64           are provided by the hardware. This is realized by switching
65           between events at a user specified time interval.
66
67           If unsure, say N.
68
69 config HAVE_OPROFILE
70         bool
71
72 config OPROFILE_NMI_TIMER
73         def_bool y
74         depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !PPC64
75
76 config KPROBES
77         bool "Kprobes"
78         depends on MODULES
79         depends on HAVE_KPROBES
80         select KALLSYMS
81         help
82           Kprobes allows you to trap at almost any kernel address and
83           execute a callback function.  register_kprobe() establishes
84           a probepoint and specifies the callback.  Kprobes is useful
85           for kernel debugging, non-intrusive instrumentation and testing.
86           If in doubt, say "N".
87
88 config JUMP_LABEL
89         bool "Optimize very unlikely/likely branches"
90         depends on HAVE_ARCH_JUMP_LABEL
91         depends on CC_HAS_ASM_GOTO
92         help
93          This option enables a transparent branch optimization that
94          makes certain almost-always-true or almost-always-false branch
95          conditions even cheaper to execute within the kernel.
96
97          Certain performance-sensitive kernel code, such as trace points,
98          scheduler functionality, networking code and KVM have such
99          branches and include support for this optimization technique.
100
101          If it is detected that the compiler has support for "asm goto",
102          the kernel will compile such branches with just a nop
103          instruction. When the condition flag is toggled to true, the
104          nop will be converted to a jump instruction to execute the
105          conditional block of instructions.
106
107          This technique lowers overhead and stress on the branch prediction
108          of the processor and generally makes the kernel faster. The update
109          of the condition is slower, but those are always very rare.
110
111          ( On 32-bit x86, the necessary options added to the compiler
112            flags may increase the size of the kernel slightly. )
113
114 config STATIC_KEYS_SELFTEST
115         bool "Static key selftest"
116         depends on JUMP_LABEL
117         help
118           Boot time self-test of the branch patching code.
119
120 config STATIC_CALL_SELFTEST
121         bool "Static call selftest"
122         depends on HAVE_STATIC_CALL
123         help
124           Boot time self-test of the call patching code.
125
126 config OPTPROBES
127         def_bool y
128         depends on KPROBES && HAVE_OPTPROBES
129         select TASKS_RCU if PREEMPTION
130
131 config KPROBES_ON_FTRACE
132         def_bool y
133         depends on KPROBES && HAVE_KPROBES_ON_FTRACE
134         depends on DYNAMIC_FTRACE_WITH_REGS
135         help
136          If function tracer is enabled and the arch supports full
137          passing of pt_regs to function tracing, then kprobes can
138          optimize on top of function tracing.
139
140 config UPROBES
141         def_bool n
142         depends on ARCH_SUPPORTS_UPROBES
143         help
144           Uprobes is the user-space counterpart to kprobes: they
145           enable instrumentation applications (such as 'perf probe')
146           to establish unintrusive probes in user-space binaries and
147           libraries, by executing handler functions when the probes
148           are hit by user-space applications.
149
150           ( These probes come in the form of single-byte breakpoints,
151             managed by the kernel and kept transparent to the probed
152             application. )
153
154 config HAVE_64BIT_ALIGNED_ACCESS
155         def_bool 64BIT && !HAVE_EFFICIENT_UNALIGNED_ACCESS
156         help
157           Some architectures require 64 bit accesses to be 64 bit
158           aligned, which also requires structs containing 64 bit values
159           to be 64 bit aligned too. This includes some 32 bit
160           architectures which can do 64 bit accesses, as well as 64 bit
161           architectures without unaligned access.
162
163           This symbol should be selected by an architecture if 64 bit
164           accesses are required to be 64 bit aligned in this way even
165           though it is not a 64 bit architecture.
166
167           See Documentation/unaligned-memory-access.txt for more
168           information on the topic of unaligned memory accesses.
169
170 config HAVE_EFFICIENT_UNALIGNED_ACCESS
171         bool
172         help
173           Some architectures are unable to perform unaligned accesses
174           without the use of get_unaligned/put_unaligned. Others are
175           unable to perform such accesses efficiently (e.g. trap on
176           unaligned access and require fixing it up in the exception
177           handler.)
178
179           This symbol should be selected by an architecture if it can
180           perform unaligned accesses efficiently to allow different
181           code paths to be selected for these cases. Some network
182           drivers, for example, could opt to not fix up alignment
183           problems with received packets if doing so would not help
184           much.
185
186           See Documentation/core-api/unaligned-memory-access.rst for more
187           information on the topic of unaligned memory accesses.
188
189 config ARCH_USE_BUILTIN_BSWAP
190         bool
191         help
192          Modern versions of GCC (since 4.4) have builtin functions
193          for handling byte-swapping. Using these, instead of the old
194          inline assembler that the architecture code provides in the
195          __arch_bswapXX() macros, allows the compiler to see what's
196          happening and offers more opportunity for optimisation. In
197          particular, the compiler will be able to combine the byteswap
198          with a nearby load or store and use load-and-swap or
199          store-and-swap instructions if the architecture has them. It
200          should almost *never* result in code which is worse than the
201          hand-coded assembler in <asm/swab.h>.  But just in case it
202          does, the use of the builtins is optional.
203
204          Any architecture with load-and-swap or store-and-swap
205          instructions should set this. And it shouldn't hurt to set it
206          on architectures that don't have such instructions.
207
208 config KRETPROBES
209         def_bool y
210         depends on KPROBES && HAVE_KRETPROBES
211
212 config USER_RETURN_NOTIFIER
213         bool
214         depends on HAVE_USER_RETURN_NOTIFIER
215         help
216           Provide a kernel-internal notification when a cpu is about to
217           switch to user mode.
218
219 config HAVE_IOREMAP_PROT
220         bool
221
222 config HAVE_KPROBES
223         bool
224
225 config HAVE_KRETPROBES
226         bool
227
228 config HAVE_OPTPROBES
229         bool
230
231 config HAVE_KPROBES_ON_FTRACE
232         bool
233
234 config HAVE_FUNCTION_ERROR_INJECTION
235         bool
236
237 config HAVE_NMI
238         bool
239
240 #
241 # An arch should select this if it provides all these things:
242 #
243 #       task_pt_regs()          in asm/processor.h or asm/ptrace.h
244 #       arch_has_single_step()  if there is hardware single-step support
245 #       arch_has_block_step()   if there is hardware block-step support
246 #       asm/syscall.h           supplying asm-generic/syscall.h interface
247 #       linux/regset.h          user_regset interfaces
248 #       CORE_DUMP_USE_REGSET    #define'd in linux/elf.h
249 #       TIF_SYSCALL_TRACE       calls tracehook_report_syscall_{entry,exit}
250 #       TIF_NOTIFY_RESUME       calls tracehook_notify_resume()
251 #       signal delivery         calls tracehook_signal_handler()
252 #
253 config HAVE_ARCH_TRACEHOOK
254         bool
255
256 config HAVE_DMA_CONTIGUOUS
257         bool
258
259 config GENERIC_SMP_IDLE_THREAD
260         bool
261
262 config GENERIC_IDLE_POLL_SETUP
263         bool
264
265 config ARCH_HAS_FORTIFY_SOURCE
266         bool
267         help
268           An architecture should select this when it can successfully
269           build and run with CONFIG_FORTIFY_SOURCE.
270
271 #
272 # Select if the arch provides a historic keepinit alias for the retain_initrd
273 # command line option
274 #
275 config ARCH_HAS_KEEPINITRD
276         bool
277
278 # Select if arch has all set_memory_ro/rw/x/nx() functions in asm/cacheflush.h
279 config ARCH_HAS_SET_MEMORY
280         bool
281
282 # Select if arch has all set_direct_map_invalid/default() functions
283 config ARCH_HAS_SET_DIRECT_MAP
284         bool
285
286 #
287 # Select if the architecture provides the arch_dma_set_uncached symbol to
288 # either provide an uncached segement alias for a DMA allocation, or
289 # to remap the page tables in place.
290 #
291 config ARCH_HAS_DMA_SET_UNCACHED
292         bool
293
294 #
295 # Select if the architectures provides the arch_dma_clear_uncached symbol
296 # to undo an in-place page table remap for uncached access.
297 #
298 config ARCH_HAS_DMA_CLEAR_UNCACHED
299         bool
300
301 config ARCH_HAS_CPU_FINALIZE_INIT
302         bool
303
304 # Select if arch init_task must go in the __init_task_data section
305 config ARCH_TASK_STRUCT_ON_STACK
306         bool
307
308 # Select if arch has its private alloc_task_struct() function
309 config ARCH_TASK_STRUCT_ALLOCATOR
310         bool
311
312 config HAVE_ARCH_THREAD_STRUCT_WHITELIST
313         bool
314         depends on !ARCH_TASK_STRUCT_ALLOCATOR
315         help
316           An architecture should select this to provide hardened usercopy
317           knowledge about what region of the thread_struct should be
318           whitelisted for copying to userspace. Normally this is only the
319           FPU registers. Specifically, arch_thread_struct_whitelist()
320           should be implemented. Without this, the entire thread_struct
321           field in task_struct will be left whitelisted.
322
323 # Select if arch has its private alloc_thread_stack() function
324 config ARCH_THREAD_STACK_ALLOCATOR
325         bool
326
327 # Select if arch wants to size task_struct dynamically via arch_task_struct_size:
328 config ARCH_WANTS_DYNAMIC_TASK_STRUCT
329         bool
330
331 config ARCH_32BIT_OFF_T
332         bool
333         depends on !64BIT
334         help
335           All new 32-bit architectures should have 64-bit off_t type on
336           userspace side which corresponds to the loff_t kernel type. This
337           is the requirement for modern ABIs. Some existing architectures
338           still support 32-bit off_t. This option is enabled for all such
339           architectures explicitly.
340
341 config HAVE_ASM_MODVERSIONS
342         bool
343         help
344           This symbol should be selected by an architecure if it provides
345           <asm/asm-prototypes.h> to support the module versioning for symbols
346           exported from assembly code.
347
348 config HAVE_REGS_AND_STACK_ACCESS_API
349         bool
350         help
351           This symbol should be selected by an architecure if it supports
352           the API needed to access registers and stack entries from pt_regs,
353           declared in asm/ptrace.h
354           For example the kprobes-based event tracer needs this API.
355
356 config HAVE_RSEQ
357         bool
358         depends on HAVE_REGS_AND_STACK_ACCESS_API
359         help
360           This symbol should be selected by an architecture if it
361           supports an implementation of restartable sequences.
362
363 config HAVE_FUNCTION_ARG_ACCESS_API
364         bool
365         help
366           This symbol should be selected by an architecure if it supports
367           the API needed to access function arguments from pt_regs,
368           declared in asm/ptrace.h
369
370 config HAVE_HW_BREAKPOINT
371         bool
372         depends on PERF_EVENTS
373
374 config HAVE_MIXED_BREAKPOINTS_REGS
375         bool
376         depends on HAVE_HW_BREAKPOINT
377         help
378           Depending on the arch implementation of hardware breakpoints,
379           some of them have separate registers for data and instruction
380           breakpoints addresses, others have mixed registers to store
381           them but define the access type in a control register.
382           Select this option if your arch implements breakpoints under the
383           latter fashion.
384
385 config HAVE_USER_RETURN_NOTIFIER
386         bool
387
388 config HAVE_PERF_EVENTS_NMI
389         bool
390         help
391           System hardware can generate an NMI using the perf event
392           subsystem.  Also has support for calculating CPU cycle events
393           to determine how many clock cycles in a given period.
394
395 config HAVE_HARDLOCKUP_DETECTOR_PERF
396         bool
397         depends on HAVE_PERF_EVENTS_NMI
398         help
399           The arch chooses to use the generic perf-NMI-based hardlockup
400           detector. Must define HAVE_PERF_EVENTS_NMI.
401
402 config HAVE_NMI_WATCHDOG
403         depends on HAVE_NMI
404         bool
405         help
406           The arch provides a low level NMI watchdog. It provides
407           asm/nmi.h, and defines its own arch_touch_nmi_watchdog().
408
409 config HAVE_HARDLOCKUP_DETECTOR_ARCH
410         bool
411         select HAVE_NMI_WATCHDOG
412         help
413           The arch chooses to provide its own hardlockup detector, which is
414           a superset of the HAVE_NMI_WATCHDOG. It also conforms to config
415           interfaces and parameters provided by hardlockup detector subsystem.
416
417 config HAVE_PERF_REGS
418         bool
419         help
420           Support selective register dumps for perf events. This includes
421           bit-mapping of each registers and a unique architecture id.
422
423 config HAVE_PERF_USER_STACK_DUMP
424         bool
425         help
426           Support user stack dumps for perf event samples. This needs
427           access to the user stack pointer which is not unified across
428           architectures.
429
430 config HAVE_ARCH_JUMP_LABEL
431         bool
432
433 config HAVE_ARCH_JUMP_LABEL_RELATIVE
434         bool
435
436 config MMU_GATHER_TABLE_FREE
437         bool
438
439 config MMU_GATHER_RCU_TABLE_FREE
440         bool
441         select MMU_GATHER_TABLE_FREE
442
443 config MMU_GATHER_PAGE_SIZE
444         bool
445
446 config MMU_GATHER_NO_RANGE
447         bool
448
449 config MMU_GATHER_NO_GATHER
450         bool
451         depends on MMU_GATHER_TABLE_FREE
452
453 config ARCH_WANT_IRQS_OFF_ACTIVATE_MM
454         bool
455         help
456           Temporary select until all architectures can be converted to have
457           irqs disabled over activate_mm. Architectures that do IPI based TLB
458           shootdowns should enable this.
459
460 config ARCH_HAVE_NMI_SAFE_CMPXCHG
461         bool
462
463 config HAVE_ALIGNED_STRUCT_PAGE
464         bool
465         help
466           This makes sure that struct pages are double word aligned and that
467           e.g. the SLUB allocator can perform double word atomic operations
468           on a struct page for better performance. However selecting this
469           might increase the size of a struct page by a word.
470
471 config HAVE_CMPXCHG_LOCAL
472         bool
473
474 config HAVE_CMPXCHG_DOUBLE
475         bool
476
477 config ARCH_WEAK_RELEASE_ACQUIRE
478         bool
479
480 config ARCH_WANT_IPC_PARSE_VERSION
481         bool
482
483 config ARCH_WANT_COMPAT_IPC_PARSE_VERSION
484         bool
485
486 config ARCH_WANT_OLD_COMPAT_IPC
487         select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
488         bool
489
490 config HAVE_ARCH_SECCOMP
491         bool
492         help
493           An arch should select this symbol to support seccomp mode 1 (the fixed
494           syscall policy), and must provide an overrides for __NR_seccomp_sigreturn,
495           and compat syscalls if the asm-generic/seccomp.h defaults need adjustment:
496           - __NR_seccomp_read_32
497           - __NR_seccomp_write_32
498           - __NR_seccomp_exit_32
499           - __NR_seccomp_sigreturn_32
500
501 config HAVE_ARCH_SECCOMP_FILTER
502         bool
503         select HAVE_ARCH_SECCOMP
504         help
505           An arch should select this symbol if it provides all of these things:
506           - all the requirements for HAVE_ARCH_SECCOMP
507           - syscall_get_arch()
508           - syscall_get_arguments()
509           - syscall_rollback()
510           - syscall_set_return_value()
511           - SIGSYS siginfo_t support
512           - secure_computing is called from a ptrace_event()-safe context
513           - secure_computing return value is checked and a return value of -1
514             results in the system call being skipped immediately.
515           - seccomp syscall wired up
516
517 config SECCOMP
518         prompt "Enable seccomp to safely execute untrusted bytecode"
519         def_bool y
520         depends on HAVE_ARCH_SECCOMP
521         help
522           This kernel feature is useful for number crunching applications
523           that may need to handle untrusted bytecode during their
524           execution. By using pipes or other transports made available
525           to the process as file descriptors supporting the read/write
526           syscalls, it's possible to isolate those applications in their
527           own address space using seccomp. Once seccomp is enabled via
528           prctl(PR_SET_SECCOMP) or the seccomp() syscall, it cannot be
529           disabled and the task is only allowed to execute a few safe
530           syscalls defined by each seccomp mode.
531
532           If unsure, say Y.
533
534 config SECCOMP_FILTER
535         def_bool y
536         depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
537         help
538           Enable tasks to build secure computing environments defined
539           in terms of Berkeley Packet Filter programs which implement
540           task-defined system call filtering polices.
541
542           See Documentation/userspace-api/seccomp_filter.rst for details.
543
544 config HAVE_ARCH_STACKLEAK
545         bool
546         help
547           An architecture should select this if it has the code which
548           fills the used part of the kernel stack with the STACKLEAK_POISON
549           value before returning from system calls.
550
551 config HAVE_STACKPROTECTOR
552         bool
553         help
554           An arch should select this symbol if:
555           - it has implemented a stack canary (e.g. __stack_chk_guard)
556
557 config STACKPROTECTOR
558         bool "Stack Protector buffer overflow detection"
559         depends on HAVE_STACKPROTECTOR
560         depends on $(cc-option,-fstack-protector)
561         default y
562         help
563           This option turns on the "stack-protector" GCC feature. This
564           feature puts, at the beginning of functions, a canary value on
565           the stack just before the return address, and validates
566           the value just before actually returning.  Stack based buffer
567           overflows (that need to overwrite this return address) now also
568           overwrite the canary, which gets detected and the attack is then
569           neutralized via a kernel panic.
570
571           Functions will have the stack-protector canary logic added if they
572           have an 8-byte or larger character array on the stack.
573
574           This feature requires gcc version 4.2 or above, or a distribution
575           gcc with the feature backported ("-fstack-protector").
576
577           On an x86 "defconfig" build, this feature adds canary checks to
578           about 3% of all kernel functions, which increases kernel code size
579           by about 0.3%.
580
581 config STACKPROTECTOR_STRONG
582         bool "Strong Stack Protector"
583         depends on STACKPROTECTOR
584         depends on $(cc-option,-fstack-protector-strong)
585         default y
586         help
587           Functions will have the stack-protector canary logic added in any
588           of the following conditions:
589
590           - local variable's address used as part of the right hand side of an
591             assignment or function argument
592           - local variable is an array (or union containing an array),
593             regardless of array type or length
594           - uses register local variables
595
596           This feature requires gcc version 4.9 or above, or a distribution
597           gcc with the feature backported ("-fstack-protector-strong").
598
599           On an x86 "defconfig" build, this feature adds canary checks to
600           about 20% of all kernel functions, which increases the kernel code
601           size by about 2%.
602
603 config ARCH_SUPPORTS_SHADOW_CALL_STACK
604         bool
605         help
606           An architecture should select this if it supports Clang's Shadow
607           Call Stack and implements runtime support for shadow stack
608           switching.
609
610 config SHADOW_CALL_STACK
611         bool "Clang Shadow Call Stack"
612         depends on CC_IS_CLANG && ARCH_SUPPORTS_SHADOW_CALL_STACK
613         depends on DYNAMIC_FTRACE_WITH_REGS || !FUNCTION_GRAPH_TRACER
614         help
615           This option enables Clang's Shadow Call Stack, which uses a
616           shadow stack to protect function return addresses from being
617           overwritten by an attacker. More information can be found in
618           Clang's documentation:
619
620             https://clang.llvm.org/docs/ShadowCallStack.html
621
622           Note that security guarantees in the kernel differ from the
623           ones documented for user space. The kernel must store addresses
624           of shadow stacks in memory, which means an attacker capable of
625           reading and writing arbitrary memory may be able to locate them
626           and hijack control flow by modifying the stacks.
627
628 config HAVE_ARCH_WITHIN_STACK_FRAMES
629         bool
630         help
631           An architecture should select this if it can walk the kernel stack
632           frames to determine if an object is part of either the arguments
633           or local variables (i.e. that it excludes saved return addresses,
634           and similar) by implementing an inline arch_within_stack_frames(),
635           which is used by CONFIG_HARDENED_USERCOPY.
636
637 config HAVE_CONTEXT_TRACKING
638         bool
639         help
640           Provide kernel/user boundaries probes necessary for subsystems
641           that need it, such as userspace RCU extended quiescent state.
642           Syscalls need to be wrapped inside user_exit()-user_enter(), either
643           optimized behind static key or through the slow path using TIF_NOHZ
644           flag. Exceptions handlers must be wrapped as well. Irqs are already
645           protected inside rcu_irq_enter/rcu_irq_exit() but preemption or signal
646           handling on irq exit still need to be protected.
647
648 config HAVE_TIF_NOHZ
649         bool
650         help
651           Arch relies on TIF_NOHZ and syscall slow path to implement context
652           tracking calls to user_enter()/user_exit().
653
654 config HAVE_VIRT_CPU_ACCOUNTING
655         bool
656
657 config ARCH_HAS_SCALED_CPUTIME
658         bool
659
660 config HAVE_VIRT_CPU_ACCOUNTING_GEN
661         bool
662         default y if 64BIT
663         help
664           With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit.
665           Before enabling this option, arch code must be audited
666           to ensure there are no races in concurrent read/write of
667           cputime_t. For example, reading/writing 64-bit cputime_t on
668           some 32-bit arches may require multiple accesses, so proper
669           locking is needed to protect against concurrent accesses.
670
671
672 config HAVE_IRQ_TIME_ACCOUNTING
673         bool
674         help
675           Archs need to ensure they use a high enough resolution clock to
676           support irq time accounting and then call enable_sched_clock_irqtime().
677
678 config HAVE_MOVE_PMD
679         bool
680         help
681           Archs that select this are able to move page tables at the PMD level.
682
683 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
684         bool
685
686 config HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
687         bool
688
689 config HAVE_ARCH_HUGE_VMAP
690         bool
691
692 config ARCH_WANT_HUGE_PMD_SHARE
693         bool
694
695 config HAVE_ARCH_SOFT_DIRTY
696         bool
697
698 config HAVE_MOD_ARCH_SPECIFIC
699         bool
700         help
701           The arch uses struct mod_arch_specific to store data.  Many arches
702           just need a simple module loader without arch specific data - those
703           should not enable this.
704
705 config MODULES_USE_ELF_RELA
706         bool
707         help
708           Modules only use ELF RELA relocations.  Modules with ELF REL
709           relocations will give an error.
710
711 config MODULES_USE_ELF_REL
712         bool
713         help
714           Modules only use ELF REL relocations.  Modules with ELF RELA
715           relocations will give an error.
716
717 config HAVE_IRQ_EXIT_ON_IRQ_STACK
718         bool
719         help
720           Architecture doesn't only execute the irq handler on the irq stack
721           but also irq_exit(). This way we can process softirqs on this irq
722           stack instead of switching to a new one when we call __do_softirq()
723           in the end of an hardirq.
724           This spares a stack switch and improves cache usage on softirq
725           processing.
726
727 config PGTABLE_LEVELS
728         int
729         default 2
730
731 config ARCH_HAS_ELF_RANDOMIZE
732         bool
733         help
734           An architecture supports choosing randomized locations for
735           stack, mmap, brk, and ET_DYN. Defined functions:
736           - arch_mmap_rnd()
737           - arch_randomize_brk()
738
739 config HAVE_ARCH_MMAP_RND_BITS
740         bool
741         help
742           An arch should select this symbol if it supports setting a variable
743           number of bits for use in establishing the base address for mmap
744           allocations, has MMU enabled and provides values for both:
745           - ARCH_MMAP_RND_BITS_MIN
746           - ARCH_MMAP_RND_BITS_MAX
747
748 config HAVE_EXIT_THREAD
749         bool
750         help
751           An architecture implements exit_thread.
752
753 config ARCH_MMAP_RND_BITS_MIN
754         int
755
756 config ARCH_MMAP_RND_BITS_MAX
757         int
758
759 config ARCH_MMAP_RND_BITS_DEFAULT
760         int
761
762 config ARCH_MMAP_RND_BITS
763         int "Number of bits to use for ASLR of mmap base address" if EXPERT
764         range ARCH_MMAP_RND_BITS_MIN ARCH_MMAP_RND_BITS_MAX
765         default ARCH_MMAP_RND_BITS_DEFAULT if ARCH_MMAP_RND_BITS_DEFAULT
766         default ARCH_MMAP_RND_BITS_MIN
767         depends on HAVE_ARCH_MMAP_RND_BITS
768         help
769           This value can be used to select the number of bits to use to
770           determine the random offset to the base address of vma regions
771           resulting from mmap allocations. This value will be bounded
772           by the architecture's minimum and maximum supported values.
773
774           This value can be changed after boot using the
775           /proc/sys/vm/mmap_rnd_bits tunable
776
777 config HAVE_ARCH_MMAP_RND_COMPAT_BITS
778         bool
779         help
780           An arch should select this symbol if it supports running applications
781           in compatibility mode, supports setting a variable number of bits for
782           use in establishing the base address for mmap allocations, has MMU
783           enabled and provides values for both:
784           - ARCH_MMAP_RND_COMPAT_BITS_MIN
785           - ARCH_MMAP_RND_COMPAT_BITS_MAX
786
787 config ARCH_MMAP_RND_COMPAT_BITS_MIN
788         int
789
790 config ARCH_MMAP_RND_COMPAT_BITS_MAX
791         int
792
793 config ARCH_MMAP_RND_COMPAT_BITS_DEFAULT
794         int
795
796 config ARCH_MMAP_RND_COMPAT_BITS
797         int "Number of bits to use for ASLR of mmap base address for compatible applications" if EXPERT
798         range ARCH_MMAP_RND_COMPAT_BITS_MIN ARCH_MMAP_RND_COMPAT_BITS_MAX
799         default ARCH_MMAP_RND_COMPAT_BITS_DEFAULT if ARCH_MMAP_RND_COMPAT_BITS_DEFAULT
800         default ARCH_MMAP_RND_COMPAT_BITS_MIN
801         depends on HAVE_ARCH_MMAP_RND_COMPAT_BITS
802         help
803           This value can be used to select the number of bits to use to
804           determine the random offset to the base address of vma regions
805           resulting from mmap allocations for compatible applications This
806           value will be bounded by the architecture's minimum and maximum
807           supported values.
808
809           This value can be changed after boot using the
810           /proc/sys/vm/mmap_rnd_compat_bits tunable
811
812 config HAVE_ARCH_COMPAT_MMAP_BASES
813         bool
814         help
815           This allows 64bit applications to invoke 32-bit mmap() syscall
816           and vice-versa 32-bit applications to call 64-bit mmap().
817           Required for applications doing different bitness syscalls.
818
819 # This allows to use a set of generic functions to determine mmap base
820 # address by giving priority to top-down scheme only if the process
821 # is not in legacy mode (compat task, unlimited stack size or
822 # sysctl_legacy_va_layout).
823 # Architecture that selects this option can provide its own version of:
824 # - STACK_RND_MASK
825 config ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
826         bool
827         depends on MMU
828         select ARCH_HAS_ELF_RANDOMIZE
829
830 config HAVE_STACK_VALIDATION
831         bool
832         help
833           Architecture supports the 'objtool check' host tool command, which
834           performs compile-time stack metadata validation.
835
836 config HAVE_RELIABLE_STACKTRACE
837         bool
838         help
839           Architecture has either save_stack_trace_tsk_reliable() or
840           arch_stack_walk_reliable() function which only returns a stack trace
841           if it can guarantee the trace is reliable.
842
843 config HAVE_ARCH_HASH
844         bool
845         default n
846         help
847           If this is set, the architecture provides an <asm/hash.h>
848           file which provides platform-specific implementations of some
849           functions in <linux/hash.h> or fs/namei.c.
850
851 config HAVE_ARCH_NVRAM_OPS
852         bool
853
854 config ISA_BUS_API
855         def_bool ISA
856
857 #
858 # ABI hall of shame
859 #
860 config CLONE_BACKWARDS
861         bool
862         help
863           Architecture has tls passed as the 4th argument of clone(2),
864           not the 5th one.
865
866 config CLONE_BACKWARDS2
867         bool
868         help
869           Architecture has the first two arguments of clone(2) swapped.
870
871 config CLONE_BACKWARDS3
872         bool
873         help
874           Architecture has tls passed as the 3rd argument of clone(2),
875           not the 5th one.
876
877 config ODD_RT_SIGACTION
878         bool
879         help
880           Architecture has unusual rt_sigaction(2) arguments
881
882 config OLD_SIGSUSPEND
883         bool
884         help
885           Architecture has old sigsuspend(2) syscall, of one-argument variety
886
887 config OLD_SIGSUSPEND3
888         bool
889         help
890           Even weirder antique ABI - three-argument sigsuspend(2)
891
892 config OLD_SIGACTION
893         bool
894         help
895           Architecture has old sigaction(2) syscall.  Nope, not the same
896           as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
897           but fairly different variant of sigaction(2), thanks to OSF/1
898           compatibility...
899
900 config COMPAT_OLD_SIGACTION
901         bool
902
903 config COMPAT_32BIT_TIME
904         bool "Provide system calls for 32-bit time_t"
905         default !64BIT || COMPAT
906         help
907           This enables 32 bit time_t support in addition to 64 bit time_t support.
908           This is relevant on all 32-bit architectures, and 64-bit architectures
909           as part of compat syscall handling.
910
911 config ARCH_NO_PREEMPT
912         bool
913
914 config ARCH_SUPPORTS_RT
915         bool
916
917 config CPU_NO_EFFICIENT_FFS
918         def_bool n
919
920 config HAVE_ARCH_VMAP_STACK
921         def_bool n
922         help
923           An arch should select this symbol if it can support kernel stacks
924           in vmalloc space.  This means:
925
926           - vmalloc space must be large enough to hold many kernel stacks.
927             This may rule out many 32-bit architectures.
928
929           - Stacks in vmalloc space need to work reliably.  For example, if
930             vmap page tables are created on demand, either this mechanism
931             needs to work while the stack points to a virtual address with
932             unpopulated page tables or arch code (switch_to() and switch_mm(),
933             most likely) needs to ensure that the stack's page table entries
934             are populated before running on a possibly unpopulated stack.
935
936           - If the stack overflows into a guard page, something reasonable
937             should happen.  The definition of "reasonable" is flexible, but
938             instantly rebooting without logging anything would be unfriendly.
939
940 config VMAP_STACK
941         default y
942         bool "Use a virtually-mapped stack"
943         depends on HAVE_ARCH_VMAP_STACK
944         depends on !KASAN || KASAN_VMALLOC
945         help
946           Enable this if you want the use virtually-mapped kernel stacks
947           with guard pages.  This causes kernel stack overflows to be
948           caught immediately rather than causing difficult-to-diagnose
949           corruption.
950
951           To use this with KASAN, the architecture must support backing
952           virtual mappings with real shadow memory, and KASAN_VMALLOC must
953           be enabled.
954
955 config ARCH_OPTIONAL_KERNEL_RWX
956         def_bool n
957
958 config ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
959         def_bool n
960
961 config ARCH_HAS_STRICT_KERNEL_RWX
962         def_bool n
963
964 config STRICT_KERNEL_RWX
965         bool "Make kernel text and rodata read-only" if ARCH_OPTIONAL_KERNEL_RWX
966         depends on ARCH_HAS_STRICT_KERNEL_RWX
967         default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
968         help
969           If this is set, kernel text and rodata memory will be made read-only,
970           and non-text memory will be made non-executable. This provides
971           protection against certain security exploits (e.g. executing the heap
972           or modifying text)
973
974           These features are considered standard security practice these days.
975           You should say Y here in almost all cases.
976
977 config ARCH_HAS_STRICT_MODULE_RWX
978         def_bool n
979
980 config STRICT_MODULE_RWX
981         bool "Set loadable kernel module data as NX and text as RO" if ARCH_OPTIONAL_KERNEL_RWX
982         depends on ARCH_HAS_STRICT_MODULE_RWX && MODULES
983         default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
984         help
985           If this is set, module text and rodata memory will be made read-only,
986           and non-text memory will be made non-executable. This provides
987           protection against certain security exploits (e.g. writing to text)
988
989 # select if the architecture provides an asm/dma-direct.h header
990 config ARCH_HAS_PHYS_TO_DMA
991         bool
992
993 config HAVE_ARCH_COMPILER_H
994         bool
995         help
996           An architecture can select this if it provides an
997           asm/compiler.h header that should be included after
998           linux/compiler-*.h in order to override macro definitions that those
999           headers generally provide.
1000
1001 config HAVE_ARCH_PREL32_RELOCATIONS
1002         bool
1003         help
1004           May be selected by an architecture if it supports place-relative
1005           32-bit relocations, both in the toolchain and in the module loader,
1006           in which case relative references can be used in special sections
1007           for PCI fixup, initcalls etc which are only half the size on 64 bit
1008           architectures, and don't require runtime relocation on relocatable
1009           kernels.
1010
1011 config ARCH_USE_MEMREMAP_PROT
1012         bool
1013
1014 config LOCK_EVENT_COUNTS
1015         bool "Locking event counts collection"
1016         depends on DEBUG_FS
1017         help
1018           Enable light-weight counting of various locking related events
1019           in the system with minimal performance impact. This reduces
1020           the chance of application behavior change because of timing
1021           differences. The counts are reported via debugfs.
1022
1023 # Select if the architecture has support for applying RELR relocations.
1024 config ARCH_HAS_RELR
1025         bool
1026
1027 config RELR
1028         bool "Use RELR relocation packing"
1029         depends on ARCH_HAS_RELR && TOOLS_SUPPORT_RELR
1030         default y
1031         help
1032           Store the kernel's dynamic relocations in the RELR relocation packing
1033           format. Requires a compatible linker (LLD supports this feature), as
1034           well as compatible NM and OBJCOPY utilities (llvm-nm and llvm-objcopy
1035           are compatible).
1036
1037 config ARCH_HAS_MEM_ENCRYPT
1038         bool
1039
1040 config ARCH_HAS_CC_PLATFORM
1041         bool
1042
1043 config HAVE_SPARSE_SYSCALL_NR
1044        bool
1045        help
1046           An architecture should select this if its syscall numbering is sparse
1047           to save space. For example, MIPS architecture has a syscall array with
1048           entries at 4000, 5000 and 6000 locations. This option turns on syscall
1049           related optimizations for a given architecture.
1050
1051 config ARCH_HAS_VDSO_DATA
1052         bool
1053
1054 config HAVE_STATIC_CALL
1055         bool
1056
1057 config HAVE_STATIC_CALL_INLINE
1058         bool
1059         depends on HAVE_STATIC_CALL
1060
1061 config ARCH_WANT_LD_ORPHAN_WARN
1062         bool
1063         help
1064           An arch should select this symbol once all linker sections are explicitly
1065           included, size-asserted, or discarded in the linker scripts. This is
1066           important because we never want expected sections to be placed heuristically
1067           by the linker, since the locations of such sections can change between linker
1068           versions.
1069
1070 config ARCH_SPLIT_ARG64
1071         bool
1072         help
1073            If a 32-bit architecture requires 64-bit arguments to be split into
1074            pairs of 32-bit arguments, select this option.
1075
1076 source "kernel/gcov/Kconfig"
1077
1078 source "scripts/gcc-plugins/Kconfig"
1079
1080 endmenu