b24413180f560 (Greg Kroah-Hartman 2017-11-01 15:07:57 +0100 1) # SPDX-License-Identifier: GPL-2.0
fb32e03fdc170 (Mathieu Desnoyers 2008-02-02 15:10:33 -0500 2) #
fb32e03fdc170 (Mathieu Desnoyers 2008-02-02 15:10:33 -0500 3) # General architecture dependent options
fb32e03fdc170 (Mathieu Desnoyers 2008-02-02 15:10:33 -0500 4) #
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 5)
1572497cb0e6d (Christoph Hellwig 2018-07-31 13:39:30 +0200 6) #
1572497cb0e6d (Christoph Hellwig 2018-07-31 13:39:30 +0200 7) # Note: arch/$(SRCARCH)/Kconfig needs to be included first so that it can
1572497cb0e6d (Christoph Hellwig 2018-07-31 13:39:30 +0200 8) # override the default values in this file.
1572497cb0e6d (Christoph Hellwig 2018-07-31 13:39:30 +0200 9) #
1572497cb0e6d (Christoph Hellwig 2018-07-31 13:39:30 +0200 10) source "arch/$(SRCARCH)/Kconfig"
1572497cb0e6d (Christoph Hellwig 2018-07-31 13:39:30 +0200 11)
22471e1313f2b (Randy Dunlap 2018-07-31 13:39:33 +0200 12) menu "General architecture-dependent options"
22471e1313f2b (Randy Dunlap 2018-07-31 13:39:33 +0200 13)
692f66f26a4c1 (Hari Bathini 2017-05-08 15:56:18 -0700 14) config CRASH_CORE
692f66f26a4c1 (Hari Bathini 2017-05-08 15:56:18 -0700 15) bool
692f66f26a4c1 (Hari Bathini 2017-05-08 15:56:18 -0700 16)
2965faa5e03d1 (Dave Young 2015-09-09 15:38:55 -0700 17) config KEXEC_CORE
692f66f26a4c1 (Hari Bathini 2017-05-08 15:56:18 -0700 18) select CRASH_CORE
2965faa5e03d1 (Dave Young 2015-09-09 15:38:55 -0700 19) bool
2965faa5e03d1 (Dave Young 2015-09-09 15:38:55 -0700 20)
175fca3bf91a1 (Sven Schnelle 2019-08-23 21:49:13 +0200 21) config KEXEC_ELF
175fca3bf91a1 (Sven Schnelle 2019-08-23 21:49:13 +0200 22) bool
175fca3bf91a1 (Sven Schnelle 2019-08-23 21:49:13 +0200 23)
467d27824920e (Thiago Jung Bauermann 2016-12-19 16:22:32 -0800 24) config HAVE_IMA_KEXEC
467d27824920e (Thiago Jung Bauermann 2016-12-19 16:22:32 -0800 25) bool
467d27824920e (Thiago Jung Bauermann 2016-12-19 16:22:32 -0800 26)
5e6e9852d6f76 (Christoph Hellwig 2020-09-03 16:22:35 +0200 27) config SET_FS
5e6e9852d6f76 (Christoph Hellwig 2020-09-03 16:22:35 +0200 28) bool
5e6e9852d6f76 (Christoph Hellwig 2020-09-03 16:22:35 +0200 29)
05736e4ac13c0 (Thomas Gleixner 2018-05-29 17:48:27 +0200 30) config HOTPLUG_SMT
05736e4ac13c0 (Thomas Gleixner 2018-05-29 17:48:27 +0200 31) bool
05736e4ac13c0 (Thomas Gleixner 2018-05-29 17:48:27 +0200 32)
142781e108b13 (Thomas Gleixner 2020-07-22 23:59:56 +0200 33) config GENERIC_ENTRY
142781e108b13 (Thomas Gleixner 2020-07-22 23:59:56 +0200 34) bool
142781e108b13 (Thomas Gleixner 2020-07-22 23:59:56 +0200 35)
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 36) config KPROBES
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 37) bool "Kprobes"
05ed160e89baf (Masami Hiramatsu 2010-09-13 19:25:41 +0900 38) depends on MODULES
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 39) depends on HAVE_KPROBES
05ed160e89baf (Masami Hiramatsu 2010-09-13 19:25:41 +0900 40) select KALLSYMS
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 41) help
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 42) Kprobes allows you to trap at almost any kernel address and
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 43) execute a callback function. register_kprobe() establishes
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 44) a probepoint and specifies the callback. Kprobes is useful
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 45) for kernel debugging, non-intrusive instrumentation and testing.
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 46) If in doubt, say "N".
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 47)
45f81b1c96d97 (Steven Rostedt 2010-10-29 12:33:43 -0400 48) config JUMP_LABEL
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 49) bool "Optimize very unlikely/likely branches"
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 50) depends on HAVE_ARCH_JUMP_LABEL
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 51) depends on CC_HAS_ASM_GOTO
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 52) help
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 53) This option enables a transparent branch optimization that
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 54) makes certain almost-always-true or almost-always-false branch
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 55) conditions even cheaper to execute within the kernel.
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 56)
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 57) Certain performance-sensitive kernel code, such as trace points,
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 58) scheduler functionality, networking code and KVM have such
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 59) branches and include support for this optimization technique.
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 60)
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 61) If it is detected that the compiler has support for "asm goto",
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 62) the kernel will compile such branches with just a nop
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 63) instruction. When the condition flag is toggled to true, the
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 64) nop will be converted to a jump instruction to execute the
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 65) conditional block of instructions.
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 66)
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 67) This technique lowers overhead and stress on the branch prediction
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 68) of the processor and generally makes the kernel faster. The update
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 69) of the condition is slower, but those are always very rare.
45f81b1c96d97 (Steven Rostedt 2010-10-29 12:33:43 -0400 70)
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 71) ( On 32-bit x86, the necessary options added to the compiler
c5905afb0ee65 (Ingo Molnar 2012-02-24 08:31:31 +0100 72) flags may increase the size of the kernel slightly. )
45f81b1c96d97 (Steven Rostedt 2010-10-29 12:33:43 -0400 73)
1987c947d905b (Peter Zijlstra 2015-07-27 18:32:09 +0200 74) config STATIC_KEYS_SELFTEST
1987c947d905b (Peter Zijlstra 2015-07-27 18:32:09 +0200 75) bool "Static key selftest"
1987c947d905b (Peter Zijlstra 2015-07-27 18:32:09 +0200 76) depends on JUMP_LABEL
1987c947d905b (Peter Zijlstra 2015-07-27 18:32:09 +0200 77) help
1987c947d905b (Peter Zijlstra 2015-07-27 18:32:09 +0200 78) Boot time self-test of the branch patching code.
1987c947d905b (Peter Zijlstra 2015-07-27 18:32:09 +0200 79)
f03c412915f5f (Peter Zijlstra 2020-08-18 15:57:46 +0200 80) config STATIC_CALL_SELFTEST
f03c412915f5f (Peter Zijlstra 2020-08-18 15:57:46 +0200 81) bool "Static call selftest"
f03c412915f5f (Peter Zijlstra 2020-08-18 15:57:46 +0200 82) depends on HAVE_STATIC_CALL
f03c412915f5f (Peter Zijlstra 2020-08-18 15:57:46 +0200 83) help
f03c412915f5f (Peter Zijlstra 2020-08-18 15:57:46 +0200 84) Boot time self-test of the call patching code.
f03c412915f5f (Peter Zijlstra 2020-08-18 15:57:46 +0200 85)
afd66255b9a48 (Masami Hiramatsu 2010-02-25 08:34:07 -0500 86) config OPTPROBES
5cc718b9dad68 (Masami Hiramatsu 2010-03-15 13:00:54 -0400 87) def_bool y
5cc718b9dad68 (Masami Hiramatsu 2010-03-15 13:00:54 -0400 88) depends on KPROBES && HAVE_OPTPROBES
01b1d88b09824 (Thomas Gleixner 2019-07-26 23:19:38 +0200 89) select TASKS_RCU if PREEMPTION
afd66255b9a48 (Masami Hiramatsu 2010-02-25 08:34:07 -0500 90)
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 91) config KPROBES_ON_FTRACE
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 92) def_bool y
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 93) depends on KPROBES && HAVE_KPROBES_ON_FTRACE
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 94) depends on DYNAMIC_FTRACE_WITH_REGS
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 95) help
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 96) If function tracer is enabled and the arch supports full
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 97) passing of pt_regs to function tracing, then kprobes can
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 98) optimize on top of function tracing.
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 99)
2b14449835086 (Srikar Dronamraju 2012-02-09 14:56:42 +0530 100) config UPROBES
09294e31b1779 (David A. Long 2014-03-07 10:32:22 -0500 101) def_bool n
e8f4aa6087fa8 (Allen Pais 2016-10-13 10:06:13 +0530 102) depends on ARCH_SUPPORTS_UPROBES
2b14449835086 (Srikar Dronamraju 2012-02-09 14:56:42 +0530 103) help
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 104) Uprobes is the user-space counterpart to kprobes: they
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 105) enable instrumentation applications (such as 'perf probe')
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 106) to establish unintrusive probes in user-space binaries and
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 107) libraries, by executing handler functions when the probes
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 108) are hit by user-space applications.
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 109)
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 110) ( These probes come in the form of single-byte breakpoints,
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 111) managed by the kernel and kept transparent to the probed
7b2d81d48a2d8 (Ingo Molnar 2012-02-17 09:27:41 +0100 112) application. )
2b14449835086 (Srikar Dronamraju 2012-02-09 14:56:42 +0530 113)
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 114) config HAVE_64BIT_ALIGNED_ACCESS
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 115) def_bool 64BIT && !HAVE_EFFICIENT_UNALIGNED_ACCESS
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 116) help
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 117) Some architectures require 64 bit accesses to be 64 bit
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 118) aligned, which also requires structs containing 64 bit values
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 119) to be 64 bit aligned too. This includes some 32 bit
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 120) architectures which can do 64 bit accesses, as well as 64 bit
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 121) architectures without unaligned access.
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 122)
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 123) This symbol should be selected by an architecture if 64 bit
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 124) accesses are required to be 64 bit aligned in this way even
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 125) though it is not a 64 bit architecture.
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 126)
ba1a297d78f47 (Lukas Bulwahn 2021-01-19 10:53:26 +0100 127) See Documentation/core-api/unaligned-memory-access.rst for
ba1a297d78f47 (Lukas Bulwahn 2021-01-19 10:53:26 +0100 128) more information on the topic of unaligned memory accesses.
adab66b71abfe (Steven Rostedt (VMware) 2020-12-14 12:33:51 -0500 129)
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 130) config HAVE_EFFICIENT_UNALIGNED_ACCESS
9ba16087d9f99 (Jan Beulich 2008-10-15 22:01:38 -0700 131) bool
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 132) help
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 133) Some architectures are unable to perform unaligned accesses
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 134) without the use of get_unaligned/put_unaligned. Others are
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 135) unable to perform such accesses efficiently (e.g. trap on
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 136) unaligned access and require fixing it up in the exception
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 137) handler.)
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 138)
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 139) This symbol should be selected by an architecture if it can
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 140) perform unaligned accesses efficiently to allow different
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 141) code paths to be selected for these cases. Some network
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 142) drivers, for example, could opt to not fix up alignment
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 143) problems with received packets if doing so would not help
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 144) much.
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 145)
c9b54d6f362c0 (Mauro Carvalho Chehab 2020-06-23 15:31:38 +0200 146) See Documentation/core-api/unaligned-memory-access.rst for more
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 147) information on the topic of unaligned memory accesses.
58340a07c194e (Johannes Berg 2008-07-25 01:45:33 -0700 148)
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 149) config ARCH_USE_BUILTIN_BSWAP
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 150) bool
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 151) help
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 152) Modern versions of GCC (since 4.4) have builtin functions
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 153) for handling byte-swapping. Using these, instead of the old
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 154) inline assembler that the architecture code provides in the
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 155) __arch_bswapXX() macros, allows the compiler to see what's
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 156) happening and offers more opportunity for optimisation. In
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 157) particular, the compiler will be able to combine the byteswap
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 158) with a nearby load or store and use load-and-swap or
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 159) store-and-swap instructions if the architecture has them. It
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 160) should almost *never* result in code which is worse than the
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 161) hand-coded assembler in <asm/swab.h>. But just in case it
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 162) does, the use of the builtins is optional.
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 163)
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 164) Any architecture with load-and-swap or store-and-swap
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 165) instructions should set this. And it shouldn't hurt to set it
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 166) on architectures that don't have such instructions.
cf66bb93e0f75 (David Woodhouse 2012-12-03 16:25:40 +0000 167)
9edddaa200df1 (Ananth N Mavinakayanahalli 2008-03-04 14:28:37 -0800 168) config KRETPROBES
9edddaa200df1 (Ananth N Mavinakayanahalli 2008-03-04 14:28:37 -0800 169) def_bool y
9edddaa200df1 (Ananth N Mavinakayanahalli 2008-03-04 14:28:37 -0800 170) depends on KPROBES && HAVE_KRETPROBES
9edddaa200df1 (Ananth N Mavinakayanahalli 2008-03-04 14:28:37 -0800 171)
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 172) config USER_RETURN_NOTIFIER
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 173) bool
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 174) depends on HAVE_USER_RETURN_NOTIFIER
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 175) help
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 176) Provide a kernel-internal notification when a cpu is about to
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 177) switch to user mode.
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 178)
28b2ee20c7cba (Rik van Riel 2008-07-23 21:27:05 -0700 179) config HAVE_IOREMAP_PROT
9ba16087d9f99 (Jan Beulich 2008-10-15 22:01:38 -0700 180) bool
28b2ee20c7cba (Rik van Riel 2008-07-23 21:27:05 -0700 181)
125e564582cbc (Mathieu Desnoyers 2008-02-02 15:10:36 -0500 182) config HAVE_KPROBES
9ba16087d9f99 (Jan Beulich 2008-10-15 22:01:38 -0700 183) bool
9edddaa200df1 (Ananth N Mavinakayanahalli 2008-03-04 14:28:37 -0800 184)
9edddaa200df1 (Ananth N Mavinakayanahalli 2008-03-04 14:28:37 -0800 185) config HAVE_KRETPROBES
9ba16087d9f99 (Jan Beulich 2008-10-15 22:01:38 -0700 186) bool
74bc7ceebfa1c (Arthur Kepner 2008-04-29 01:00:30 -0700 187)
afd66255b9a48 (Masami Hiramatsu 2010-02-25 08:34:07 -0500 188) config HAVE_OPTPROBES
afd66255b9a48 (Masami Hiramatsu 2010-02-25 08:34:07 -0500 189) bool
d314d74c695f9 (Cong Wang 2012-03-23 15:01:51 -0700 190)
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 191) config HAVE_KPROBES_ON_FTRACE
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 192) bool
e7dbfe349d12e (Masami Hiramatsu 2012-09-28 17:15:20 +0900 193)
540adea3809f6 (Masami Hiramatsu 2018-01-13 02:55:03 +0900 194) config HAVE_FUNCTION_ERROR_INJECTION
9802d86585db9 (Josef Bacik 2017-12-11 11:36:48 -0500 195) bool
9802d86585db9 (Josef Bacik 2017-12-11 11:36:48 -0500 196)
42a0bb3f71383 (Petr Mladek 2016-05-20 17:00:33 -0700 197) config HAVE_NMI
42a0bb3f71383 (Petr Mladek 2016-05-20 17:00:33 -0700 198) bool
42a0bb3f71383 (Petr Mladek 2016-05-20 17:00:33 -0700 199)
4aae683f13277 (Masahiro Yamada 2021-07-31 14:22:32 +0900 200) config TRACE_IRQFLAGS_SUPPORT
4aae683f13277 (Masahiro Yamada 2021-07-31 14:22:32 +0900 201) bool
4aae683f13277 (Masahiro Yamada 2021-07-31 14:22:32 +0900 202)
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 203) #
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 204) # An arch should select this if it provides all these things:
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 205) #
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 206) # task_pt_regs() in asm/processor.h or asm/ptrace.h
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 207) # arch_has_single_step() if there is hardware single-step support
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 208) # arch_has_block_step() if there is hardware block-step support
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 209) # asm/syscall.h supplying asm-generic/syscall.h interface
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 210) # linux/regset.h user_regset interfaces
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 211) # CORE_DUMP_USE_REGSET #define'd in linux/elf.h
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 212) # TIF_SYSCALL_TRACE calls tracehook_report_syscall_{entry,exit}
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 213) # TIF_NOTIFY_RESUME calls tracehook_notify_resume()
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 214) # signal delivery calls tracehook_signal_handler()
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 215) #
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 216) config HAVE_ARCH_TRACEHOOK
9ba16087d9f99 (Jan Beulich 2008-10-15 22:01:38 -0700 217) bool
1f5a4ad97a0e7 (Roland McGrath 2008-07-25 19:45:57 -0700 218)
c64be2bb1c6eb (Marek Szyprowski 2011-12-29 13:09:51 +0100 219) config HAVE_DMA_CONTIGUOUS
c64be2bb1c6eb (Marek Szyprowski 2011-12-29 13:09:51 +0100 220) bool
c64be2bb1c6eb (Marek Szyprowski 2011-12-29 13:09:51 +0100 221)
29d5e0476e1c4 (Thomas Gleixner 2012-04-20 13:05:45 +0000 222) config GENERIC_SMP_IDLE_THREAD
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 223) bool
29d5e0476e1c4 (Thomas Gleixner 2012-04-20 13:05:45 +0000 224)
485cf5dac2966 (Kevin Hilman 2013-04-24 17:19:13 -0700 225) config GENERIC_IDLE_POLL_SETUP
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 226) bool
485cf5dac2966 (Kevin Hilman 2013-04-24 17:19:13 -0700 227)
6974f0c4555e2 (Daniel Micay 2017-07-12 14:36:10 -0700 228) config ARCH_HAS_FORTIFY_SOURCE
6974f0c4555e2 (Daniel Micay 2017-07-12 14:36:10 -0700 229) bool
6974f0c4555e2 (Daniel Micay 2017-07-12 14:36:10 -0700 230) help
6974f0c4555e2 (Daniel Micay 2017-07-12 14:36:10 -0700 231) An architecture should select this when it can successfully
6974f0c4555e2 (Daniel Micay 2017-07-12 14:36:10 -0700 232) build and run with CONFIG_FORTIFY_SOURCE.
6974f0c4555e2 (Daniel Micay 2017-07-12 14:36:10 -0700 233)
d8ae8a3765bfa (Christoph Hellwig 2019-05-13 17:18:30 -0700 234) #
d8ae8a3765bfa (Christoph Hellwig 2019-05-13 17:18:30 -0700 235) # Select if the arch provides a historic keepinit alias for the retain_initrd
d8ae8a3765bfa (Christoph Hellwig 2019-05-13 17:18:30 -0700 236) # command line option
d8ae8a3765bfa (Christoph Hellwig 2019-05-13 17:18:30 -0700 237) #
d8ae8a3765bfa (Christoph Hellwig 2019-05-13 17:18:30 -0700 238) config ARCH_HAS_KEEPINITRD
d8ae8a3765bfa (Christoph Hellwig 2019-05-13 17:18:30 -0700 239) bool
d8ae8a3765bfa (Christoph Hellwig 2019-05-13 17:18:30 -0700 240)
d2852a2240509 (Daniel Borkmann 2017-02-21 16:09:33 +0100 241) # Select if arch has all set_memory_ro/rw/x/nx() functions in asm/cacheflush.h
d2852a2240509 (Daniel Borkmann 2017-02-21 16:09:33 +0100 242) config ARCH_HAS_SET_MEMORY
d2852a2240509 (Daniel Borkmann 2017-02-21 16:09:33 +0100 243) bool
d2852a2240509 (Daniel Borkmann 2017-02-21 16:09:33 +0100 244)
d253ca0c3865a (Rick Edgecombe 2019-04-25 17:11:34 -0700 245) # Select if arch has all set_direct_map_invalid/default() functions
d253ca0c3865a (Rick Edgecombe 2019-04-25 17:11:34 -0700 246) config ARCH_HAS_SET_DIRECT_MAP
d253ca0c3865a (Rick Edgecombe 2019-04-25 17:11:34 -0700 247) bool
d253ca0c3865a (Rick Edgecombe 2019-04-25 17:11:34 -0700 248)
c30700db9eaab (Christoph Hellwig 2019-06-03 08:43:51 +0200 249) #
fa7e2247c5729 (Christoph Hellwig 2020-02-21 15:55:43 -0800 250) # Select if the architecture provides the arch_dma_set_uncached symbol to
a86ecfa6a873e (Colin Ian King 2020-12-14 19:03:44 -0800 251) # either provide an uncached segment alias for a DMA allocation, or
fa7e2247c5729 (Christoph Hellwig 2020-02-21 15:55:43 -0800 252) # to remap the page tables in place.
c30700db9eaab (Christoph Hellwig 2019-06-03 08:43:51 +0200 253) #
fa7e2247c5729 (Christoph Hellwig 2020-02-21 15:55:43 -0800 254) config ARCH_HAS_DMA_SET_UNCACHED
c30700db9eaab (Christoph Hellwig 2019-06-03 08:43:51 +0200 255) bool
c30700db9eaab (Christoph Hellwig 2019-06-03 08:43:51 +0200 256)
999a5d1203baa (Christoph Hellwig 2020-02-21 12:35:05 -0800 257) #
999a5d1203baa (Christoph Hellwig 2020-02-21 12:35:05 -0800 258) # Select if the architectures provides the arch_dma_clear_uncached symbol
999a5d1203baa (Christoph Hellwig 2020-02-21 12:35:05 -0800 259) # to undo an in-place page table remap for uncached access.
999a5d1203baa (Christoph Hellwig 2020-02-21 12:35:05 -0800 260) #
999a5d1203baa (Christoph Hellwig 2020-02-21 12:35:05 -0800 261) config ARCH_HAS_DMA_CLEAR_UNCACHED
c30700db9eaab (Christoph Hellwig 2019-06-03 08:43:51 +0200 262) bool
c30700db9eaab (Christoph Hellwig 2019-06-03 08:43:51 +0200 263)
0500871f21b23 (David Howells 2018-01-02 15:12:01 +0000 264) # Select if arch init_task must go in the __init_task_data section
0500871f21b23 (David Howells 2018-01-02 15:12:01 +0000 265) config ARCH_TASK_STRUCT_ON_STACK
24b54fee106d8 (Krzysztof Kozlowski 2019-12-04 16:50:26 -0800 266) bool
a4a2eb490e38a (Thomas Gleixner 2012-05-03 09:02:48 +0000 267)
f5e10287367dc (Thomas Gleixner 2012-05-05 15:05:48 +0000 268) # Select if arch has its private alloc_task_struct() function
f5e10287367dc (Thomas Gleixner 2012-05-05 15:05:48 +0000 269) config ARCH_TASK_STRUCT_ALLOCATOR
f5e10287367dc (Thomas Gleixner 2012-05-05 15:05:48 +0000 270) bool
f5e10287367dc (Thomas Gleixner 2012-05-05 15:05:48 +0000 271)
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 272) config HAVE_ARCH_THREAD_STRUCT_WHITELIST
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 273) bool
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 274) depends on !ARCH_TASK_STRUCT_ALLOCATOR
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 275) help
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 276) An architecture should select this to provide hardened usercopy
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 277) knowledge about what region of the thread_struct should be
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 278) whitelisted for copying to userspace. Normally this is only the
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 279) FPU registers. Specifically, arch_thread_struct_whitelist()
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 280) should be implemented. Without this, the entire thread_struct
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 281) field in task_struct will be left whitelisted.
5905429ad8565 (Kees Cook 2017-08-16 13:00:58 -0700 282)
b235beea9e996 (Linus Torvalds 2016-06-24 15:09:37 -0700 283) # Select if arch has its private alloc_thread_stack() function
b235beea9e996 (Linus Torvalds 2016-06-24 15:09:37 -0700 284) config ARCH_THREAD_STACK_ALLOCATOR
f5e10287367dc (Thomas Gleixner 2012-05-05 15:05:48 +0000 285) bool
f5e10287367dc (Thomas Gleixner 2012-05-05 15:05:48 +0000 286)
5aaeb5c01c5b6 (Ingo Molnar 2015-07-17 12:28:12 +0200 287) # Select if arch wants to size task_struct dynamically via arch_task_struct_size:
5aaeb5c01c5b6 (Ingo Molnar 2015-07-17 12:28:12 +0200 288) config ARCH_WANTS_DYNAMIC_TASK_STRUCT
5aaeb5c01c5b6 (Ingo Molnar 2015-07-17 12:28:12 +0200 289) bool
5aaeb5c01c5b6 (Ingo Molnar 2015-07-17 12:28:12 +0200 290)
51c2ee6d121ce (Nick Desaulniers 2021-06-21 16:18:22 -0700 291) config ARCH_WANTS_NO_INSTR
51c2ee6d121ce (Nick Desaulniers 2021-06-21 16:18:22 -0700 292) bool
51c2ee6d121ce (Nick Desaulniers 2021-06-21 16:18:22 -0700 293) help
51c2ee6d121ce (Nick Desaulniers 2021-06-21 16:18:22 -0700 294) An architecture should select this if the noinstr macro is being used on
51c2ee6d121ce (Nick Desaulniers 2021-06-21 16:18:22 -0700 295) functions to denote that the toolchain should avoid instrumenting such
51c2ee6d121ce (Nick Desaulniers 2021-06-21 16:18:22 -0700 296) functions and is required for correctness.
51c2ee6d121ce (Nick Desaulniers 2021-06-21 16:18:22 -0700 297)
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 298) config ARCH_32BIT_OFF_T
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 299) bool
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 300) depends on !64BIT
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 301) help
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 302) All new 32-bit architectures should have 64-bit off_t type on
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 303) userspace side which corresponds to the loff_t kernel type. This
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 304) is the requirement for modern ABIs. Some existing architectures
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 305) still support 32-bit off_t. This option is enabled for all such
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 306) architectures explicitly.
942fa985e9f16 (Yury Norov 2018-05-16 11:18:49 +0300 307)
96c0a6a72d181 (Heiko Carstens 2021-02-10 21:51:02 +0100 308) # Selected by 64 bit architectures which have a 32 bit f_tinode in struct ustat
96c0a6a72d181 (Heiko Carstens 2021-02-10 21:51:02 +0100 309) config ARCH_32BIT_USTAT_F_TINODE
96c0a6a72d181 (Heiko Carstens 2021-02-10 21:51:02 +0100 310) bool
96c0a6a72d181 (Heiko Carstens 2021-02-10 21:51:02 +0100 311)
2ff2b7ec65dce (Masahiro Yamada 2019-08-19 14:54:20 +0900 312) config HAVE_ASM_MODVERSIONS
2ff2b7ec65dce (Masahiro Yamada 2019-08-19 14:54:20 +0900 313) bool
2ff2b7ec65dce (Masahiro Yamada 2019-08-19 14:54:20 +0900 314) help
a86ecfa6a873e (Colin Ian King 2020-12-14 19:03:44 -0800 315) This symbol should be selected by an architecture if it provides
2ff2b7ec65dce (Masahiro Yamada 2019-08-19 14:54:20 +0900 316) <asm/asm-prototypes.h> to support the module versioning for symbols
2ff2b7ec65dce (Masahiro Yamada 2019-08-19 14:54:20 +0900 317) exported from assembly code.
2ff2b7ec65dce (Masahiro Yamada 2019-08-19 14:54:20 +0900 318)
f850c30c8b426 (Heiko Carstens 2010-02-10 17:25:17 +0100 319) config HAVE_REGS_AND_STACK_ACCESS_API
f850c30c8b426 (Heiko Carstens 2010-02-10 17:25:17 +0100 320) bool
e01292b1fd68f (Heiko Carstens 2010-02-18 14:25:21 +0100 321) help
a86ecfa6a873e (Colin Ian King 2020-12-14 19:03:44 -0800 322) This symbol should be selected by an architecture if it supports
e01292b1fd68f (Heiko Carstens 2010-02-18 14:25:21 +0100 323) the API needed to access registers and stack entries from pt_regs,
e01292b1fd68f (Heiko Carstens 2010-02-18 14:25:21 +0100 324) declared in asm/ptrace.h
e01292b1fd68f (Heiko Carstens 2010-02-18 14:25:21 +0100 325) For example the kprobes-based event tracer needs this API.
f850c30c8b426 (Heiko Carstens 2010-02-10 17:25:17 +0100 326)
d7822b1e24f2d (Mathieu Desnoyers 2018-06-02 08:43:54 -0400 327) config HAVE_RSEQ
d7822b1e24f2d (Mathieu Desnoyers 2018-06-02 08:43:54 -0400 328) bool
d7822b1e24f2d (Mathieu Desnoyers 2018-06-02 08:43:54 -0400 329) depends on HAVE_REGS_AND_STACK_ACCESS_API
d7822b1e24f2d (Mathieu Desnoyers 2018-06-02 08:43:54 -0400 330) help
d7822b1e24f2d (Mathieu Desnoyers 2018-06-02 08:43:54 -0400 331) This symbol should be selected by an architecture if it
d7822b1e24f2d (Mathieu Desnoyers 2018-06-02 08:43:54 -0400 332) supports an implementation of restartable sequences.
d7822b1e24f2d (Mathieu Desnoyers 2018-06-02 08:43:54 -0400 333)
3c88ee194c288 (Masami Hiramatsu 2018-04-25 21:20:57 +0900 334) config HAVE_FUNCTION_ARG_ACCESS_API
3c88ee194c288 (Masami Hiramatsu 2018-04-25 21:20:57 +0900 335) bool
3c88ee194c288 (Masami Hiramatsu 2018-04-25 21:20:57 +0900 336) help
a86ecfa6a873e (Colin Ian King 2020-12-14 19:03:44 -0800 337) This symbol should be selected by an architecture if it supports
3c88ee194c288 (Masami Hiramatsu 2018-04-25 21:20:57 +0900 338) the API needed to access function arguments from pt_regs,
3c88ee194c288 (Masami Hiramatsu 2018-04-25 21:20:57 +0900 339) declared in asm/ptrace.h
3c88ee194c288 (Masami Hiramatsu 2018-04-25 21:20:57 +0900 340)
62a038d34db26 (K.Prasad 2009-06-01 23:43:33 +0530 341) config HAVE_HW_BREAKPOINT
62a038d34db26 (K.Prasad 2009-06-01 23:43:33 +0530 342) bool
99e8c5a3b875a (Frederic Weisbecker 2009-12-17 01:33:54 +0100 343) depends on PERF_EVENTS
62a038d34db26 (K.Prasad 2009-06-01 23:43:33 +0530 344)
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 345) config HAVE_MIXED_BREAKPOINTS_REGS
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 346) bool
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 347) depends on HAVE_HW_BREAKPOINT
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 348) help
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 349) Depending on the arch implementation of hardware breakpoints,
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 350) some of them have separate registers for data and instruction
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 351) breakpoints addresses, others have mixed registers to store
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 352) them but define the access type in a control register.
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 353) Select this option if your arch implements breakpoints under the
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 354) latter fashion.
0102752e4c9e0 (Frederic Weisbecker 2010-04-11 18:55:56 +0200 355)
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 356) config HAVE_USER_RETURN_NOTIFIER
7c68af6e32c73 (Avi Kivity 2009-09-19 09:40:22 +0300 357) bool
a1922ed661ab2 (Ingo Molnar 2009-09-07 08:19:51 +0200 358)
c01d4323309a9 (Frederic Weisbecker 2010-05-15 22:57:48 +0200 359) config HAVE_PERF_EVENTS_NMI
c01d4323309a9 (Frederic Weisbecker 2010-05-15 22:57:48 +0200 360) bool
23637d477c1f5 (Frederic Weisbecker 2010-05-15 23:15:20 +0200 361) help
23637d477c1f5 (Frederic Weisbecker 2010-05-15 23:15:20 +0200 362) System hardware can generate an NMI using the perf event
23637d477c1f5 (Frederic Weisbecker 2010-05-15 23:15:20 +0200 363) subsystem. Also has support for calculating CPU cycle events
23637d477c1f5 (Frederic Weisbecker 2010-05-15 23:15:20 +0200 364) to determine how many clock cycles in a given period.
c01d4323309a9 (Frederic Weisbecker 2010-05-15 22:57:48 +0200 365)
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 366) config HAVE_HARDLOCKUP_DETECTOR_PERF
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 367) bool
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 368) depends on HAVE_PERF_EVENTS_NMI
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 369) help
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 370) The arch chooses to use the generic perf-NMI-based hardlockup
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 371) detector. Must define HAVE_PERF_EVENTS_NMI.
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 372)
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 373) config HAVE_NMI_WATCHDOG
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 374) depends on HAVE_NMI
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 375) bool
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 376) help
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 377) The arch provides a low level NMI watchdog. It provides
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 378) asm/nmi.h, and defines its own arch_touch_nmi_watchdog().
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 379)
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 380) config HAVE_HARDLOCKUP_DETECTOR_ARCH
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 381) bool
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 382) select HAVE_NMI_WATCHDOG
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 383) help
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 384) The arch chooses to provide its own hardlockup detector, which is
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 385) a superset of the HAVE_NMI_WATCHDOG. It also conforms to config
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 386) interfaces and parameters provided by hardlockup detector subsystem.
05a4a95279311 (Nicholas Piggin 2017-07-12 14:35:46 -0700 387)
c5e63197db519 (Jiri Olsa 2012-08-07 15:20:36 +0200 388) config HAVE_PERF_REGS
c5e63197db519 (Jiri Olsa 2012-08-07 15:20:36 +0200 389) bool
c5e63197db519 (Jiri Olsa 2012-08-07 15:20:36 +0200 390) help
c5e63197db519 (Jiri Olsa 2012-08-07 15:20:36 +0200 391) Support selective register dumps for perf events. This includes
c5e63197db519 (Jiri Olsa 2012-08-07 15:20:36 +0200 392) bit-mapping of each registers and a unique architecture id.
c5e63197db519 (Jiri Olsa 2012-08-07 15:20:36 +0200 393)
c5ebcedb566ef (Jiri Olsa 2012-08-07 15:20:40 +0200 394) config HAVE_PERF_USER_STACK_DUMP
c5ebcedb566ef (Jiri Olsa 2012-08-07 15:20:40 +0200 395) bool
c5ebcedb566ef (Jiri Olsa 2012-08-07 15:20:40 +0200 396) help
c5ebcedb566ef (Jiri Olsa 2012-08-07 15:20:40 +0200 397) Support user stack dumps for perf event samples. This needs
c5ebcedb566ef (Jiri Olsa 2012-08-07 15:20:40 +0200 398) access to the user stack pointer which is not unified across
c5ebcedb566ef (Jiri Olsa 2012-08-07 15:20:40 +0200 399) architectures.
c5ebcedb566ef (Jiri Olsa 2012-08-07 15:20:40 +0200 400)
bf5438fca2950 (Jason Baron 2010-09-17 11:09:00 -0400 401) config HAVE_ARCH_JUMP_LABEL
bf5438fca2950 (Jason Baron 2010-09-17 11:09:00 -0400 402) bool
bf5438fca2950 (Jason Baron 2010-09-17 11:09:00 -0400 403)
50ff18ab497aa (Ard Biesheuvel 2018-09-18 23:51:37 -0700 404) config HAVE_ARCH_JUMP_LABEL_RELATIVE
50ff18ab497aa (Ard Biesheuvel 2018-09-18 23:51:37 -0700 405) bool
50ff18ab497aa (Ard Biesheuvel 2018-09-18 23:51:37 -0700 406)
0d6e24d430ef2 (Peter Zijlstra 2020-02-03 17:37:11 -0800 407) config MMU_GATHER_TABLE_FREE
0d6e24d430ef2 (Peter Zijlstra 2020-02-03 17:37:11 -0800 408) bool
0d6e24d430ef2 (Peter Zijlstra 2020-02-03 17:37:11 -0800 409)
ff2e6d7259f82 (Peter Zijlstra 2020-02-03 17:37:02 -0800 410) config MMU_GATHER_RCU_TABLE_FREE
267239116987d (Peter Zijlstra 2011-05-24 17:12:00 -0700 411) bool
0d6e24d430ef2 (Peter Zijlstra 2020-02-03 17:37:11 -0800 412) select MMU_GATHER_TABLE_FREE
267239116987d (Peter Zijlstra 2011-05-24 17:12:00 -0700 413)
3af4bd033759c (Peter Zijlstra 2020-02-03 17:37:05 -0800 414) config MMU_GATHER_PAGE_SIZE
ed6a79352cad0 (Peter Zijlstra 2018-08-31 14:46:08 +0200 415) bool
ed6a79352cad0 (Peter Zijlstra 2018-08-31 14:46:08 +0200 416)
27796d03c9c4b (Peter Zijlstra 2020-02-03 17:36:59 -0800 417) config MMU_GATHER_NO_RANGE
27796d03c9c4b (Peter Zijlstra 2020-02-03 17:36:59 -0800 418) bool
27796d03c9c4b (Peter Zijlstra 2020-02-03 17:36:59 -0800 419)
580a586c409ab (Peter Zijlstra 2020-02-03 17:37:08 -0800 420) config MMU_GATHER_NO_GATHER
952a31c9e6fa9 (Martin Schwidefsky 2018-09-18 14:51:50 +0200 421) bool
0d6e24d430ef2 (Peter Zijlstra 2020-02-03 17:37:11 -0800 422) depends on MMU_GATHER_TABLE_FREE
952a31c9e6fa9 (Martin Schwidefsky 2018-09-18 14:51:50 +0200 423)
d53c3dfb23c45 (Nicholas Piggin 2020-09-14 14:52:16 +1000 424) config ARCH_WANT_IRQS_OFF_ACTIVATE_MM
d53c3dfb23c45 (Nicholas Piggin 2020-09-14 14:52:16 +1000 425) bool
d53c3dfb23c45 (Nicholas Piggin 2020-09-14 14:52:16 +1000 426) help
d53c3dfb23c45 (Nicholas Piggin 2020-09-14 14:52:16 +1000 427) Temporary select until all architectures can be converted to have
d53c3dfb23c45 (Nicholas Piggin 2020-09-14 14:52:16 +1000 428) irqs disabled over activate_mm. Architectures that do IPI based TLB
d53c3dfb23c45 (Nicholas Piggin 2020-09-14 14:52:16 +1000 429) shootdowns should enable this.
d53c3dfb23c45 (Nicholas Piggin 2020-09-14 14:52:16 +1000 430)
df013ffb8119c (Huang Ying 2011-07-13 13:14:22 +0800 431) config ARCH_HAVE_NMI_SAFE_CMPXCHG
df013ffb8119c (Huang Ying 2011-07-13 13:14:22 +0800 432) bool
df013ffb8119c (Huang Ying 2011-07-13 13:14:22 +0800 433)
43570fd2f47ba (Heiko Carstens 2012-01-12 17:17:27 -0800 434) config HAVE_ALIGNED_STRUCT_PAGE
43570fd2f47ba (Heiko Carstens 2012-01-12 17:17:27 -0800 435) bool
43570fd2f47ba (Heiko Carstens 2012-01-12 17:17:27 -0800 436) help
43570fd2f47ba (Heiko Carstens 2012-01-12 17:17:27 -0800 437) This makes sure that struct pages are double word aligned and that
43570fd2f47ba (Heiko Carstens 2012-01-12 17:17:27 -0800 438) e.g. the SLUB allocator can perform double word atomic operations
43570fd2f47ba (Heiko Carstens 2012-01-12 17:17:27 -0800 439) on a struct page for better performance. However selecting this
43570fd2f47ba (Heiko Carstens 2012-01-12 17:17:27 -0800 440) might increase the size of a struct page by a word.
43570fd2f47ba (Heiko Carstens 2012-01-12 17:17:27 -0800 441)
4156153c4dadd (Heiko Carstens 2012-01-12 17:17:30 -0800 442) config HAVE_CMPXCHG_LOCAL
4156153c4dadd (Heiko Carstens 2012-01-12 17:17:30 -0800 443) bool
4156153c4dadd (Heiko Carstens 2012-01-12 17:17:30 -0800 444)
2565409fc0303 (Heiko Carstens 2012-01-12 17:17:33 -0800 445) config HAVE_CMPXCHG_DOUBLE
2565409fc0303 (Heiko Carstens 2012-01-12 17:17:33 -0800 446) bool
2565409fc0303 (Heiko Carstens 2012-01-12 17:17:33 -0800 447)
77e5849688670 (Paul E. McKenney 2017-01-14 13:32:50 -0800 448) config ARCH_WEAK_RELEASE_ACQUIRE
77e5849688670 (Paul E. McKenney 2017-01-14 13:32:50 -0800 449) bool
77e5849688670 (Paul E. McKenney 2017-01-14 13:32:50 -0800 450)
c1d7e01d7877a (Will Deacon 2012-07-30 14:42:46 -0700 451) config ARCH_WANT_IPC_PARSE_VERSION
c1d7e01d7877a (Will Deacon 2012-07-30 14:42:46 -0700 452) bool
c1d7e01d7877a (Will Deacon 2012-07-30 14:42:46 -0700 453)
c1d7e01d7877a (Will Deacon 2012-07-30 14:42:46 -0700 454) config ARCH_WANT_COMPAT_IPC_PARSE_VERSION
c1d7e01d7877a (Will Deacon 2012-07-30 14:42:46 -0700 455) bool
c1d7e01d7877a (Will Deacon 2012-07-30 14:42:46 -0700 456)
48b25c43e6eeb (Chris Metcalf 2012-03-15 13:13:38 -0400 457) config ARCH_WANT_OLD_COMPAT_IPC
c1d7e01d7877a (Will Deacon 2012-07-30 14:42:46 -0700 458) select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
48b25c43e6eeb (Chris Metcalf 2012-03-15 13:13:38 -0400 459) bool
48b25c43e6eeb (Chris Metcalf 2012-03-15 13:13:38 -0400 460)
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 461) config HAVE_ARCH_SECCOMP
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 462) bool
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 463) help
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 464) An arch should select this symbol to support seccomp mode 1 (the fixed
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 465) syscall policy), and must provide an overrides for __NR_seccomp_sigreturn,
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 466) and compat syscalls if the asm-generic/seccomp.h defaults need adjustment:
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 467) - __NR_seccomp_read_32
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 468) - __NR_seccomp_write_32
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 469) - __NR_seccomp_exit_32
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 470) - __NR_seccomp_sigreturn_32
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 471)
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 472) config HAVE_ARCH_SECCOMP_FILTER
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 473) bool
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 474) select HAVE_ARCH_SECCOMP
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 475) help
fb0fadf9b213f (Will Drewry 2012-04-12 16:48:02 -0500 476) An arch should select this symbol if it provides all of these things:
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 477) - all the requirements for HAVE_ARCH_SECCOMP
bb6ea4301a110 (Will Drewry 2012-04-12 16:48:01 -0500 478) - syscall_get_arch()
bb6ea4301a110 (Will Drewry 2012-04-12 16:48:01 -0500 479) - syscall_get_arguments()
bb6ea4301a110 (Will Drewry 2012-04-12 16:48:01 -0500 480) - syscall_rollback()
bb6ea4301a110 (Will Drewry 2012-04-12 16:48:01 -0500 481) - syscall_set_return_value()
fb0fadf9b213f (Will Drewry 2012-04-12 16:48:02 -0500 482) - SIGSYS siginfo_t support
fb0fadf9b213f (Will Drewry 2012-04-12 16:48:02 -0500 483) - secure_computing is called from a ptrace_event()-safe context
fb0fadf9b213f (Will Drewry 2012-04-12 16:48:02 -0500 484) - secure_computing return value is checked and a return value of -1
fb0fadf9b213f (Will Drewry 2012-04-12 16:48:02 -0500 485) results in the system call being skipped immediately.
48dc92b9fc392 (Kees Cook 2014-06-25 16:08:24 -0700 486) - seccomp syscall wired up
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 487) - if !HAVE_SPARSE_SYSCALL_NR, have SECCOMP_ARCH_NATIVE,
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 488) SECCOMP_ARCH_NATIVE_NR, SECCOMP_ARCH_NATIVE_NAME defined. If
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 489) COMPAT is supported, have the SECCOMP_ARCH_COMPAT* defines too.
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 490)
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 491) config SECCOMP
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 492) prompt "Enable seccomp to safely execute untrusted bytecode"
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 493) def_bool y
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 494) depends on HAVE_ARCH_SECCOMP
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 495) help
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 496) This kernel feature is useful for number crunching applications
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 497) that may need to handle untrusted bytecode during their
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 498) execution. By using pipes or other transports made available
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 499) to the process as file descriptors supporting the read/write
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 500) syscalls, it's possible to isolate those applications in their
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 501) own address space using seccomp. Once seccomp is enabled via
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 502) prctl(PR_SET_SECCOMP) or the seccomp() syscall, it cannot be
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 503) disabled and the task is only allowed to execute a few safe
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 504) syscalls defined by each seccomp mode.
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 505)
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 506) If unsure, say Y.
282a181b1a0d6 (YiFei Zhu 2020-09-24 07:44:16 -0500 507)
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 508) config SECCOMP_FILTER
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 509) def_bool y
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 510) depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 511) help
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 512) Enable tasks to build secure computing environments defined
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 513) in terms of Berkeley Packet Filter programs which implement
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 514) task-defined system call filtering polices.
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 515)
5fb94e9ca333f (Mauro Carvalho Chehab 2018-05-08 15:14:57 -0300 516) See Documentation/userspace-api/seccomp_filter.rst for details.
e2cfabdfd0756 (Will Drewry 2012-04-12 16:47:57 -0500 517)
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 518) config SECCOMP_CACHE_DEBUG
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 519) bool "Show seccomp filter cache status in /proc/pid/seccomp_cache"
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 520) depends on SECCOMP_FILTER && !HAVE_SPARSE_SYSCALL_NR
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 521) depends on PROC_FS
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 522) help
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 523) This enables the /proc/pid/seccomp_cache interface to monitor
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 524) seccomp cache data. The file format is subject to change. Reading
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 525) the file requires CAP_SYS_ADMIN.
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 526)
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 527) This option is for debugging only. Enabling presents the risk that
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 528) an adversary may be able to infer the seccomp filter logic.
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 529)
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 530) If unsure, say N.
0d8315dddd289 (YiFei Zhu 2020-11-11 07:33:54 -0600 531)
afaef01c00153 (Alexander Popov 2018-08-17 01:16:58 +0300 532) config HAVE_ARCH_STACKLEAK
afaef01c00153 (Alexander Popov 2018-08-17 01:16:58 +0300 533) bool
afaef01c00153 (Alexander Popov 2018-08-17 01:16:58 +0300 534) help
afaef01c00153 (Alexander Popov 2018-08-17 01:16:58 +0300 535) An architecture should select this if it has the code which
afaef01c00153 (Alexander Popov 2018-08-17 01:16:58 +0300 536) fills the used part of the kernel stack with the STACKLEAK_POISON
afaef01c00153 (Alexander Popov 2018-08-17 01:16:58 +0300 537) value before returning from system calls.
afaef01c00153 (Alexander Popov 2018-08-17 01:16:58 +0300 538)
d148eac0e70f0 (Masahiro Yamada 2018-06-14 19:36:45 +0900 539) config HAVE_STACKPROTECTOR
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 540) bool
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 541) help
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 542) An arch should select this symbol if:
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 543) - it has implemented a stack canary (e.g. __stack_chk_guard)
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 544)
050e9baa9dc9f (Linus Torvalds 2018-06-14 12:21:18 +0900 545) config STACKPROTECTOR
2a61f4747eeaa (Masahiro Yamada 2018-05-28 18:22:00 +0900 546) bool "Stack Protector buffer overflow detection"
d148eac0e70f0 (Masahiro Yamada 2018-06-14 19:36:45 +0900 547) depends on HAVE_STACKPROTECTOR
2a61f4747eeaa (Masahiro Yamada 2018-05-28 18:22:00 +0900 548) depends on $(cc-option,-fstack-protector)
2a61f4747eeaa (Masahiro Yamada 2018-05-28 18:22:00 +0900 549) default y
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 550) help
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 551) This option turns on the "stack-protector" GCC feature. This
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 552) feature puts, at the beginning of functions, a canary value on
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 553) the stack just before the return address, and validates
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 554) the value just before actually returning. Stack based buffer
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 555) overflows (that need to overwrite this return address) now also
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 556) overwrite the canary, which gets detected and the attack is then
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 557) neutralized via a kernel panic.
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 558)
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 559) Functions will have the stack-protector canary logic added if they
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 560) have an 8-byte or larger character array on the stack.
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 561)
19952a92037e7 (Kees Cook 2013-12-19 11:35:58 -0800 562) This feature requires gcc version 4.2 or above, or a distribution
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 563) gcc with the feature backported ("-fstack-protector").
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 564)
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 565) On an x86 "defconfig" build, this feature adds canary checks to
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 566) about 3% of all kernel functions, which increases kernel code size
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 567) by about 0.3%.
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 568)
050e9baa9dc9f (Linus Torvalds 2018-06-14 12:21:18 +0900 569) config STACKPROTECTOR_STRONG
2a61f4747eeaa (Masahiro Yamada 2018-05-28 18:22:00 +0900 570) bool "Strong Stack Protector"
050e9baa9dc9f (Linus Torvalds 2018-06-14 12:21:18 +0900 571) depends on STACKPROTECTOR
2a61f4747eeaa (Masahiro Yamada 2018-05-28 18:22:00 +0900 572) depends on $(cc-option,-fstack-protector-strong)
2a61f4747eeaa (Masahiro Yamada 2018-05-28 18:22:00 +0900 573) default y
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 574) help
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 575) Functions will have the stack-protector canary logic added in any
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 576) of the following conditions:
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 577)
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 578) - local variable's address used as part of the right hand side of an
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 579) assignment or function argument
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 580) - local variable is an array (or union containing an array),
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 581) regardless of array type or length
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 582) - uses register local variables
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 583)
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 584) This feature requires gcc version 4.9 or above, or a distribution
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 585) gcc with the feature backported ("-fstack-protector-strong").
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 586)
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 587) On an x86 "defconfig" build, this feature adds canary checks to
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 588) about 20% of all kernel functions, which increases the kernel code
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 589) size by about 2%.
8779657d29c0e (Kees Cook 2013-12-19 11:35:59 -0800 590)
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 591) config ARCH_SUPPORTS_SHADOW_CALL_STACK
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 592) bool
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 593) help
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 594) An architecture should select this if it supports Clang's Shadow
aa7a65ae5b8f4 (Will Deacon 2020-05-15 16:15:46 +0100 595) Call Stack and implements runtime support for shadow stack
aa7a65ae5b8f4 (Will Deacon 2020-05-15 16:15:46 +0100 596) switching.
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 597)
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 598) config SHADOW_CALL_STACK
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 599) bool "Clang Shadow Call Stack"
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 600) depends on CC_IS_CLANG && ARCH_SUPPORTS_SHADOW_CALL_STACK
ddc9863e9e902 (Sami Tolvanen 2020-04-27 09:00:10 -0700 601) depends on DYNAMIC_FTRACE_WITH_REGS || !FUNCTION_GRAPH_TRACER
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 602) help
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 603) This option enables Clang's Shadow Call Stack, which uses a
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 604) shadow stack to protect function return addresses from being
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 605) overwritten by an attacker. More information can be found in
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 606) Clang's documentation:
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 607)
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 608) https://clang.llvm.org/docs/ShadowCallStack.html
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 609)
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 610) Note that security guarantees in the kernel differ from the
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 611) ones documented for user space. The kernel must store addresses
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 612) of shadow stacks in memory, which means an attacker capable of
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 613) reading and writing arbitrary memory may be able to locate them
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 614) and hijack control flow by modifying the stacks.
d08b9f0ca6605 (Sami Tolvanen 2020-04-27 09:00:07 -0700 615)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 616) config LTO
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 617) bool
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 618) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 619) Selected if the kernel will be built using the compiler's LTO feature.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 620)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 621) config LTO_CLANG
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 622) bool
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 623) select LTO
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 624) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 625) Selected if the kernel will be built using Clang's LTO feature.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 626)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 627) config ARCH_SUPPORTS_LTO_CLANG
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 628) bool
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 629) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 630) An architecture should select this option if it supports:
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 631) - compiling with Clang,
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 632) - compiling inline assembly with Clang's integrated assembler,
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 633) - and linking with LLD.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 634)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 635) config ARCH_SUPPORTS_LTO_CLANG_THIN
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 636) bool
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 637) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 638) An architecture should select this option if it can support Clang's
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 639) ThinLTO mode.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 640)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 641) config HAS_LTO_CLANG
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 642) def_bool y
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 643) # Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
ba64beb17493a (Masahiro Yamada 2021-03-16 01:12:56 +0900 644) depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD && AS_IS_LLVM
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 645) depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 646) depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 647) depends on ARCH_SUPPORTS_LTO_CLANG
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 648) depends on !FTRACE_MCOUNT_USE_RECORDMCOUNT
bf3c255150619 (Sami Tolvanen 2021-03-08 10:46:56 -0800 649) depends on !KASAN || KASAN_HW_TAGS
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 650) depends on !GCOV_KERNEL
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 651) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 652) The compiler and Kconfig options support building with Clang's
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 653) LTO.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 654)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 655) choice
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 656) prompt "Link Time Optimization (LTO)"
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 657) default LTO_NONE
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 658) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 659) This option enables Link Time Optimization (LTO), which allows the
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 660) compiler to optimize binaries globally.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 661)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 662) If unsure, select LTO_NONE. Note that LTO is very resource-intensive
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 663) so it's disabled by default.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 664)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 665) config LTO_NONE
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 666) bool "None"
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 667) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 668) Build the kernel normally, without Link Time Optimization (LTO).
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 669)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 670) config LTO_CLANG_FULL
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 671) bool "Clang Full LTO (EXPERIMENTAL)"
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 672) depends on HAS_LTO_CLANG
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 673) depends on !COMPILE_TEST
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 674) select LTO_CLANG
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 675) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 676) This option enables Clang's full Link Time Optimization (LTO), which
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 677) allows the compiler to optimize the kernel globally. If you enable
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 678) this option, the compiler generates LLVM bitcode instead of ELF
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 679) object files, and the actual compilation from bitcode happens at
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 680) the LTO link step, which may take several minutes depending on the
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 681) kernel configuration. More information can be found from LLVM's
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 682) documentation:
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 683)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 684) https://llvm.org/docs/LinkTimeOptimization.html
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 685)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 686) During link time, this option can use a large amount of RAM, and
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 687) may take much longer than the ThinLTO option.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 688)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 689) config LTO_CLANG_THIN
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 690) bool "Clang ThinLTO (EXPERIMENTAL)"
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 691) depends on HAS_LTO_CLANG && ARCH_SUPPORTS_LTO_CLANG_THIN
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 692) select LTO_CLANG
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 693) help
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 694) This option enables Clang's ThinLTO, which allows for parallel
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 695) optimization and faster incremental compiles compared to the
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 696) CONFIG_LTO_CLANG_FULL option. More information can be found
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 697) from Clang's documentation:
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 698)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 699) https://clang.llvm.org/docs/ThinLTO.html
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 700)
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 701) If unsure, say Y.
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 702) endchoice
dc5723b02e523 (Sami Tolvanen 2020-12-11 10:46:19 -0800 703)
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 704) config ARCH_SUPPORTS_CFI_CLANG
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 705) bool
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 706) help
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 707) An architecture should select this option if it can support Clang's
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 708) Control-Flow Integrity (CFI) checking.
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 709)
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 710) config CFI_CLANG
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 711) bool "Use Clang's Control Flow Integrity (CFI)"
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 712) depends on LTO_CLANG && ARCH_SUPPORTS_CFI_CLANG
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 713) # Clang >= 12:
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 714) # - https://bugs.llvm.org/show_bug.cgi?id=46258
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 715) # - https://bugs.llvm.org/show_bug.cgi?id=47479
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 716) depends on CLANG_VERSION >= 120000
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 717) select KALLSYMS
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 718) help
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 719) This option enables Clang’s forward-edge Control Flow Integrity
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 720) (CFI) checking, where the compiler injects a runtime check to each
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 721) indirect function call to ensure the target is a valid function with
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 722) the correct static type. This restricts possible call targets and
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 723) makes it more difficult for an attacker to exploit bugs that allow
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 724) the modification of stored function pointers. More information can be
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 725) found from Clang's documentation:
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 726)
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 727) https://clang.llvm.org/docs/ControlFlowIntegrity.html
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 728)
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 729) config CFI_CLANG_SHADOW
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 730) bool "Use CFI shadow to speed up cross-module checks"
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 731) default y
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 732) depends on CFI_CLANG && MODULES
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 733) help
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 734) If you select this option, the kernel builds a fast look-up table of
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 735) CFI check functions in loaded modules to reduce performance overhead.
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 736)
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 737) If unsure, say Y.
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 738)
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 739) config CFI_PERMISSIVE
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 740) bool "Use CFI in permissive mode"
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 741) depends on CFI_CLANG
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 742) help
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 743) When selected, Control Flow Integrity (CFI) violations result in a
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 744) warning instead of a kernel panic. This option should only be used
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 745) for finding indirect call type mismatches during development.
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 746)
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 747) If unsure, say N.
cf68fffb66d60 (Sami Tolvanen 2021-04-08 11:28:26 -0700 748)
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 749) config HAVE_ARCH_WITHIN_STACK_FRAMES
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 750) bool
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 751) help
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 752) An architecture should select this if it can walk the kernel stack
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 753) frames to determine if an object is part of either the arguments
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 754) or local variables (i.e. that it excludes saved return addresses,
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 755) and similar) by implementing an inline arch_within_stack_frames(),
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 756) which is used by CONFIG_HARDENED_USERCOPY.
0f60a8efe4005 (Kees Cook 2016-07-12 16:19:48 -0700 757)
91d1aa43d3050 (Frederic Weisbecker 2012-11-27 19:33:25 +0100 758) config HAVE_CONTEXT_TRACKING
2b1d5024e17be (Frederic Weisbecker 2012-07-11 20:26:30 +0200 759) bool
2b1d5024e17be (Frederic Weisbecker 2012-07-11 20:26:30 +0200 760) help
91d1aa43d3050 (Frederic Weisbecker 2012-11-27 19:33:25 +0100 761) Provide kernel/user boundaries probes necessary for subsystems
91d1aa43d3050 (Frederic Weisbecker 2012-11-27 19:33:25 +0100 762) that need it, such as userspace RCU extended quiescent state.
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 763) Syscalls need to be wrapped inside user_exit()-user_enter(), either
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 764) optimized behind static key or through the slow path using TIF_NOHZ
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 765) flag. Exceptions handlers must be wrapped as well. Irqs are already
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 766) protected inside rcu_irq_enter/rcu_irq_exit() but preemption or signal
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 767) handling on irq exit still need to be protected.
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 768)
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 769) config HAVE_CONTEXT_TRACKING_OFFSTACK
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 770) bool
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 771) help
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 772) Architecture neither relies on exception_enter()/exception_exit()
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 773) nor on schedule_user(). Also preempt_schedule_notrace() and
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 774) preempt_schedule_irq() can't be called in a preemptible section
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 775) while context tracking is CONTEXT_USER. This feature reflects a sane
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 776) entry implementation where the following requirements are met on
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 777) critical entry code, ie: before user_exit() or after user_enter():
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 778)
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 779) - Critical entry code isn't preemptible (or better yet:
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 780) not interruptible).
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 781) - No use of RCU read side critical sections, unless rcu_nmi_enter()
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 782) got called.
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 783) - No use of instrumentation, unless instrumentation_begin() got
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 784) called.
83c2da2e605c7 (Frederic Weisbecker 2020-11-17 16:16:33 +0100 785)
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 786) config HAVE_TIF_NOHZ
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 787) bool
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 788) help
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 789) Arch relies on TIF_NOHZ and syscall slow path to implement context
490f561b783da (Frederic Weisbecker 2020-01-27 16:41:52 +0100 790) tracking calls to user_enter()/user_exit().
2b1d5024e17be (Frederic Weisbecker 2012-07-11 20:26:30 +0200 791)
b952741c80790 (Frederic Weisbecker 2012-06-16 15:39:34 +0200 792) config HAVE_VIRT_CPU_ACCOUNTING
b952741c80790 (Frederic Weisbecker 2012-06-16 15:39:34 +0200 793) bool
b952741c80790 (Frederic Weisbecker 2012-06-16 15:39:34 +0200 794)
2b91ec9f551b5 (Frederic Weisbecker 2020-12-02 12:57:29 +0100 795) config HAVE_VIRT_CPU_ACCOUNTING_IDLE
2b91ec9f551b5 (Frederic Weisbecker 2020-12-02 12:57:29 +0100 796) bool
2b91ec9f551b5 (Frederic Weisbecker 2020-12-02 12:57:29 +0100 797) help
2b91ec9f551b5 (Frederic Weisbecker 2020-12-02 12:57:29 +0100 798) Architecture has its own way to account idle CPU time and therefore
2b91ec9f551b5 (Frederic Weisbecker 2020-12-02 12:57:29 +0100 799) doesn't implement vtime_account_idle().
2b91ec9f551b5 (Frederic Weisbecker 2020-12-02 12:57:29 +0100 800)
40565b5aedd6d (Stanislaw Gruszka 2016-11-15 03:06:51 +0100 801) config ARCH_HAS_SCALED_CPUTIME
40565b5aedd6d (Stanislaw Gruszka 2016-11-15 03:06:51 +0100 802) bool
40565b5aedd6d (Stanislaw Gruszka 2016-11-15 03:06:51 +0100 803)
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 804) config HAVE_VIRT_CPU_ACCOUNTING_GEN
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 805) bool
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 806) default y if 64BIT
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 807) help
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 808) With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit.
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 809) Before enabling this option, arch code must be audited
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 810) to ensure there are no races in concurrent read/write of
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 811) cputime_t. For example, reading/writing 64-bit cputime_t on
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 812) some 32-bit arches may require multiple accesses, so proper
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 813) locking is needed to protect against concurrent accesses.
554b0004d0ec4 (Kevin Hilman 2013-09-16 15:28:21 -0700 814)
fdf9c356502ae (Frederic Weisbecker 2012-09-09 14:56:31 +0200 815) config HAVE_IRQ_TIME_ACCOUNTING
fdf9c356502ae (Frederic Weisbecker 2012-09-09 14:56:31 +0200 816) bool
fdf9c356502ae (Frederic Weisbecker 2012-09-09 14:56:31 +0200 817) help
fdf9c356502ae (Frederic Weisbecker 2012-09-09 14:56:31 +0200 818) Archs need to ensure they use a high enough resolution clock to
fdf9c356502ae (Frederic Weisbecker 2012-09-09 14:56:31 +0200 819) support irq time accounting and then call enable_sched_clock_irqtime().
fdf9c356502ae (Frederic Weisbecker 2012-09-09 14:56:31 +0200 820)
c49dd34018026 (Kalesh Singh 2020-12-14 19:07:30 -0800 821) config HAVE_MOVE_PUD
c49dd34018026 (Kalesh Singh 2020-12-14 19:07:30 -0800 822) bool
c49dd34018026 (Kalesh Singh 2020-12-14 19:07:30 -0800 823) help
c49dd34018026 (Kalesh Singh 2020-12-14 19:07:30 -0800 824) Architectures that select this are able to move page tables at the
c49dd34018026 (Kalesh Singh 2020-12-14 19:07:30 -0800 825) PUD level. If there are only 3 page table levels, the move effectively
c49dd34018026 (Kalesh Singh 2020-12-14 19:07:30 -0800 826) happens at the PGD level.
c49dd34018026 (Kalesh Singh 2020-12-14 19:07:30 -0800 827)
2c91bd4a4e2e5 (Joel Fernandes (Google) 2019-01-03 15:28:38 -0800 828) config HAVE_MOVE_PMD
2c91bd4a4e2e5 (Joel Fernandes (Google) 2019-01-03 15:28:38 -0800 829) bool
2c91bd4a4e2e5 (Joel Fernandes (Google) 2019-01-03 15:28:38 -0800 830) help
2c91bd4a4e2e5 (Joel Fernandes (Google) 2019-01-03 15:28:38 -0800 831) Archs that select this are able to move page tables at the PMD level.
2c91bd4a4e2e5 (Joel Fernandes (Google) 2019-01-03 15:28:38 -0800 832)
15626062f4a98 (Gerald Schaefer 2012-10-08 16:30:04 -0700 833) config HAVE_ARCH_TRANSPARENT_HUGEPAGE
15626062f4a98 (Gerald Schaefer 2012-10-08 16:30:04 -0700 834) bool
15626062f4a98 (Gerald Schaefer 2012-10-08 16:30:04 -0700 835)
a00cc7d9dd93d (Matthew Wilcox 2017-02-24 14:57:02 -0800 836) config HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
a00cc7d9dd93d (Matthew Wilcox 2017-02-24 14:57:02 -0800 837) bool
a00cc7d9dd93d (Matthew Wilcox 2017-02-24 14:57:02 -0800 838)
0ddab1d2ed664 (Toshi Kani 2015-04-14 15:47:20 -0700 839) config HAVE_ARCH_HUGE_VMAP
0ddab1d2ed664 (Toshi Kani 2015-04-14 15:47:20 -0700 840) bool
0ddab1d2ed664 (Toshi Kani 2015-04-14 15:47:20 -0700 841)
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 842) #
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 843) # Archs that select this would be capable of PMD-sized vmaps (i.e.,
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 844) # arch_vmap_pmd_supported() returns true), and they must make no assumptions
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 845) # that vmalloc memory is mapped with PAGE_SIZE ptes. The VM_NO_HUGE_VMAP flag
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 846) # can be used to prohibit arch-specific allocations from using hugepages to
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 847) # help with this (e.g., modules may require it).
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 848) #
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 849) config HAVE_ARCH_HUGE_VMALLOC
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 850) depends on HAVE_ARCH_HUGE_VMAP
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 851) bool
121e6f3258fe3 (Nicholas Piggin 2021-04-29 22:58:49 -0700 852)
3876d4a38ae22 (Alexandre Ghiti 2019-06-27 15:00:11 -0700 853) config ARCH_WANT_HUGE_PMD_SHARE
3876d4a38ae22 (Alexandre Ghiti 2019-06-27 15:00:11 -0700 854) bool
3876d4a38ae22 (Alexandre Ghiti 2019-06-27 15:00:11 -0700 855)
0f8975ec4db2c (Pavel Emelyanov 2013-07-03 15:01:20 -0700 856) config HAVE_ARCH_SOFT_DIRTY
0f8975ec4db2c (Pavel Emelyanov 2013-07-03 15:01:20 -0700 857) bool
0f8975ec4db2c (Pavel Emelyanov 2013-07-03 15:01:20 -0700 858)
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 859) config HAVE_MOD_ARCH_SPECIFIC
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 860) bool
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 861) help
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 862) The arch uses struct mod_arch_specific to store data. Many arches
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 863) just need a simple module loader without arch specific data - those
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 864) should not enable this.
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 865)
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 866) config MODULES_USE_ELF_RELA
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 867) bool
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 868) help
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 869) Modules only use ELF RELA relocations. Modules with ELF REL
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 870) relocations will give an error.
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 871)
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 872) config MODULES_USE_ELF_REL
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 873) bool
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 874) help
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 875) Modules only use ELF REL relocations. Modules with ELF RELA
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 876) relocations will give an error.
786d35d45cc40 (David Howells 2012-09-28 14:31:03 +0930 877)
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 878) config HAVE_IRQ_EXIT_ON_IRQ_STACK
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 879) bool
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 880) help
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 881) Architecture doesn't only execute the irq handler on the irq stack
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 882) but also irq_exit(). This way we can process softirqs on this irq
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 883) stack instead of switching to a new one when we call __do_softirq()
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 884) in the end of an hardirq.
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 885) This spares a stack switch and improves cache usage on softirq
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 886) processing.
cc1f027454929 (Frederic Weisbecker 2013-09-24 17:17:47 +0200 887)
cd1a41ceba8a4 (Thomas Gleixner 2021-02-10 00:40:52 +0100 888) config HAVE_SOFTIRQ_ON_OWN_STACK
cd1a41ceba8a4 (Thomas Gleixner 2021-02-10 00:40:52 +0100 889) bool
cd1a41ceba8a4 (Thomas Gleixner 2021-02-10 00:40:52 +0100 890) help
cd1a41ceba8a4 (Thomas Gleixner 2021-02-10 00:40:52 +0100 891) Architecture provides a function to run __do_softirq() on a
c226bc3cd99bd (Colin Ian King 2021-09-07 19:57:38 -0700 892) separate stack.
cd1a41ceba8a4 (Thomas Gleixner 2021-02-10 00:40:52 +0100 893)
235a8f0286d3d (Kirill A. Shutemov 2015-04-14 15:46:17 -0700 894) config PGTABLE_LEVELS
235a8f0286d3d (Kirill A. Shutemov 2015-04-14 15:46:17 -0700 895) int
235a8f0286d3d (Kirill A. Shutemov 2015-04-14 15:46:17 -0700 896) default 2
235a8f0286d3d (Kirill A. Shutemov 2015-04-14 15:46:17 -0700 897)
2b68f6caeac27 (Kees Cook 2015-04-14 15:48:00 -0700 898) config ARCH_HAS_ELF_RANDOMIZE
2b68f6caeac27 (Kees Cook 2015-04-14 15:48:00 -0700 899) bool
2b68f6caeac27 (Kees Cook 2015-04-14 15:48:00 -0700 900) help
2b68f6caeac27 (Kees Cook 2015-04-14 15:48:00 -0700 901) An architecture supports choosing randomized locations for
2b68f6caeac27 (Kees Cook 2015-04-14 15:48:00 -0700 902) stack, mmap, brk, and ET_DYN. Defined functions:
2b68f6caeac27 (Kees Cook 2015-04-14 15:48:00 -0700 903) - arch_mmap_rnd()
204db6ed17743 (Kees Cook 2015-04-14 15:48:12 -0700 904) - arch_randomize_brk()
2b68f6caeac27 (Kees Cook 2015-04-14 15:48:00 -0700 905)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 906) config HAVE_ARCH_MMAP_RND_BITS
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 907) bool
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 908) help
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 909) An arch should select this symbol if it supports setting a variable
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 910) number of bits for use in establishing the base address for mmap
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 911) allocations, has MMU enabled and provides values for both:
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 912) - ARCH_MMAP_RND_BITS_MIN
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 913) - ARCH_MMAP_RND_BITS_MAX
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 914)
5f56a5dfdb9bc (Jiri Slaby 2016-05-20 17:00:16 -0700 915) config HAVE_EXIT_THREAD
5f56a5dfdb9bc (Jiri Slaby 2016-05-20 17:00:16 -0700 916) bool
5f56a5dfdb9bc (Jiri Slaby 2016-05-20 17:00:16 -0700 917) help
5f56a5dfdb9bc (Jiri Slaby 2016-05-20 17:00:16 -0700 918) An architecture implements exit_thread.
5f56a5dfdb9bc (Jiri Slaby 2016-05-20 17:00:16 -0700 919)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 920) config ARCH_MMAP_RND_BITS_MIN
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 921) int
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 922)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 923) config ARCH_MMAP_RND_BITS_MAX
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 924) int
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 925)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 926) config ARCH_MMAP_RND_BITS_DEFAULT
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 927) int
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 928)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 929) config ARCH_MMAP_RND_BITS
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 930) int "Number of bits to use for ASLR of mmap base address" if EXPERT
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 931) range ARCH_MMAP_RND_BITS_MIN ARCH_MMAP_RND_BITS_MAX
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 932) default ARCH_MMAP_RND_BITS_DEFAULT if ARCH_MMAP_RND_BITS_DEFAULT
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 933) default ARCH_MMAP_RND_BITS_MIN
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 934) depends on HAVE_ARCH_MMAP_RND_BITS
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 935) help
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 936) This value can be used to select the number of bits to use to
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 937) determine the random offset to the base address of vma regions
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 938) resulting from mmap allocations. This value will be bounded
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 939) by the architecture's minimum and maximum supported values.
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 940)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 941) This value can be changed after boot using the
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 942) /proc/sys/vm/mmap_rnd_bits tunable
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 943)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 944) config HAVE_ARCH_MMAP_RND_COMPAT_BITS
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 945) bool
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 946) help
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 947) An arch should select this symbol if it supports running applications
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 948) in compatibility mode, supports setting a variable number of bits for
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 949) use in establishing the base address for mmap allocations, has MMU
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 950) enabled and provides values for both:
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 951) - ARCH_MMAP_RND_COMPAT_BITS_MIN
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 952) - ARCH_MMAP_RND_COMPAT_BITS_MAX
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 953)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 954) config ARCH_MMAP_RND_COMPAT_BITS_MIN
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 955) int
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 956)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 957) config ARCH_MMAP_RND_COMPAT_BITS_MAX
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 958) int
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 959)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 960) config ARCH_MMAP_RND_COMPAT_BITS_DEFAULT
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 961) int
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 962)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 963) config ARCH_MMAP_RND_COMPAT_BITS
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 964) int "Number of bits to use for ASLR of mmap base address for compatible applications" if EXPERT
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 965) range ARCH_MMAP_RND_COMPAT_BITS_MIN ARCH_MMAP_RND_COMPAT_BITS_MAX
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 966) default ARCH_MMAP_RND_COMPAT_BITS_DEFAULT if ARCH_MMAP_RND_COMPAT_BITS_DEFAULT
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 967) default ARCH_MMAP_RND_COMPAT_BITS_MIN
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 968) depends on HAVE_ARCH_MMAP_RND_COMPAT_BITS
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 969) help
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 970) This value can be used to select the number of bits to use to
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 971) determine the random offset to the base address of vma regions
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 972) resulting from mmap allocations for compatible applications This
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 973) value will be bounded by the architecture's minimum and maximum
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 974) supported values.
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 975)
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 976) This value can be changed after boot using the
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 977) /proc/sys/vm/mmap_rnd_compat_bits tunable
d07e22597d1d3 (Daniel Cashman 2016-01-14 15:19:53 -0800 978)
1b028f784e8c3 (Dmitry Safonov 2017-03-06 17:17:19 +0300 979) config HAVE_ARCH_COMPAT_MMAP_BASES
1b028f784e8c3 (Dmitry Safonov 2017-03-06 17:17:19 +0300 980) bool
1b028f784e8c3 (Dmitry Safonov 2017-03-06 17:17:19 +0300 981) help
1b028f784e8c3 (Dmitry Safonov 2017-03-06 17:17:19 +0300 982) This allows 64bit applications to invoke 32-bit mmap() syscall
1b028f784e8c3 (Dmitry Safonov 2017-03-06 17:17:19 +0300 983) and vice-versa 32-bit applications to call 64-bit mmap().
1b028f784e8c3 (Dmitry Safonov 2017-03-06 17:17:19 +0300 984) Required for applications doing different bitness syscalls.
1b028f784e8c3 (Dmitry Safonov 2017-03-06 17:17:19 +0300 985)
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 986) # This allows to use a set of generic functions to determine mmap base
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 987) # address by giving priority to top-down scheme only if the process
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 988) # is not in legacy mode (compat task, unlimited stack size or
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 989) # sysctl_legacy_va_layout).
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 990) # Architecture that selects this option can provide its own version of:
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 991) # - STACK_RND_MASK
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 992) config ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 993) bool
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 994) depends on MMU
e7142bf5d231f (Alexandre Ghiti 2019-09-23 15:38:50 -0700 995) select ARCH_HAS_ELF_RANDOMIZE
67f3977f805b3 (Alexandre Ghiti 2019-09-23 15:38:47 -0700 996)
b9ab5ebb14ec3 (Josh Poimboeuf 2016-02-28 22:22:42 -0600 997) config HAVE_STACK_VALIDATION
b9ab5ebb14ec3 (Josh Poimboeuf 2016-02-28 22:22:42 -0600 998) bool
b9ab5ebb14ec3 (Josh Poimboeuf 2016-02-28 22:22:42 -0600 999) help
b9ab5ebb14ec3 (Josh Poimboeuf 2016-02-28 22:22:42 -0600 1000) Architecture supports the 'objtool check' host tool command, which
b9ab5ebb14ec3 (Josh Poimboeuf 2016-02-28 22:22:42 -0600 1001) performs compile-time stack metadata validation.
b9ab5ebb14ec3 (Josh Poimboeuf 2016-02-28 22:22:42 -0600 1002)
af085d9084b48 (Josh Poimboeuf 2017-02-13 19:42:28 -0600 1003) config HAVE_RELIABLE_STACKTRACE
af085d9084b48 (Josh Poimboeuf 2017-02-13 19:42:28 -0600 1004) bool
af085d9084b48 (Josh Poimboeuf 2017-02-13 19:42:28 -0600 1005) help
140d7e88bb2ac (Miroslav Benes 2020-03-05 22:28:45 -0800 1006) Architecture has either save_stack_trace_tsk_reliable() or
140d7e88bb2ac (Miroslav Benes 2020-03-05 22:28:45 -0800 1007) arch_stack_walk_reliable() function which only returns a stack trace
140d7e88bb2ac (Miroslav Benes 2020-03-05 22:28:45 -0800 1008) if it can guarantee the trace is reliable.
af085d9084b48 (Josh Poimboeuf 2017-02-13 19:42:28 -0600 1009)
468a9428521e7 (George Spelvin 2016-05-26 22:11:51 -0400 1010) config HAVE_ARCH_HASH
468a9428521e7 (George Spelvin 2016-05-26 22:11:51 -0400 1011) bool
468a9428521e7 (George Spelvin 2016-05-26 22:11:51 -0400 1012) default n
468a9428521e7 (George Spelvin 2016-05-26 22:11:51 -0400 1013) help
468a9428521e7 (George Spelvin 2016-05-26 22:11:51 -0400 1014) If this is set, the architecture provides an <asm/hash.h>
468a9428521e7 (George Spelvin 2016-05-26 22:11:51 -0400 1015) file which provides platform-specific implementations of some
468a9428521e7 (George Spelvin 2016-05-26 22:11:51 -0400 1016) functions in <linux/hash.h> or fs/namei.c.
468a9428521e7 (George Spelvin 2016-05-26 22:11:51 -0400 1017)
666047fe2a4c9 (Finn Thain 2019-01-15 15:18:56 +1100 1018) config HAVE_ARCH_NVRAM_OPS
666047fe2a4c9 (Finn Thain 2019-01-15 15:18:56 +1100 1019) bool
666047fe2a4c9 (Finn Thain 2019-01-15 15:18:56 +1100 1020)
3a4955111ad46 (William Breathitt Gray 2016-05-27 18:08:27 -0400 1021) config ISA_BUS_API
3a4955111ad46 (William Breathitt Gray 2016-05-27 18:08:27 -0400 1022) def_bool ISA
3a4955111ad46 (William Breathitt Gray 2016-05-27 18:08:27 -0400 1023)
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1024) #
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1025) # ABI hall of shame
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1026) #
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1027) config CLONE_BACKWARDS
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1028) bool
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1029) help
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1030) Architecture has tls passed as the 4th argument of clone(2),
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1031) not the 5th one.
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1032)
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1033) config CLONE_BACKWARDS2
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1034) bool
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1035) help
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1036) Architecture has the first two arguments of clone(2) swapped.
d2125043aebf7 (Al Viro 2012-10-23 13:17:59 -0400 1037)
dfa9771a7c478 (Michal Simek 2013-08-13 16:00:53 -0700 1038) config CLONE_BACKWARDS3
dfa9771a7c478 (Michal Simek 2013-08-13 16:00:53 -0700 1039) bool
dfa9771a7c478 (Michal Simek 2013-08-13 16:00:53 -0700 1040) help
dfa9771a7c478 (Michal Simek 2013-08-13 16:00:53 -0700 1041) Architecture has tls passed as the 3rd argument of clone(2),
dfa9771a7c478 (Michal Simek 2013-08-13 16:00:53 -0700 1042) not the 5th one.
dfa9771a7c478 (Michal Simek 2013-08-13 16:00:53 -0700 1043)
eaca6eae3e0c4 (Al Viro 2012-11-25 23:12:10 -0500 1044) config ODD_RT_SIGACTION
eaca6eae3e0c4 (Al Viro 2012-11-25 23:12:10 -0500 1045) bool
eaca6eae3e0c4 (Al Viro 2012-11-25 23:12:10 -0500 1046) help
eaca6eae3e0c4 (Al Viro 2012-11-25 23:12:10 -0500 1047) Architecture has unusual rt_sigaction(2) arguments
eaca6eae3e0c4 (Al Viro 2012-11-25 23:12:10 -0500 1048)
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1049) config OLD_SIGSUSPEND
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1050) bool
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1051) help
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1052) Architecture has old sigsuspend(2) syscall, of one-argument variety
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1053)
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1054) config OLD_SIGSUSPEND3
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1055) bool
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1056) help
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1057) Even weirder antique ABI - three-argument sigsuspend(2)
0a0e8cdf734ce (Al Viro 2012-12-25 16:04:12 -0500 1058)
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1059) config OLD_SIGACTION
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1060) bool
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1061) help
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1062) Architecture has old sigaction(2) syscall. Nope, not the same
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1063) as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1064) but fairly different variant of sigaction(2), thanks to OSF/1
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1065) compatibility...
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1066)
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1067) config COMPAT_OLD_SIGACTION
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1068) bool
495dfbf767553 (Al Viro 2012-12-25 19:09:45 -0500 1069)
17435e5f8cf3b (Deepa Dinamani 2018-03-13 21:03:28 -0700 1070) config COMPAT_32BIT_TIME
942437c97fd9f (Arnd Bergmann 2019-07-15 11:46:10 +0200 1071) bool "Provide system calls for 32-bit time_t"
942437c97fd9f (Arnd Bergmann 2019-07-15 11:46:10 +0200 1072) default !64BIT || COMPAT
17435e5f8cf3b (Deepa Dinamani 2018-03-13 21:03:28 -0700 1073) help
17435e5f8cf3b (Deepa Dinamani 2018-03-13 21:03:28 -0700 1074) This enables 32 bit time_t support in addition to 64 bit time_t support.
17435e5f8cf3b (Deepa Dinamani 2018-03-13 21:03:28 -0700 1075) This is relevant on all 32-bit architectures, and 64-bit architectures
17435e5f8cf3b (Deepa Dinamani 2018-03-13 21:03:28 -0700 1076) as part of compat syscall handling.
17435e5f8cf3b (Deepa Dinamani 2018-03-13 21:03:28 -0700 1077)
87a4c375995ed (Christoph Hellwig 2018-07-31 13:39:32 +0200 1078) config ARCH_NO_PREEMPT
87a4c375995ed (Christoph Hellwig 2018-07-31 13:39:32 +0200 1079) bool
87a4c375995ed (Christoph Hellwig 2018-07-31 13:39:32 +0200 1080)
cb2c7d1a17760 (Mickaël Salaün 2021-04-22 17:41:17 +0200 1081) config ARCH_EPHEMERAL_INODES
cb2c7d1a17760 (Mickaël Salaün 2021-04-22 17:41:17 +0200 1082) def_bool n
cb2c7d1a17760 (Mickaël Salaün 2021-04-22 17:41:17 +0200 1083) help
cb2c7d1a17760 (Mickaël Salaün 2021-04-22 17:41:17 +0200 1084) An arch should select this symbol if it doesn't keep track of inode
cb2c7d1a17760 (Mickaël Salaün 2021-04-22 17:41:17 +0200 1085) instances on its own, but instead relies on something else (e.g. the
cb2c7d1a17760 (Mickaël Salaün 2021-04-22 17:41:17 +0200 1086) host kernel for an UML kernel).
cb2c7d1a17760 (Mickaël Salaün 2021-04-22 17:41:17 +0200 1087)
a50a3f4b6a313 (Thomas Gleixner 2019-07-17 22:01:49 +0200 1088) config ARCH_SUPPORTS_RT
a50a3f4b6a313 (Thomas Gleixner 2019-07-17 22:01:49 +0200 1089) bool
a50a3f4b6a313 (Thomas Gleixner 2019-07-17 22:01:49 +0200 1090)
fff7fb0b2d908 (Zhaoxiu Zeng 2016-05-20 17:03:57 -0700 1091) config CPU_NO_EFFICIENT_FFS
fff7fb0b2d908 (Zhaoxiu Zeng 2016-05-20 17:03:57 -0700 1092) def_bool n
fff7fb0b2d908 (Zhaoxiu Zeng 2016-05-20 17:03:57 -0700 1093)
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1094) config HAVE_ARCH_VMAP_STACK
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1095) def_bool n
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1096) help
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1097) An arch should select this symbol if it can support kernel stacks
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1098) in vmalloc space. This means:
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1099)
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1100) - vmalloc space must be large enough to hold many kernel stacks.
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1101) This may rule out many 32-bit architectures.
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1102)
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1103) - Stacks in vmalloc space need to work reliably. For example, if
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1104) vmap page tables are created on demand, either this mechanism
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1105) needs to work while the stack points to a virtual address with
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1106) unpopulated page tables or arch code (switch_to() and switch_mm(),
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1107) most likely) needs to ensure that the stack's page table entries
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1108) are populated before running on a possibly unpopulated stack.
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1109)
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1110) - If the stack overflows into a guard page, something reasonable
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1111) should happen. The definition of "reasonable" is flexible, but
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1112) instantly rebooting without logging anything would be unfriendly.
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1113)
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1114) config VMAP_STACK
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1115) default y
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1116) bool "Use a virtually-mapped stack"
eafb149ed73a8 (Daniel Axtens 2019-11-30 17:54:57 -0800 1117) depends on HAVE_ARCH_VMAP_STACK
38dd767daed1a (Andrey Konovalov 2020-12-22 12:02:45 -0800 1118) depends on !KASAN || KASAN_HW_TAGS || KASAN_VMALLOC
a7f7f6248d974 (Masahiro Yamada 2020-06-14 01:50:22 +0900 1119) help
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1120) Enable this if you want the use virtually-mapped kernel stacks
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1121) with guard pages. This causes kernel stack overflows to be
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1122) caught immediately rather than causing difficult-to-diagnose
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1123) corruption.
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1124)
38dd767daed1a (Andrey Konovalov 2020-12-22 12:02:45 -0800 1125) To use this with software KASAN modes, the architecture must support
38dd767daed1a (Andrey Konovalov 2020-12-22 12:02:45 -0800 1126) backing virtual mappings with real shadow memory, and KASAN_VMALLOC
38dd767daed1a (Andrey Konovalov 2020-12-22 12:02:45 -0800 1127) must be enabled.
ba14a194a434c (Andy Lutomirski 2016-08-11 02:35:21 -0700 1128)
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1129) config HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1130) def_bool n
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1131) help
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1132) An arch should select this symbol if it can support kernel stack
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1133) offset randomization with calls to add_random_kstack_offset()
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1134) during syscall entry and choose_random_kstack_offset() during
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1135) syscall exit. Careful removal of -fstack-protector-strong and
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1136) -fstack-protector should also be applied to the entry code and
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1137) closely examined, as the artificial stack bump looks like an array
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1138) to the compiler, so it will attempt to add canary checks regardless
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1139) of the static branch state.
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1140)
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1141) config RANDOMIZE_KSTACK_OFFSET_DEFAULT
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1142) bool "Randomize kernel stack offset on syscall entry"
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1143) depends on HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1144) help
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1145) The kernel stack offset can be randomized (after pt_regs) by
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1146) roughly 5 bits of entropy, frustrating memory corruption
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1147) attacks that depend on stack address determinism or
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1148) cross-syscall address exposures. This feature is controlled
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1149) by kernel boot param "randomize_kstack_offset=on/off", and this
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1150) config chooses the default boot state.
39218ff4c625d (Kees Cook 2021-04-01 16:23:44 -0700 1151)
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1152) config ARCH_OPTIONAL_KERNEL_RWX
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1153) def_bool n
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1154)
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1155) config ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1156) def_bool n
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1157)
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1158) config ARCH_HAS_STRICT_KERNEL_RWX
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1159) def_bool n
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1160)
0f5bf6d0afe4b (Laura Abbott 2017-02-06 16:31:58 -0800 1161) config STRICT_KERNEL_RWX
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1162) bool "Make kernel text and rodata read-only" if ARCH_OPTIONAL_KERNEL_RWX
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1163) depends on ARCH_HAS_STRICT_KERNEL_RWX
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1164) default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1165) help
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1166) If this is set, kernel text and rodata memory will be made read-only,
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1167) and non-text memory will be made non-executable. This provides
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1168) protection against certain security exploits (e.g. executing the heap
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1169) or modifying text)
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1170)
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1171) These features are considered standard security practice these days.
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1172) You should say Y here in almost all cases.
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1173)
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1174) config ARCH_HAS_STRICT_MODULE_RWX
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1175) def_bool n
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1176)
0f5bf6d0afe4b (Laura Abbott 2017-02-06 16:31:58 -0800 1177) config STRICT_MODULE_RWX
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1178) bool "Set loadable kernel module data as NX and text as RO" if ARCH_OPTIONAL_KERNEL_RWX
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1179) depends on ARCH_HAS_STRICT_MODULE_RWX && MODULES
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1180) default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1181) help
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1182) If this is set, module text and rodata memory will be made read-only,
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1183) and non-text memory will be made non-executable. This provides
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1184) protection against certain security exploits (e.g. writing to text)
ad21fc4faa2a1 (Laura Abbott 2017-02-06 16:31:57 -0800 1185)
ea8c64ace8664 (Christoph Hellwig 2018-01-10 16:21:13 +0100 1186) # select if the architecture provides an asm/dma-direct.h header
ea8c64ace8664 (Christoph Hellwig 2018-01-10 16:21:13 +0100 1187) config ARCH_HAS_PHYS_TO_DMA
ea8c64ace8664 (Christoph Hellwig 2018-01-10 16:21:13 +0100 1188) bool
ea8c64ace8664 (Christoph Hellwig 2018-01-10 16:21:13 +0100 1189)
04f264d3a8b0e (Paul Burton 2018-08-20 15:36:17 -0700 1190) config HAVE_ARCH_COMPILER_H
04f264d3a8b0e (Paul Burton 2018-08-20 15:36:17 -0700 1191) bool
04f264d3a8b0e (Paul Burton 2018-08-20 15:36:17 -0700 1192) help
04f264d3a8b0e (Paul Burton 2018-08-20 15:36:17 -0700 1193) An architecture can select this if it provides an
04f264d3a8b0e (Paul Burton 2018-08-20 15:36:17 -0700 1194) asm/compiler.h header that should be included after
04f264d3a8b0e (Paul Burton 2018-08-20 15:36:17 -0700 1195) linux/compiler-*.h in order to override macro definitions that those
04f264d3a8b0e (Paul Burton 2018-08-20 15:36:17 -0700 1196) headers generally provide.
04f264d3a8b0e (Paul Burton 2018-08-20 15:36:17 -0700 1197)
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1198) config HAVE_ARCH_PREL32_RELOCATIONS
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1199) bool
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1200) help
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1201) May be selected by an architecture if it supports place-relative
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1202) 32-bit relocations, both in the toolchain and in the module loader,
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1203) in which case relative references can be used in special sections
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1204) for PCI fixup, initcalls etc which are only half the size on 64 bit
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1205) architectures, and don't require runtime relocation on relocatable
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1206) kernels.
271ca788774aa (Ard Biesheuvel 2018-08-21 21:56:00 -0700 1207)
ce9084ba0d1d8 (Ard Biesheuvel 2019-02-02 10:41:17 +0100 1208) config ARCH_USE_MEMREMAP_PROT
ce9084ba0d1d8 (Ard Biesheuvel 2019-02-02 10:41:17 +0100 1209) bool
ce9084ba0d1d8 (Ard Biesheuvel 2019-02-02 10:41:17 +0100 1210)
fb346fd9fc081 (Waiman Long 2019-04-04 13:43:17 -0400 1211) config LOCK_EVENT_COUNTS
fb346fd9fc081 (Waiman Long 2019-04-04 13:43:17 -0400 1212) bool "Locking event counts collection"
fb346fd9fc081 (Waiman Long 2019-04-04 13:43:17 -0400 1213) depends on DEBUG_FS
a7f7f6248d974 (Masahiro Yamada 2020-06-14 01:50:22 +0900 1214) help
fb346fd9fc081 (Waiman Long 2019-04-04 13:43:17 -0400 1215) Enable light-weight counting of various locking related events
fb346fd9fc081 (Waiman Long 2019-04-04 13:43:17 -0400 1216) in the system with minimal performance impact. This reduces
fb346fd9fc081 (Waiman Long 2019-04-04 13:43:17 -0400 1217) the chance of application behavior change because of timing
fb346fd9fc081 (Waiman Long 2019-04-04 13:43:17 -0400 1218) differences. The counts are reported via debugfs.
fb346fd9fc081 (Waiman Long 2019-04-04 13:43:17 -0400 1219)
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1220) # Select if the architecture has support for applying RELR relocations.
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1221) config ARCH_HAS_RELR
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1222) bool
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1223)
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1224) config RELR
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1225) bool "Use RELR relocation packing"
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1226) depends on ARCH_HAS_RELR && TOOLS_SUPPORT_RELR
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1227) default y
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1228) help
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1229) Store the kernel's dynamic relocations in the RELR relocation packing
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1230) format. Requires a compatible linker (LLD supports this feature), as
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1231) well as compatible NM and OBJCOPY utilities (llvm-nm and llvm-objcopy
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1232) are compatible).
5cf896fb6be3e (Peter Collingbourne 2019-07-31 18:18:42 -0700 1233)
0c9c1d5639751 (Thiago Jung Bauermann 2019-08-06 01:49:14 -0300 1234) config ARCH_HAS_MEM_ENCRYPT
0c9c1d5639751 (Thiago Jung Bauermann 2019-08-06 01:49:14 -0300 1235) bool
0c9c1d5639751 (Thiago Jung Bauermann 2019-08-06 01:49:14 -0300 1236)
0e24220821b0e (Hassan Naveed 2019-11-15 23:44:42 +0000 1237) config HAVE_SPARSE_SYSCALL_NR
0e24220821b0e (Hassan Naveed 2019-11-15 23:44:42 +0000 1238) bool
0e24220821b0e (Hassan Naveed 2019-11-15 23:44:42 +0000 1239) help
0e24220821b0e (Hassan Naveed 2019-11-15 23:44:42 +0000 1240) An architecture should select this if its syscall numbering is sparse
0e24220821b0e (Hassan Naveed 2019-11-15 23:44:42 +0000 1241) to save space. For example, MIPS architecture has a syscall array with
0e24220821b0e (Hassan Naveed 2019-11-15 23:44:42 +0000 1242) entries at 4000, 5000 and 6000 locations. This option turns on syscall
0e24220821b0e (Hassan Naveed 2019-11-15 23:44:42 +0000 1243) related optimizations for a given architecture.
0e24220821b0e (Hassan Naveed 2019-11-15 23:44:42 +0000 1244)
d60d7de3e16d7 (Sven Schnelle 2020-08-04 17:01:22 +0200 1245) config ARCH_HAS_VDSO_DATA
d60d7de3e16d7 (Sven Schnelle 2020-08-04 17:01:22 +0200 1246) bool
d60d7de3e16d7 (Sven Schnelle 2020-08-04 17:01:22 +0200 1247)
115284d89a436 (Josh Poimboeuf 2020-08-18 15:57:41 +0200 1248) config HAVE_STATIC_CALL
115284d89a436 (Josh Poimboeuf 2020-08-18 15:57:41 +0200 1249) bool
115284d89a436 (Josh Poimboeuf 2020-08-18 15:57:41 +0200 1250)
9183c3f9ed710 (Josh Poimboeuf 2020-08-18 15:57:42 +0200 1251) config HAVE_STATIC_CALL_INLINE
9183c3f9ed710 (Josh Poimboeuf 2020-08-18 15:57:42 +0200 1252) bool
9183c3f9ed710 (Josh Poimboeuf 2020-08-18 15:57:42 +0200 1253) depends on HAVE_STATIC_CALL
9183c3f9ed710 (Josh Poimboeuf 2020-08-18 15:57:42 +0200 1254)
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1255) config HAVE_PREEMPT_DYNAMIC
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1256) bool
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1257) depends on HAVE_STATIC_CALL
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1258) depends on GENERIC_ENTRY
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1259) help
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1260) Select this if the architecture support boot time preempt setting
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1261) on top of static calls. It is strongly advised to support inline
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1262) static call to avoid any overhead.
6ef869e064743 (Michal Hocko 2021-01-18 15:12:19 +0100 1263)
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1264) config ARCH_WANT_LD_ORPHAN_WARN
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1265) bool
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1266) help
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1267) An arch should select this symbol once all linker sections are explicitly
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1268) included, size-asserted, or discarded in the linker scripts. This is
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1269) important because we never want expected sections to be placed heuristically
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1270) by the linker, since the locations of such sections can change between linker
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1271) versions.
59612b24f78a0 (Nathan Chancellor 2020-11-19 13:46:56 -0700 1272)
4f5b0c1789963 (Mike Rapoport 2020-12-14 19:09:59 -0800 1273) config HAVE_ARCH_PFN_VALID
4f5b0c1789963 (Mike Rapoport 2020-12-14 19:09:59 -0800 1274) bool
4f5b0c1789963 (Mike Rapoport 2020-12-14 19:09:59 -0800 1275)
5d6ad668f3162 (Mike Rapoport 2020-12-14 19:10:30 -0800 1276) config ARCH_SUPPORTS_DEBUG_PAGEALLOC
5d6ad668f3162 (Mike Rapoport 2020-12-14 19:10:30 -0800 1277) bool
5d6ad668f3162 (Mike Rapoport 2020-12-14 19:10:30 -0800 1278)
2ca408d9c749c (Brian Gerst 2020-11-30 17:30:59 -0500 1279) config ARCH_SPLIT_ARG64
2ca408d9c749c (Brian Gerst 2020-11-30 17:30:59 -0500 1280) bool
2ca408d9c749c (Brian Gerst 2020-11-30 17:30:59 -0500 1281) help
2ca408d9c749c (Brian Gerst 2020-11-30 17:30:59 -0500 1282) If a 32-bit architecture requires 64-bit arguments to be split into
2ca408d9c749c (Brian Gerst 2020-11-30 17:30:59 -0500 1283) pairs of 32-bit arguments, select this option.
2ca408d9c749c (Brian Gerst 2020-11-30 17:30:59 -0500 1284)
7facdc426f86c (Al Viro 2020-06-13 23:03:25 -0400 1285) config ARCH_HAS_ELFCORE_COMPAT
7facdc426f86c (Al Viro 2020-06-13 23:03:25 -0400 1286) bool
7facdc426f86c (Al Viro 2020-06-13 23:03:25 -0400 1287)
58e106e725eed (Balbir Singh 2021-04-26 21:59:11 +0200 1288) config ARCH_HAS_PARANOID_L1D_FLUSH
58e106e725eed (Balbir Singh 2021-04-26 21:59:11 +0200 1289) bool
58e106e725eed (Balbir Singh 2021-04-26 21:59:11 +0200 1290)
2521f2c228ad7 (Peter Oberparleiter 2009-06-17 16:28:08 -0700 1291) source "kernel/gcov/Kconfig"
45332b1bdfdc8 (Masahiro Yamada 2018-07-05 15:24:12 +0900 1292)
45332b1bdfdc8 (Masahiro Yamada 2018-07-05 15:24:12 +0900 1293) source "scripts/gcc-plugins/Kconfig"
fa1b5d09d0771 (Linus Torvalds 2018-08-15 13:05:12 -0700 1294)
22471e1313f2b (Randy Dunlap 2018-07-31 13:39:33 +0200 1295) endmenu