linux/arch/Kconfig
<<
>>
Prefs
   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_64BIT_ALIGNED_ACCESS
 107        def_bool 64BIT && !HAVE_EFFICIENT_UNALIGNED_ACCESS
 108        help
 109          Some architectures require 64 bit accesses to be 64 bit
 110          aligned, which also requires structs containing 64 bit values
 111          to be 64 bit aligned too. This includes some 32 bit
 112          architectures which can do 64 bit accesses, as well as 64 bit
 113          architectures without unaligned access.
 114
 115          This symbol should be selected by an architecture if 64 bit
 116          accesses are required to be 64 bit aligned in this way even
 117          though it is not a 64 bit architecture.
 118
 119          See Documentation/unaligned-memory-access.txt for more
 120          information on the topic of unaligned memory accesses.
 121
 122config HAVE_EFFICIENT_UNALIGNED_ACCESS
 123        bool
 124        help
 125          Some architectures are unable to perform unaligned accesses
 126          without the use of get_unaligned/put_unaligned. Others are
 127          unable to perform such accesses efficiently (e.g. trap on
 128          unaligned access and require fixing it up in the exception
 129          handler.)
 130
 131          This symbol should be selected by an architecture if it can
 132          perform unaligned accesses efficiently to allow different
 133          code paths to be selected for these cases. Some network
 134          drivers, for example, could opt to not fix up alignment
 135          problems with received packets if doing so would not help
 136          much.
 137
 138          See Documentation/unaligned-memory-access.txt for more
 139          information on the topic of unaligned memory accesses.
 140
 141config ARCH_USE_BUILTIN_BSWAP
 142       bool
 143       help
 144         Modern versions of GCC (since 4.4) have builtin functions
 145         for handling byte-swapping. Using these, instead of the old
 146         inline assembler that the architecture code provides in the
 147         __arch_bswapXX() macros, allows the compiler to see what's
 148         happening and offers more opportunity for optimisation. In
 149         particular, the compiler will be able to combine the byteswap
 150         with a nearby load or store and use load-and-swap or
 151         store-and-swap instructions if the architecture has them. It
 152         should almost *never* result in code which is worse than the
 153         hand-coded assembler in <asm/swab.h>.  But just in case it
 154         does, the use of the builtins is optional.
 155
 156         Any architecture with load-and-swap or store-and-swap
 157         instructions should set this. And it shouldn't hurt to set it
 158         on architectures that don't have such instructions.
 159
 160config KRETPROBES
 161        def_bool y
 162        depends on KPROBES && HAVE_KRETPROBES
 163
 164config USER_RETURN_NOTIFIER
 165        bool
 166        depends on HAVE_USER_RETURN_NOTIFIER
 167        help
 168          Provide a kernel-internal notification when a cpu is about to
 169          switch to user mode.
 170
 171config HAVE_IOREMAP_PROT
 172        bool
 173
 174config HAVE_KPROBES
 175        bool
 176
 177config HAVE_KRETPROBES
 178        bool
 179
 180config HAVE_OPTPROBES
 181        bool
 182
 183config HAVE_KPROBES_ON_FTRACE
 184        bool
 185
 186config HAVE_NMI_WATCHDOG
 187        bool
 188#
 189# An arch should select this if it provides all these things:
 190#
 191#       task_pt_regs()          in asm/processor.h or asm/ptrace.h
 192#       arch_has_single_step()  if there is hardware single-step support
 193#       arch_has_block_step()   if there is hardware block-step support
 194#       asm/syscall.h           supplying asm-generic/syscall.h interface
 195#       linux/regset.h          user_regset interfaces
 196#       CORE_DUMP_USE_REGSET    #define'd in linux/elf.h
 197#       TIF_SYSCALL_TRACE       calls tracehook_report_syscall_{entry,exit}
 198#       TIF_NOTIFY_RESUME       calls tracehook_notify_resume()
 199#       signal delivery         calls tracehook_signal_handler()
 200#
 201config HAVE_ARCH_TRACEHOOK
 202        bool
 203
 204config HAVE_DMA_ATTRS
 205        bool
 206
 207config HAVE_DMA_CONTIGUOUS
 208        bool
 209
 210config USE_GENERIC_SMP_HELPERS
 211        bool
 212
 213config GENERIC_SMP_IDLE_THREAD
 214       bool
 215
 216config GENERIC_IDLE_POLL_SETUP
 217       bool
 218
 219# Select if arch init_task initializer is different to init/init_task.c
 220config ARCH_INIT_TASK
 221       bool
 222
 223# Select if arch has its private alloc_task_struct() function
 224config ARCH_TASK_STRUCT_ALLOCATOR
 225        bool
 226
 227# Select if arch has its private alloc_thread_info() function
 228config ARCH_THREAD_INFO_ALLOCATOR
 229        bool
 230
 231config HAVE_REGS_AND_STACK_ACCESS_API
 232        bool
 233        help
 234          This symbol should be selected by an architecure if it supports
 235          the API needed to access registers and stack entries from pt_regs,
 236          declared in asm/ptrace.h
 237          For example the kprobes-based event tracer needs this API.
 238
 239config HAVE_CLK
 240        bool
 241        help
 242          The <linux/clk.h> calls support software clock gating and
 243          thus are a key power management tool on many systems.
 244
 245config HAVE_DMA_API_DEBUG
 246        bool
 247
 248config HAVE_HW_BREAKPOINT
 249        bool
 250        depends on PERF_EVENTS
 251
 252config HAVE_MIXED_BREAKPOINTS_REGS
 253        bool
 254        depends on HAVE_HW_BREAKPOINT
 255        help
 256          Depending on the arch implementation of hardware breakpoints,
 257          some of them have separate registers for data and instruction
 258          breakpoints addresses, others have mixed registers to store
 259          them but define the access type in a control register.
 260          Select this option if your arch implements breakpoints under the
 261          latter fashion.
 262
 263config HAVE_USER_RETURN_NOTIFIER
 264        bool
 265
 266config HAVE_PERF_EVENTS_NMI
 267        bool
 268        help
 269          System hardware can generate an NMI using the perf event
 270          subsystem.  Also has support for calculating CPU cycle events
 271          to determine how many clock cycles in a given period.
 272
 273config HAVE_PERF_REGS
 274        bool
 275        help
 276          Support selective register dumps for perf events. This includes
 277          bit-mapping of each registers and a unique architecture id.
 278
 279config HAVE_PERF_USER_STACK_DUMP
 280        bool
 281        help
 282          Support user stack dumps for perf event samples. This needs
 283          access to the user stack pointer which is not unified across
 284          architectures.
 285
 286config HAVE_ARCH_JUMP_LABEL
 287        bool
 288
 289config HAVE_ARCH_MUTEX_CPU_RELAX
 290        bool
 291
 292config HAVE_RCU_TABLE_FREE
 293        bool
 294
 295config ARCH_HAVE_NMI_SAFE_CMPXCHG
 296        bool
 297
 298config HAVE_ALIGNED_STRUCT_PAGE
 299        bool
 300        help
 301          This makes sure that struct pages are double word aligned and that
 302          e.g. the SLUB allocator can perform double word atomic operations
 303          on a struct page for better performance. However selecting this
 304          might increase the size of a struct page by a word.
 305
 306config HAVE_CMPXCHG_LOCAL
 307        bool
 308
 309config HAVE_CMPXCHG_DOUBLE
 310        bool
 311
 312config ARCH_WANT_IPC_PARSE_VERSION
 313        bool
 314
 315config ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 316        bool
 317
 318config ARCH_WANT_OLD_COMPAT_IPC
 319        select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 320        bool
 321
 322config HAVE_ARCH_SECCOMP_FILTER
 323        bool
 324        help
 325          An arch should select this symbol if it provides all of these things:
 326          - syscall_get_arch()
 327          - syscall_get_arguments()
 328          - syscall_rollback()
 329          - syscall_set_return_value()
 330          - SIGSYS siginfo_t support
 331          - secure_computing is called from a ptrace_event()-safe context
 332          - secure_computing return value is checked and a return value of -1
 333            results in the system call being skipped immediately.
 334
 335config SECCOMP_FILTER
 336        def_bool y
 337        depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
 338        help
 339          Enable tasks to build secure computing environments defined
 340          in terms of Berkeley Packet Filter programs which implement
 341          task-defined system call filtering polices.
 342
 343          See Documentation/prctl/seccomp_filter.txt for details.
 344
 345config HAVE_CONTEXT_TRACKING
 346        bool
 347        help
 348          Provide kernel/user boundaries probes necessary for subsystems
 349          that need it, such as userspace RCU extended quiescent state.
 350          Syscalls need to be wrapped inside user_exit()-user_enter() through
 351          the slow path using TIF_NOHZ flag. Exceptions handlers must be
 352          wrapped as well. Irqs are already protected inside
 353          rcu_irq_enter/rcu_irq_exit() but preemption or signal handling on
 354          irq exit still need to be protected.
 355
 356config HAVE_VIRT_CPU_ACCOUNTING
 357        bool
 358
 359config HAVE_IRQ_TIME_ACCOUNTING
 360        bool
 361        help
 362          Archs need to ensure they use a high enough resolution clock to
 363          support irq time accounting and then call enable_sched_clock_irqtime().
 364
 365config HAVE_ARCH_TRANSPARENT_HUGEPAGE
 366        bool
 367
 368config HAVE_ARCH_SOFT_DIRTY
 369        bool
 370
 371config HAVE_MOD_ARCH_SPECIFIC
 372        bool
 373        help
 374          The arch uses struct mod_arch_specific to store data.  Many arches
 375          just need a simple module loader without arch specific data - those
 376          should not enable this.
 377
 378config MODULES_USE_ELF_RELA
 379        bool
 380        help
 381          Modules only use ELF RELA relocations.  Modules with ELF REL
 382          relocations will give an error.
 383
 384config MODULES_USE_ELF_REL
 385        bool
 386        help
 387          Modules only use ELF REL relocations.  Modules with ELF RELA
 388          relocations will give an error.
 389
 390config HAVE_UNDERSCORE_SYMBOL_PREFIX
 391        bool
 392        help
 393          Some architectures generate an _ in front of C symbols; things like
 394          module loading and assembly files need to know about this.
 395
 396#
 397# ABI hall of shame
 398#
 399config CLONE_BACKWARDS
 400        bool
 401        help
 402          Architecture has tls passed as the 4th argument of clone(2),
 403          not the 5th one.
 404
 405config CLONE_BACKWARDS2
 406        bool
 407        help
 408          Architecture has the first two arguments of clone(2) swapped.
 409
 410config CLONE_BACKWARDS3
 411        bool
 412        help
 413          Architecture has tls passed as the 3rd argument of clone(2),
 414          not the 5th one.
 415
 416config ODD_RT_SIGACTION
 417        bool
 418        help
 419          Architecture has unusual rt_sigaction(2) arguments
 420
 421config OLD_SIGSUSPEND
 422        bool
 423        help
 424          Architecture has old sigsuspend(2) syscall, of one-argument variety
 425
 426config OLD_SIGSUSPEND3
 427        bool
 428        help
 429          Even weirder antique ABI - three-argument sigsuspend(2)
 430
 431config OLD_SIGACTION
 432        bool
 433        help
 434          Architecture has old sigaction(2) syscall.  Nope, not the same
 435          as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
 436          but fairly different variant of sigaction(2), thanks to OSF/1
 437          compatibility...
 438
 439config COMPAT_OLD_SIGACTION
 440        bool
 441
 442source "kernel/gcov/Kconfig"
 443