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 UPROBES
  80        bool "Transparent user-space probes (EXPERIMENTAL)"
  81        depends on UPROBE_EVENT && PERF_EVENTS
  82        default n
  83        select PERCPU_RWSEM
  84        help
  85          Uprobes is the user-space counterpart to kprobes: they
  86          enable instrumentation applications (such as 'perf probe')
  87          to establish unintrusive probes in user-space binaries and
  88          libraries, by executing handler functions when the probes
  89          are hit by user-space applications.
  90
  91          ( These probes come in the form of single-byte breakpoints,
  92            managed by the kernel and kept transparent to the probed
  93            application. )
  94
  95          If in doubt, say "N".
  96
  97config HAVE_EFFICIENT_UNALIGNED_ACCESS
  98        bool
  99        help
 100          Some architectures are unable to perform unaligned accesses
 101          without the use of get_unaligned/put_unaligned. Others are
 102          unable to perform such accesses efficiently (e.g. trap on
 103          unaligned access and require fixing it up in the exception
 104          handler.)
 105
 106          This symbol should be selected by an architecture if it can
 107          perform unaligned accesses efficiently to allow different
 108          code paths to be selected for these cases. Some network
 109          drivers, for example, could opt to not fix up alignment
 110          problems with received packets if doing so would not help
 111          much.
 112
 113          See Documentation/unaligned-memory-access.txt for more
 114          information on the topic of unaligned memory accesses.
 115
 116config ARCH_USE_BUILTIN_BSWAP
 117       bool
 118       help
 119         Modern versions of GCC (since 4.4) have builtin functions
 120         for handling byte-swapping. Using these, instead of the old
 121         inline assembler that the architecture code provides in the
 122         __arch_bswapXX() macros, allows the compiler to see what's
 123         happening and offers more opportunity for optimisation. In
 124         particular, the compiler will be able to combine the byteswap
 125         with a nearby load or store and use load-and-swap or
 126         store-and-swap instructions if the architecture has them. It
 127         should almost *never* result in code which is worse than the
 128         hand-coded assembler in <asm/swab.h>.  But just in case it
 129         does, the use of the builtins is optional.
 130
 131         Any architecture with load-and-swap or store-and-swap
 132         instructions should set this. And it shouldn't hurt to set it
 133         on architectures that don't have such instructions.
 134
 135config HAVE_SYSCALL_WRAPPERS
 136        bool
 137
 138config KRETPROBES
 139        def_bool y
 140        depends on KPROBES && HAVE_KRETPROBES
 141
 142config USER_RETURN_NOTIFIER
 143        bool
 144        depends on HAVE_USER_RETURN_NOTIFIER
 145        help
 146          Provide a kernel-internal notification when a cpu is about to
 147          switch to user mode.
 148
 149config HAVE_IOREMAP_PROT
 150        bool
 151
 152config HAVE_KPROBES
 153        bool
 154
 155config HAVE_KRETPROBES
 156        bool
 157
 158config HAVE_OPTPROBES
 159        bool
 160
 161config HAVE_NMI_WATCHDOG
 162        bool
 163#
 164# An arch should select this if it provides all these things:
 165#
 166#       task_pt_regs()          in asm/processor.h or asm/ptrace.h
 167#       arch_has_single_step()  if there is hardware single-step support
 168#       arch_has_block_step()   if there is hardware block-step support
 169#       asm/syscall.h           supplying asm-generic/syscall.h interface
 170#       linux/regset.h          user_regset interfaces
 171#       CORE_DUMP_USE_REGSET    #define'd in linux/elf.h
 172#       TIF_SYSCALL_TRACE       calls tracehook_report_syscall_{entry,exit}
 173#       TIF_NOTIFY_RESUME       calls tracehook_notify_resume()
 174#       signal delivery         calls tracehook_signal_handler()
 175#
 176config HAVE_ARCH_TRACEHOOK
 177        bool
 178
 179config HAVE_DMA_ATTRS
 180        bool
 181
 182config HAVE_DMA_CONTIGUOUS
 183        bool
 184
 185config USE_GENERIC_SMP_HELPERS
 186        bool
 187
 188config GENERIC_SMP_IDLE_THREAD
 189       bool
 190
 191# Select if arch init_task initializer is different to init/init_task.c
 192config ARCH_INIT_TASK
 193       bool
 194
 195# Select if arch has its private alloc_task_struct() function
 196config ARCH_TASK_STRUCT_ALLOCATOR
 197        bool
 198
 199# Select if arch has its private alloc_thread_info() function
 200config ARCH_THREAD_INFO_ALLOCATOR
 201        bool
 202
 203config HAVE_REGS_AND_STACK_ACCESS_API
 204        bool
 205        help
 206          This symbol should be selected by an architecure if it supports
 207          the API needed to access registers and stack entries from pt_regs,
 208          declared in asm/ptrace.h
 209          For example the kprobes-based event tracer needs this API.
 210
 211config HAVE_CLK
 212        bool
 213        help
 214          The <linux/clk.h> calls support software clock gating and
 215          thus are a key power management tool on many systems.
 216
 217config HAVE_DMA_API_DEBUG
 218        bool
 219
 220config HAVE_HW_BREAKPOINT
 221        bool
 222        depends on PERF_EVENTS
 223
 224config HAVE_MIXED_BREAKPOINTS_REGS
 225        bool
 226        depends on HAVE_HW_BREAKPOINT
 227        help
 228          Depending on the arch implementation of hardware breakpoints,
 229          some of them have separate registers for data and instruction
 230          breakpoints addresses, others have mixed registers to store
 231          them but define the access type in a control register.
 232          Select this option if your arch implements breakpoints under the
 233          latter fashion.
 234
 235config HAVE_USER_RETURN_NOTIFIER
 236        bool
 237
 238config HAVE_PERF_EVENTS_NMI
 239        bool
 240        help
 241          System hardware can generate an NMI using the perf event
 242          subsystem.  Also has support for calculating CPU cycle events
 243          to determine how many clock cycles in a given period.
 244
 245config HAVE_PERF_REGS
 246        bool
 247        help
 248          Support selective register dumps for perf events. This includes
 249          bit-mapping of each registers and a unique architecture id.
 250
 251config HAVE_PERF_USER_STACK_DUMP
 252        bool
 253        help
 254          Support user stack dumps for perf event samples. This needs
 255          access to the user stack pointer which is not unified across
 256          architectures.
 257
 258config HAVE_ARCH_JUMP_LABEL
 259        bool
 260
 261config HAVE_ARCH_MUTEX_CPU_RELAX
 262        bool
 263
 264config HAVE_RCU_TABLE_FREE
 265        bool
 266
 267config ARCH_HAVE_NMI_SAFE_CMPXCHG
 268        bool
 269
 270config HAVE_ALIGNED_STRUCT_PAGE
 271        bool
 272        help
 273          This makes sure that struct pages are double word aligned and that
 274          e.g. the SLUB allocator can perform double word atomic operations
 275          on a struct page for better performance. However selecting this
 276          might increase the size of a struct page by a word.
 277
 278config HAVE_CMPXCHG_LOCAL
 279        bool
 280
 281config HAVE_CMPXCHG_DOUBLE
 282        bool
 283
 284config ARCH_WANT_IPC_PARSE_VERSION
 285        bool
 286
 287config ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 288        bool
 289
 290config ARCH_WANT_OLD_COMPAT_IPC
 291        select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 292        bool
 293
 294config HAVE_ARCH_SECCOMP_FILTER
 295        bool
 296        help
 297          An arch should select this symbol if it provides all of these things:
 298          - syscall_get_arch()
 299          - syscall_get_arguments()
 300          - syscall_rollback()
 301          - syscall_set_return_value()
 302          - SIGSYS siginfo_t support
 303          - secure_computing is called from a ptrace_event()-safe context
 304          - secure_computing return value is checked and a return value of -1
 305            results in the system call being skipped immediately.
 306
 307config SECCOMP_FILTER
 308        def_bool y
 309        depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
 310        help
 311          Enable tasks to build secure computing environments defined
 312          in terms of Berkeley Packet Filter programs which implement
 313          task-defined system call filtering polices.
 314
 315          See Documentation/prctl/seccomp_filter.txt for details.
 316
 317config HAVE_CONTEXT_TRACKING
 318        bool
 319        help
 320          Provide kernel/user boundaries probes necessary for subsystems
 321          that need it, such as userspace RCU extended quiescent state.
 322          Syscalls need to be wrapped inside user_exit()-user_enter() through
 323          the slow path using TIF_NOHZ flag. Exceptions handlers must be
 324          wrapped as well. Irqs are already protected inside
 325          rcu_irq_enter/rcu_irq_exit() but preemption or signal handling on
 326          irq exit still need to be protected.
 327
 328config HAVE_VIRT_CPU_ACCOUNTING
 329        bool
 330
 331config HAVE_IRQ_TIME_ACCOUNTING
 332        bool
 333        help
 334          Archs need to ensure they use a high enough resolution clock to
 335          support irq time accounting and then call enable_sched_clock_irqtime().
 336
 337config HAVE_ARCH_TRANSPARENT_HUGEPAGE
 338        bool
 339
 340config HAVE_MOD_ARCH_SPECIFIC
 341        bool
 342        help
 343          The arch uses struct mod_arch_specific to store data.  Many arches
 344          just need a simple module loader without arch specific data - those
 345          should not enable this.
 346
 347config MODULES_USE_ELF_RELA
 348        bool
 349        help
 350          Modules only use ELF RELA relocations.  Modules with ELF REL
 351          relocations will give an error.
 352
 353config MODULES_USE_ELF_REL
 354        bool
 355        help
 356          Modules only use ELF REL relocations.  Modules with ELF RELA
 357          relocations will give an error.
 358
 359config GENERIC_SIGALTSTACK
 360        bool
 361
 362#
 363# ABI hall of shame
 364#
 365config CLONE_BACKWARDS
 366        bool
 367        help
 368          Architecture has tls passed as the 4th argument of clone(2),
 369          not the 5th one.
 370
 371config CLONE_BACKWARDS2
 372        bool
 373        help
 374          Architecture has the first two arguments of clone(2) swapped.
 375
 376source "kernel/gcov/Kconfig"
 377
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.