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