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