1# 2# General architecture dependent options 3# 4 5config OPROFILE 6 tristate "OProfile system profiling" 7 depends on PROFILING 8 depends on HAVE_OPROFILE 9 select RING_BUFFER 10 select RING_BUFFER_ALLOW_SWAP 11 help 12 OProfile is a profiling system capable of profiling the 13 whole system, include the kernel, kernel modules, libraries, 14 and applications. 15 16 If unsure, say N. 17 18config OPROFILE_EVENT_MULTIPLEX 19 bool "OProfile multiplexing support (EXPERIMENTAL)" 20 default n 21 depends on OPROFILE && X86 22 help 23 The number of hardware counters is limited. The multiplexing 24 feature enables OProfile to gather more events than counters 25 are provided by the hardware. This is realized by switching 26 between events at an user specified time interval. 27 28 If unsure, say N. 29 30config HAVE_OPROFILE 31 bool 32 33config OPROFILE_NMI_TIMER 34 def_bool y 35 depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI 36 37config KPROBES 38 bool "Kprobes" 39 depends on MODULES 40 depends on HAVE_KPROBES 41 select KALLSYMS 42 help 43 Kprobes allows you to trap at almost any kernel address and 44 execute a callback function. register_kprobe() establishes 45 a probepoint and specifies the callback. Kprobes is useful 46 for kernel debugging, non-intrusive instrumentation and testing. 47 If in doubt, say "N". 48 49config JUMP_LABEL 50 bool "Optimize very unlikely/likely branches" 51 depends on HAVE_ARCH_JUMP_LABEL 52 help 53 This option enables a transparent branch optimization that 54 makes certain almost-always-true or almost-always-false branch 55 conditions even cheaper to execute within the kernel. 56 57 Certain performance-sensitive kernel code, such as trace points, 58 scheduler functionality, networking code and KVM have such 59 branches and include support for this optimization technique. 60 61 If it is detected that the compiler has support for "asm goto", 62 the kernel will compile such branches with just a nop 63 instruction. When the condition flag is toggled to true, the 64 nop will be converted to a jump instruction to execute the 65 conditional block of instructions. 66 67 This technique lowers overhead and stress on the branch prediction 68 of the processor and generally makes the kernel faster. The update 69 of the condition is slower, but those are always very rare. 70 71 ( On 32-bit x86, the necessary options added to the compiler 72 flags may increase the size of the kernel slightly. ) 73 74config OPTPROBES 75 def_bool y 76 depends on KPROBES && HAVE_OPTPROBES 77 depends on !PREEMPT 78 79config KPROBES_ON_FTRACE 80 def_bool y 81 depends on KPROBES && HAVE_KPROBES_ON_FTRACE 82 depends on DYNAMIC_FTRACE_WITH_REGS 83 help 84 If function tracer is enabled and the arch supports full 85 passing of pt_regs to function tracing, then kprobes can 86 optimize on top of function tracing. 87 88config UPROBES 89 bool "Transparent user-space probes (EXPERIMENTAL)" 90 depends on UPROBE_EVENT && PERF_EVENTS 91 default n 92 select PERCPU_RWSEM 93 help 94 Uprobes is the user-space counterpart to kprobes: they 95 enable instrumentation applications (such as 'perf probe') 96 to establish unintrusive probes in user-space binaries and 97 libraries, by executing handler functions when the probes 98 are hit by user-space applications. 99 100 ( These probes come in the form of single-byte breakpoints, 101 managed by the kernel and kept transparent to the probed 102 application. ) 103 104 If in doubt, say "N". 105 106config HAVE_EFFICIENT_UNALIGNED_ACCESS 107 bool 108 help 109 Some architectures are unable to perform unaligned accesses 110 without the use of get_unaligned/put_unaligned. Others are 111 unable to perform such accesses efficiently (e.g. trap on 112 unaligned access and require fixing it up in the exception 113 handler.) 114 115 This symbol should be selected by an architecture if it can 116 perform unaligned accesses efficiently to allow different 117 code paths to be selected for these cases. Some network 118 drivers, for example, could opt to not fix up alignment 119 problems with received packets if doing so would not help 120 much. 121 122 See Documentation/unaligned-memory-access.txt for more 123 information on the topic of unaligned memory accesses. 124 125config ARCH_USE_BUILTIN_BSWAP 126 bool 127 help 128 Modern versions of GCC (since 4.4) have builtin functions 129 for handling byte-swapping. Using these, instead of the old 130 inline assembler that the architecture code provides in the 131 __arch_bswapXX() macros, allows the compiler to see what's 132 happening and offers more opportunity for optimisation. In 133 particular, the compiler will be able to combine the byteswap 134 with a nearby load or store and use load-and-swap or 135 store-and-swap instructions if the architecture has them. It 136 should almost *never* result in code which is worse than the 137 hand-coded assembler in <asm/swab.h>. But just in case it 138 does, the use of the builtins is optional. 139 140 Any architecture with load-and-swap or store-and-swap 141 instructions should set this. And it shouldn't hurt to set it 142 on architectures that don't have such instructions. 143 144config HAVE_SYSCALL_WRAPPERS 145 bool 146 147config KRETPROBES 148 def_bool y 149 depends on KPROBES && HAVE_KRETPROBES 150 151config USER_RETURN_NOTIFIER 152 bool 153 depends on HAVE_USER_RETURN_NOTIFIER 154 help 155 Provide a kernel-internal notification when a cpu is about to 156 switch to user mode. 157 158config HAVE_IOREMAP_PROT 159 bool 160 161config HAVE_KPROBES 162 bool 163 164config HAVE_KRETPROBES 165 bool 166 167config HAVE_OPTPROBES 168 bool 169 170config HAVE_KPROBES_ON_FTRACE 171 bool 172 173config HAVE_NMI_WATCHDOG 174 bool 175# 176# An arch should select this if it provides all these things: 177# 178# task_pt_regs() in asm/processor.h or asm/ptrace.h 179# arch_has_single_step() if there is hardware single-step support 180# arch_has_block_step() if there is hardware block-step support 181# asm/syscall.h supplying asm-generic/syscall.h interface 182# linux/regset.h user_regset interfaces 183# CORE_DUMP_USE_REGSET #define'd in linux/elf.h 184# TIF_SYSCALL_TRACE calls tracehook_report_syscall_{entry,exit} 185# TIF_NOTIFY_RESUME calls tracehook_notify_resume() 186# signal delivery calls tracehook_signal_handler() 187# 188config HAVE_ARCH_TRACEHOOK 189 bool 190 191config HAVE_DMA_ATTRS 192 bool 193 194config HAVE_DMA_CONTIGUOUS 195 bool 196 197config USE_GENERIC_SMP_HELPERS 198 bool 199 200config GENERIC_SMP_IDLE_THREAD 201 bool 202 203# Select if arch init_task initializer is different to init/init_task.c 204config ARCH_INIT_TASK 205 bool 206 207# Select if arch has its private alloc_task_struct() function 208config ARCH_TASK_STRUCT_ALLOCATOR 209 bool 210 211# Select if arch has its private alloc_thread_info() function 212config ARCH_THREAD_INFO_ALLOCATOR 213 bool 214 215config HAVE_REGS_AND_STACK_ACCESS_API 216 bool 217 help 218 This symbol should be selected by an architecure if it supports 219 the API needed to access registers and stack entries from pt_regs, 220 declared in asm/ptrace.h 221 For example the kprobes-based event tracer needs this API. 222 223config HAVE_CLK 224 bool 225 help 226 The <linux/clk.h> calls support software clock gating and 227 thus are a key power management tool on many systems. 228 229config HAVE_DMA_API_DEBUG 230 bool 231 232config HAVE_HW_BREAKPOINT 233 bool 234 depends on PERF_EVENTS 235 236config HAVE_MIXED_BREAKPOINTS_REGS 237 bool 238 depends on HAVE_HW_BREAKPOINT 239 help 240 Depending on the arch implementation of hardware breakpoints, 241 some of them have separate registers for data and instruction 242 breakpoints addresses, others have mixed registers to store 243 them but define the access type in a control register. 244 Select this option if your arch implements breakpoints under the 245 latter fashion. 246 247config HAVE_USER_RETURN_NOTIFIER 248 bool 249 250config HAVE_PERF_EVENTS_NMI 251 bool 252 help 253 System hardware can generate an NMI using the perf event 254 subsystem. Also has support for calculating CPU cycle events 255 to determine how many clock cycles in a given period. 256 257config HAVE_PERF_REGS 258 bool 259 help 260 Support selective register dumps for perf events. This includes 261 bit-mapping of each registers and a unique architecture id. 262 263config HAVE_PERF_USER_STACK_DUMP 264 bool 265 help 266 Support user stack dumps for perf event samples. This needs 267 access to the user stack pointer which is not unified across 268 architectures. 269 270config HAVE_ARCH_JUMP_LABEL 271 bool 272 273config HAVE_ARCH_MUTEX_CPU_RELAX 274 bool 275 276config HAVE_RCU_TABLE_FREE 277 bool 278 279config ARCH_HAVE_NMI_SAFE_CMPXCHG 280 bool 281 282config HAVE_ALIGNED_STRUCT_PAGE 283 bool 284 help 285 This makes sure that struct pages are double word aligned and that 286 e.g. the SLUB allocator can perform double word atomic operations 287 on a struct page for better performance. However selecting this 288 might increase the size of a struct page by a word. 289 290config HAVE_CMPXCHG_LOCAL 291 bool 292 293config HAVE_CMPXCHG_DOUBLE 294 bool 295 296config ARCH_WANT_IPC_PARSE_VERSION 297 bool 298 299config ARCH_WANT_COMPAT_IPC_PARSE_VERSION 300 bool 301 302config ARCH_WANT_OLD_COMPAT_IPC 303 select ARCH_WANT_COMPAT_IPC_PARSE_VERSION 304 bool 305 306config HAVE_ARCH_SECCOMP_FILTER 307 bool 308 help 309 An arch should select this symbol if it provides all of these things: 310 - syscall_get_arch() 311 - syscall_get_arguments() 312 - syscall_rollback() 313 - syscall_set_return_value() 314 - SIGSYS siginfo_t support 315 - secure_computing is called from a ptrace_event()-safe context 316 - secure_computing return value is checked and a return value of -1 317 results in the system call being skipped immediately. 318 319config SECCOMP_FILTER 320 def_bool y 321 depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET 322 help 323 Enable tasks to build secure computing environments defined 324 in terms of Berkeley Packet Filter programs which implement 325 task-defined system call filtering polices. 326 327 See Documentation/prctl/seccomp_filter.txt for details. 328 329config HAVE_CONTEXT_TRACKING 330 bool 331 help 332 Provide kernel/user boundaries probes necessary for subsystems 333 that need it, such as userspace RCU extended quiescent state. 334 Syscalls need to be wrapped inside user_exit()-user_enter() through 335 the slow path using TIF_NOHZ flag. Exceptions handlers must be 336 wrapped as well. Irqs are already protected inside 337 rcu_irq_enter/rcu_irq_exit() but preemption or signal handling on 338 irq exit still need to be protected. 339 340config HAVE_VIRT_CPU_ACCOUNTING 341 bool 342 343config HAVE_IRQ_TIME_ACCOUNTING 344 bool 345 help 346 Archs need to ensure they use a high enough resolution clock to 347 support irq time accounting and then call enable_sched_clock_irqtime(). 348 349config HAVE_ARCH_TRANSPARENT_HUGEPAGE 350 bool 351 352config HAVE_MOD_ARCH_SPECIFIC 353 bool 354 help 355 The arch uses struct mod_arch_specific to store data. Many arches 356 just need a simple module loader without arch specific data - those 357 should not enable this. 358 359config MODULES_USE_ELF_RELA 360 bool 361 help 362 Modules only use ELF RELA relocations. Modules with ELF REL 363 relocations will give an error. 364 365config MODULES_USE_ELF_REL 366 bool 367 help 368 Modules only use ELF REL relocations. Modules with ELF RELA 369 relocations will give an error. 370 371config GENERIC_SIGALTSTACK 372 bool 373 374# 375# ABI hall of shame 376# 377config CLONE_BACKWARDS 378 bool 379 help 380 Architecture has tls passed as the 4th argument of clone(2), 381 not the 5th one. 382 383config CLONE_BACKWARDS2 384 bool 385 help 386 Architecture has the first two arguments of clone(2) swapped. 387 388source "kernel/gcov/Kconfig" 389