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