Merge branch 'pm-cpufreq'
[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_HAVE_NMI_SAFE_CMPXCHG
418         bool
419
420 config HAVE_ALIGNED_STRUCT_PAGE
421         bool
422         help
423           This makes sure that struct pages are double word aligned and that
424           e.g. the SLUB allocator can perform double word atomic operations
425           on a struct page for better performance. However selecting this
426           might increase the size of a struct page by a word.
427
428 config HAVE_CMPXCHG_LOCAL
429         bool
430
431 config HAVE_CMPXCHG_DOUBLE
432         bool
433
434 config ARCH_WEAK_RELEASE_ACQUIRE
435         bool
436
437 config ARCH_WANT_IPC_PARSE_VERSION
438         bool
439
440 config ARCH_WANT_COMPAT_IPC_PARSE_VERSION
441         bool
442
443 config ARCH_WANT_OLD_COMPAT_IPC
444         select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
445         bool
446
447 config HAVE_ARCH_SECCOMP_FILTER
448         bool
449         help
450           An arch should select this symbol if it provides all of these things:
451           - syscall_get_arch()
452           - syscall_get_arguments()
453           - syscall_rollback()
454           - syscall_set_return_value()
455           - SIGSYS siginfo_t support
456           - secure_computing is called from a ptrace_event()-safe context
457           - secure_computing return value is checked and a return value of -1
458             results in the system call being skipped immediately.
459           - seccomp syscall wired up
460
461 config SECCOMP_FILTER
462         def_bool y
463         depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
464         help
465           Enable tasks to build secure computing environments defined
466           in terms of Berkeley Packet Filter programs which implement
467           task-defined system call filtering polices.
468
469           See Documentation/userspace-api/seccomp_filter.rst for details.
470
471 config HAVE_ARCH_STACKLEAK
472         bool
473         help
474           An architecture should select this if it has the code which
475           fills the used part of the kernel stack with the STACKLEAK_POISON
476           value before returning from system calls.
477
478 config HAVE_STACKPROTECTOR
479         bool
480         help
481           An arch should select this symbol if:
482           - it has implemented a stack canary (e.g. __stack_chk_guard)
483
484 config CC_HAS_STACKPROTECTOR_NONE
485         def_bool $(cc-option,-fno-stack-protector)
486
487 config STACKPROTECTOR
488         bool "Stack Protector buffer overflow detection"
489         depends on HAVE_STACKPROTECTOR
490         depends on $(cc-option,-fstack-protector)
491         default y
492         help
493           This option turns on the "stack-protector" GCC feature. This
494           feature puts, at the beginning of functions, a canary value on
495           the stack just before the return address, and validates
496           the value just before actually returning.  Stack based buffer
497           overflows (that need to overwrite this return address) now also
498           overwrite the canary, which gets detected and the attack is then
499           neutralized via a kernel panic.
500
501           Functions will have the stack-protector canary logic added if they
502           have an 8-byte or larger character array on the stack.
503
504           This feature requires gcc version 4.2 or above, or a distribution
505           gcc with the feature backported ("-fstack-protector").
506
507           On an x86 "defconfig" build, this feature adds canary checks to
508           about 3% of all kernel functions, which increases kernel code size
509           by about 0.3%.
510
511 config STACKPROTECTOR_STRONG
512         bool "Strong Stack Protector"
513         depends on STACKPROTECTOR
514         depends on $(cc-option,-fstack-protector-strong)
515         default y
516         help
517           Functions will have the stack-protector canary logic added in any
518           of the following conditions:
519
520           - local variable's address used as part of the right hand side of an
521             assignment or function argument
522           - local variable is an array (or union containing an array),
523             regardless of array type or length
524           - uses register local variables
525
526           This feature requires gcc version 4.9 or above, or a distribution
527           gcc with the feature backported ("-fstack-protector-strong").
528
529           On an x86 "defconfig" build, this feature adds canary checks to
530           about 20% of all kernel functions, which increases the kernel code
531           size by about 2%.
532
533 config ARCH_SUPPORTS_SHADOW_CALL_STACK
534         bool
535         help
536           An architecture should select this if it supports Clang's Shadow
537           Call Stack and implements runtime support for shadow stack
538           switching.
539
540 config SHADOW_CALL_STACK
541         bool "Clang Shadow Call Stack"
542         depends on CC_IS_CLANG && ARCH_SUPPORTS_SHADOW_CALL_STACK
543         depends on DYNAMIC_FTRACE_WITH_REGS || !FUNCTION_GRAPH_TRACER
544         help
545           This option enables Clang's Shadow Call Stack, which uses a
546           shadow stack to protect function return addresses from being
547           overwritten by an attacker. More information can be found in
548           Clang's documentation:
549
550             https://clang.llvm.org/docs/ShadowCallStack.html
551
552           Note that security guarantees in the kernel differ from the
553           ones documented for user space. The kernel must store addresses
554           of shadow stacks in memory, which means an attacker capable of
555           reading and writing arbitrary memory may be able to locate them
556           and hijack control flow by modifying the stacks.
557
558 config HAVE_ARCH_WITHIN_STACK_FRAMES
559         bool
560         help
561           An architecture should select this if it can walk the kernel stack
562           frames to determine if an object is part of either the arguments
563           or local variables (i.e. that it excludes saved return addresses,
564           and similar) by implementing an inline arch_within_stack_frames(),
565           which is used by CONFIG_HARDENED_USERCOPY.
566
567 config HAVE_CONTEXT_TRACKING
568         bool
569         help
570           Provide kernel/user boundaries probes necessary for subsystems
571           that need it, such as userspace RCU extended quiescent state.
572           Syscalls need to be wrapped inside user_exit()-user_enter(), either
573           optimized behind static key or through the slow path using TIF_NOHZ
574           flag. Exceptions handlers must be wrapped as well. Irqs are already
575           protected inside rcu_irq_enter/rcu_irq_exit() but preemption or signal
576           handling on irq exit still need to be protected.
577
578 config HAVE_TIF_NOHZ
579         bool
580         help
581           Arch relies on TIF_NOHZ and syscall slow path to implement context
582           tracking calls to user_enter()/user_exit().
583
584 config HAVE_VIRT_CPU_ACCOUNTING
585         bool
586
587 config ARCH_HAS_SCALED_CPUTIME
588         bool
589
590 config HAVE_VIRT_CPU_ACCOUNTING_GEN
591         bool
592         default y if 64BIT
593         help
594           With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit.
595           Before enabling this option, arch code must be audited
596           to ensure there are no races in concurrent read/write of
597           cputime_t. For example, reading/writing 64-bit cputime_t on
598           some 32-bit arches may require multiple accesses, so proper
599           locking is needed to protect against concurrent accesses.
600
601
602 config HAVE_IRQ_TIME_ACCOUNTING
603         bool
604         help
605           Archs need to ensure they use a high enough resolution clock to
606           support irq time accounting and then call enable_sched_clock_irqtime().
607
608 config HAVE_MOVE_PMD
609         bool
610         help
611           Archs that select this are able to move page tables at the PMD level.
612
613 config HAVE_ARCH_TRANSPARENT_HUGEPAGE
614         bool
615
616 config HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
617         bool
618
619 config HAVE_ARCH_HUGE_VMAP
620         bool
621
622 config ARCH_WANT_HUGE_PMD_SHARE
623         bool
624
625 config HAVE_ARCH_SOFT_DIRTY
626         bool
627
628 config HAVE_MOD_ARCH_SPECIFIC
629         bool
630         help
631           The arch uses struct mod_arch_specific to store data.  Many arches
632           just need a simple module loader without arch specific data - those
633           should not enable this.
634
635 config MODULES_USE_ELF_RELA
636         bool
637         help
638           Modules only use ELF RELA relocations.  Modules with ELF REL
639           relocations will give an error.
640
641 config MODULES_USE_ELF_REL
642         bool
643         help
644           Modules only use ELF REL relocations.  Modules with ELF RELA
645           relocations will give an error.
646
647 config HAVE_IRQ_EXIT_ON_IRQ_STACK
648         bool
649         help
650           Architecture doesn't only execute the irq handler on the irq stack
651           but also irq_exit(). This way we can process softirqs on this irq
652           stack instead of switching to a new one when we call __do_softirq()
653           in the end of an hardirq.
654           This spares a stack switch and improves cache usage on softirq
655           processing.
656
657 config PGTABLE_LEVELS
658         int
659         default 2
660
661 config ARCH_HAS_ELF_RANDOMIZE
662         bool
663         help
664           An architecture supports choosing randomized locations for
665           stack, mmap, brk, and ET_DYN. Defined functions:
666           - arch_mmap_rnd()
667           - arch_randomize_brk()
668
669 config HAVE_ARCH_MMAP_RND_BITS
670         bool
671         help
672           An arch should select this symbol if it supports setting a variable
673           number of bits for use in establishing the base address for mmap
674           allocations, has MMU enabled and provides values for both:
675           - ARCH_MMAP_RND_BITS_MIN
676           - ARCH_MMAP_RND_BITS_MAX
677
678 config HAVE_EXIT_THREAD
679         bool
680         help
681           An architecture implements exit_thread.
682
683 config ARCH_MMAP_RND_BITS_MIN
684         int
685
686 config ARCH_MMAP_RND_BITS_MAX
687         int
688
689 config ARCH_MMAP_RND_BITS_DEFAULT
690         int
691
692 config ARCH_MMAP_RND_BITS
693         int "Number of bits to use for ASLR of mmap base address" if EXPERT
694         range ARCH_MMAP_RND_BITS_MIN ARCH_MMAP_RND_BITS_MAX
695         default ARCH_MMAP_RND_BITS_DEFAULT if ARCH_MMAP_RND_BITS_DEFAULT
696         default ARCH_MMAP_RND_BITS_MIN
697         depends on HAVE_ARCH_MMAP_RND_BITS
698         help
699           This value can be used to select the number of bits to use to
700           determine the random offset to the base address of vma regions
701           resulting from mmap allocations. This value will be bounded
702           by the architecture's minimum and maximum supported values.
703
704           This value can be changed after boot using the
705           /proc/sys/vm/mmap_rnd_bits tunable
706
707 config HAVE_ARCH_MMAP_RND_COMPAT_BITS
708         bool
709         help
710           An arch should select this symbol if it supports running applications
711           in compatibility mode, supports setting a variable number of bits for
712           use in establishing the base address for mmap allocations, has MMU
713           enabled and provides values for both:
714           - ARCH_MMAP_RND_COMPAT_BITS_MIN
715           - ARCH_MMAP_RND_COMPAT_BITS_MAX
716
717 config ARCH_MMAP_RND_COMPAT_BITS_MIN
718         int
719
720 config ARCH_MMAP_RND_COMPAT_BITS_MAX
721         int
722
723 config ARCH_MMAP_RND_COMPAT_BITS_DEFAULT
724         int
725
726 config ARCH_MMAP_RND_COMPAT_BITS
727         int "Number of bits to use for ASLR of mmap base address for compatible applications" if EXPERT
728         range ARCH_MMAP_RND_COMPAT_BITS_MIN ARCH_MMAP_RND_COMPAT_BITS_MAX
729         default ARCH_MMAP_RND_COMPAT_BITS_DEFAULT if ARCH_MMAP_RND_COMPAT_BITS_DEFAULT
730         default ARCH_MMAP_RND_COMPAT_BITS_MIN
731         depends on HAVE_ARCH_MMAP_RND_COMPAT_BITS
732         help
733           This value can be used to select the number of bits to use to
734           determine the random offset to the base address of vma regions
735           resulting from mmap allocations for compatible applications This
736           value will be bounded by the architecture's minimum and maximum
737           supported values.
738
739           This value can be changed after boot using the
740           /proc/sys/vm/mmap_rnd_compat_bits tunable
741
742 config HAVE_ARCH_COMPAT_MMAP_BASES
743         bool
744         help
745           This allows 64bit applications to invoke 32-bit mmap() syscall
746           and vice-versa 32-bit applications to call 64-bit mmap().
747           Required for applications doing different bitness syscalls.
748
749 # This allows to use a set of generic functions to determine mmap base
750 # address by giving priority to top-down scheme only if the process
751 # is not in legacy mode (compat task, unlimited stack size or
752 # sysctl_legacy_va_layout).
753 # Architecture that selects this option can provide its own version of:
754 # - STACK_RND_MASK
755 config ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
756         bool
757         depends on MMU
758         select ARCH_HAS_ELF_RANDOMIZE
759
760 config HAVE_STACK_VALIDATION
761         bool
762         help
763           Architecture supports the 'objtool check' host tool command, which
764           performs compile-time stack metadata validation.
765
766 config HAVE_RELIABLE_STACKTRACE
767         bool
768         help
769           Architecture has either save_stack_trace_tsk_reliable() or
770           arch_stack_walk_reliable() function which only returns a stack trace
771           if it can guarantee the trace is reliable.
772
773 config HAVE_ARCH_HASH
774         bool
775         default n
776         help
777           If this is set, the architecture provides an <asm/hash.h>
778           file which provides platform-specific implementations of some
779           functions in <linux/hash.h> or fs/namei.c.
780
781 config HAVE_ARCH_NVRAM_OPS
782         bool
783
784 config ISA_BUS_API
785         def_bool ISA
786
787 #
788 # ABI hall of shame
789 #
790 config CLONE_BACKWARDS
791         bool
792         help
793           Architecture has tls passed as the 4th argument of clone(2),
794           not the 5th one.
795
796 config CLONE_BACKWARDS2
797         bool
798         help
799           Architecture has the first two arguments of clone(2) swapped.
800
801 config CLONE_BACKWARDS3
802         bool
803         help
804           Architecture has tls passed as the 3rd argument of clone(2),
805           not the 5th one.
806
807 config ODD_RT_SIGACTION
808         bool
809         help
810           Architecture has unusual rt_sigaction(2) arguments
811
812 config OLD_SIGSUSPEND
813         bool
814         help
815           Architecture has old sigsuspend(2) syscall, of one-argument variety
816
817 config OLD_SIGSUSPEND3
818         bool
819         help
820           Even weirder antique ABI - three-argument sigsuspend(2)
821
822 config OLD_SIGACTION
823         bool
824         help
825           Architecture has old sigaction(2) syscall.  Nope, not the same
826           as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
827           but fairly different variant of sigaction(2), thanks to OSF/1
828           compatibility...
829
830 config COMPAT_OLD_SIGACTION
831         bool
832
833 config COMPAT_32BIT_TIME
834         bool "Provide system calls for 32-bit time_t"
835         default !64BIT || COMPAT
836         help
837           This enables 32 bit time_t support in addition to 64 bit time_t support.
838           This is relevant on all 32-bit architectures, and 64-bit architectures
839           as part of compat syscall handling.
840
841 config ARCH_NO_PREEMPT
842         bool
843
844 config ARCH_SUPPORTS_RT
845         bool
846
847 config CPU_NO_EFFICIENT_FFS
848         def_bool n
849
850 config HAVE_ARCH_VMAP_STACK
851         def_bool n
852         help
853           An arch should select this symbol if it can support kernel stacks
854           in vmalloc space.  This means:
855
856           - vmalloc space must be large enough to hold many kernel stacks.
857             This may rule out many 32-bit architectures.
858
859           - Stacks in vmalloc space need to work reliably.  For example, if
860             vmap page tables are created on demand, either this mechanism
861             needs to work while the stack points to a virtual address with
862             unpopulated page tables or arch code (switch_to() and switch_mm(),
863             most likely) needs to ensure that the stack's page table entries
864             are populated before running on a possibly unpopulated stack.
865
866           - If the stack overflows into a guard page, something reasonable
867             should happen.  The definition of "reasonable" is flexible, but
868             instantly rebooting without logging anything would be unfriendly.
869
870 config VMAP_STACK
871         default y
872         bool "Use a virtually-mapped stack"
873         depends on HAVE_ARCH_VMAP_STACK
874         depends on !KASAN || KASAN_VMALLOC
875         help
876           Enable this if you want the use virtually-mapped kernel stacks
877           with guard pages.  This causes kernel stack overflows to be
878           caught immediately rather than causing difficult-to-diagnose
879           corruption.
880
881           To use this with KASAN, the architecture must support backing
882           virtual mappings with real shadow memory, and KASAN_VMALLOC must
883           be enabled.
884
885 config ARCH_OPTIONAL_KERNEL_RWX
886         def_bool n
887
888 config ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
889         def_bool n
890
891 config ARCH_HAS_STRICT_KERNEL_RWX
892         def_bool n
893
894 config STRICT_KERNEL_RWX
895         bool "Make kernel text and rodata read-only" if ARCH_OPTIONAL_KERNEL_RWX
896         depends on ARCH_HAS_STRICT_KERNEL_RWX
897         default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
898         help
899           If this is set, kernel text and rodata memory will be made read-only,
900           and non-text memory will be made non-executable. This provides
901           protection against certain security exploits (e.g. executing the heap
902           or modifying text)
903
904           These features are considered standard security practice these days.
905           You should say Y here in almost all cases.
906
907 config ARCH_HAS_STRICT_MODULE_RWX
908         def_bool n
909
910 config STRICT_MODULE_RWX
911         bool "Set loadable kernel module data as NX and text as RO" if ARCH_OPTIONAL_KERNEL_RWX
912         depends on ARCH_HAS_STRICT_MODULE_RWX && MODULES
913         default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
914         help
915           If this is set, module text and rodata memory will be made read-only,
916           and non-text memory will be made non-executable. This provides
917           protection against certain security exploits (e.g. writing to text)
918
919 # select if the architecture provides an asm/dma-direct.h header
920 config ARCH_HAS_PHYS_TO_DMA
921         bool
922
923 config HAVE_ARCH_COMPILER_H
924         bool
925         help
926           An architecture can select this if it provides an
927           asm/compiler.h header that should be included after
928           linux/compiler-*.h in order to override macro definitions that those
929           headers generally provide.
930
931 config HAVE_ARCH_PREL32_RELOCATIONS
932         bool
933         help
934           May be selected by an architecture if it supports place-relative
935           32-bit relocations, both in the toolchain and in the module loader,
936           in which case relative references can be used in special sections
937           for PCI fixup, initcalls etc which are only half the size on 64 bit
938           architectures, and don't require runtime relocation on relocatable
939           kernels.
940
941 config ARCH_USE_MEMREMAP_PROT
942         bool
943
944 config LOCK_EVENT_COUNTS
945         bool "Locking event counts collection"
946         depends on DEBUG_FS
947         help
948           Enable light-weight counting of various locking related events
949           in the system with minimal performance impact. This reduces
950           the chance of application behavior change because of timing
951           differences. The counts are reported via debugfs.
952
953 # Select if the architecture has support for applying RELR relocations.
954 config ARCH_HAS_RELR
955         bool
956
957 config RELR
958         bool "Use RELR relocation packing"
959         depends on ARCH_HAS_RELR && TOOLS_SUPPORT_RELR
960         default y
961         help
962           Store the kernel's dynamic relocations in the RELR relocation packing
963           format. Requires a compatible linker (LLD supports this feature), as
964           well as compatible NM and OBJCOPY utilities (llvm-nm and llvm-objcopy
965           are compatible).
966
967 config ARCH_HAS_MEM_ENCRYPT
968         bool
969
970 config HAVE_SPARSE_SYSCALL_NR
971        bool
972        help
973           An architecture should select this if its syscall numbering is sparse
974           to save space. For example, MIPS architecture has a syscall array with
975           entries at 4000, 5000 and 6000 locations. This option turns on syscall
976           related optimizations for a given architecture.
977
978 source "kernel/gcov/Kconfig"
979
980 source "scripts/gcc-plugins/Kconfig"
981
982 endmenu