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 GENERIC_SMP_IDLE_THREAD
 211       bool
 212
 213config GENERIC_IDLE_POLL_SETUP
 214       bool
 215
 216# Select if arch init_task initializer is different to init/init_task.c
 217config ARCH_INIT_TASK
 218       bool
 219
 220# Select if arch has its private alloc_task_struct() function
 221config ARCH_TASK_STRUCT_ALLOCATOR
 222        bool
 223
 224# Select if arch has its private alloc_thread_info() function
 225config ARCH_THREAD_INFO_ALLOCATOR
 226        bool
 227
 228config HAVE_REGS_AND_STACK_ACCESS_API
 229        bool
 230        help
 231          This symbol should be selected by an architecure if it supports
 232          the API needed to access registers and stack entries from pt_regs,
 233          declared in asm/ptrace.h
 234          For example the kprobes-based event tracer needs this API.
 235
 236config HAVE_CLK
 237        bool
 238        help
 239          The <linux/clk.h> calls support software clock gating and
 240          thus are a key power management tool on many systems.
 241
 242config HAVE_DMA_API_DEBUG
 243        bool
 244
 245config HAVE_HW_BREAKPOINT
 246        bool
 247        depends on PERF_EVENTS
 248
 249config HAVE_MIXED_BREAKPOINTS_REGS
 250        bool
 251        depends on HAVE_HW_BREAKPOINT
 252        help
 253          Depending on the arch implementation of hardware breakpoints,
 254          some of them have separate registers for data and instruction
 255          breakpoints addresses, others have mixed registers to store
 256          them but define the access type in a control register.
 257          Select this option if your arch implements breakpoints under the
 258          latter fashion.
 259
 260config HAVE_USER_RETURN_NOTIFIER
 261        bool
 262
 263config HAVE_PERF_EVENTS_NMI
 264        bool
 265        help
 266          System hardware can generate an NMI using the perf event
 267          subsystem.  Also has support for calculating CPU cycle events
 268          to determine how many clock cycles in a given period.
 269
 270config HAVE_PERF_REGS
 271        bool
 272        help
 273          Support selective register dumps for perf events. This includes
 274          bit-mapping of each registers and a unique architecture id.
 275
 276config HAVE_PERF_USER_STACK_DUMP
 277        bool
 278        help
 279          Support user stack dumps for perf event samples. This needs
 280          access to the user stack pointer which is not unified across
 281          architectures.
 282
 283config HAVE_ARCH_JUMP_LABEL
 284        bool
 285
 286config HAVE_RCU_TABLE_FREE
 287        bool
 288
 289config ARCH_HAVE_NMI_SAFE_CMPXCHG
 290        bool
 291
 292config HAVE_ALIGNED_STRUCT_PAGE
 293        bool
 294        help
 295          This makes sure that struct pages are double word aligned and that
 296          e.g. the SLUB allocator can perform double word atomic operations
 297          on a struct page for better performance. However selecting this
 298          might increase the size of a struct page by a word.
 299
 300config HAVE_CMPXCHG_LOCAL
 301        bool
 302
 303config HAVE_CMPXCHG_DOUBLE
 304        bool
 305
 306config ARCH_WANT_IPC_PARSE_VERSION
 307        bool
 308
 309config ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 310        bool
 311
 312config ARCH_WANT_OLD_COMPAT_IPC
 313        select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 314        bool
 315
 316config HAVE_ARCH_SECCOMP_FILTER
 317        bool
 318        help
 319          An arch should select this symbol if it provides all of these things:
 320          - syscall_get_arch()
 321          - syscall_get_arguments()
 322          - syscall_rollback()
 323          - syscall_set_return_value()
 324          - SIGSYS siginfo_t support
 325          - secure_computing is called from a ptrace_event()-safe context
 326          - secure_computing return value is checked and a return value of -1
 327            results in the system call being skipped immediately.
 328
 329config SECCOMP_FILTER
 330        def_bool y
 331        depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
 332        help
 333          Enable tasks to build secure computing environments defined
 334          in terms of Berkeley Packet Filter programs which implement
 335          task-defined system call filtering polices.
 336
 337          See Documentation/prctl/seccomp_filter.txt for details.
 338
 339config HAVE_CONTEXT_TRACKING
 340        bool
 341        help
 342          Provide kernel/user boundaries probes necessary for subsystems
 343          that need it, such as userspace RCU extended quiescent state.
 344          Syscalls need to be wrapped inside user_exit()-user_enter() through
 345          the slow path using TIF_NOHZ flag. Exceptions handlers must be
 346          wrapped as well. Irqs are already protected inside
 347          rcu_irq_enter/rcu_irq_exit() but preemption or signal handling on
 348          irq exit still need to be protected.
 349
 350config HAVE_VIRT_CPU_ACCOUNTING
 351        bool
 352
 353config HAVE_VIRT_CPU_ACCOUNTING_GEN
 354        bool
 355        default y if 64BIT
 356        help
 357          With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit.
 358          Before enabling this option, arch code must be audited
 359          to ensure there are no races in concurrent read/write of
 360          cputime_t. For example, reading/writing 64-bit cputime_t on
 361          some 32-bit arches may require multiple accesses, so proper
 362          locking is needed to protect against concurrent accesses.
 363
 364
 365config HAVE_IRQ_TIME_ACCOUNTING
 366        bool
 367        help
 368          Archs need to ensure they use a high enough resolution clock to
 369          support irq time accounting and then call enable_sched_clock_irqtime().
 370
 371config HAVE_ARCH_TRANSPARENT_HUGEPAGE
 372        bool
 373
 374config HAVE_ARCH_SOFT_DIRTY
 375        bool
 376
 377config HAVE_MOD_ARCH_SPECIFIC
 378        bool
 379        help
 380          The arch uses struct mod_arch_specific to store data.  Many arches
 381          just need a simple module loader without arch specific data - those
 382          should not enable this.
 383
 384config MODULES_USE_ELF_RELA
 385        bool
 386        help
 387          Modules only use ELF RELA relocations.  Modules with ELF REL
 388          relocations will give an error.
 389
 390config MODULES_USE_ELF_REL
 391        bool
 392        help
 393          Modules only use ELF REL relocations.  Modules with ELF RELA
 394          relocations will give an error.
 395
 396config HAVE_UNDERSCORE_SYMBOL_PREFIX
 397        bool
 398        help
 399          Some architectures generate an _ in front of C symbols; things like
 400          module loading and assembly files need to know about this.
 401
 402config HAVE_IRQ_EXIT_ON_IRQ_STACK
 403        bool
 404        help
 405          Architecture doesn't only execute the irq handler on the irq stack
 406          but also irq_exit(). This way we can process softirqs on this irq
 407          stack instead of switching to a new one when we call __do_softirq()
 408          in the end of an hardirq.
 409          This spares a stack switch and improves cache usage on softirq
 410          processing.
 411
 412#
 413# ABI hall of shame
 414#
 415config CLONE_BACKWARDS
 416        bool
 417        help
 418          Architecture has tls passed as the 4th argument of clone(2),
 419          not the 5th one.
 420
 421config CLONE_BACKWARDS2
 422        bool
 423        help
 424          Architecture has the first two arguments of clone(2) swapped.
 425
 426config CLONE_BACKWARDS3
 427        bool
 428        help
 429          Architecture has tls passed as the 3rd argument of clone(2),
 430          not the 5th one.
 431
 432config ODD_RT_SIGACTION
 433        bool
 434        help
 435          Architecture has unusual rt_sigaction(2) arguments
 436
 437config OLD_SIGSUSPEND
 438        bool
 439        help
 440          Architecture has old sigsuspend(2) syscall, of one-argument variety
 441
 442config OLD_SIGSUSPEND3
 443        bool
 444        help
 445          Even weirder antique ABI - three-argument sigsuspend(2)
 446
 447config OLD_SIGACTION
 448        bool
 449        help
 450          Architecture has old sigaction(2) syscall.  Nope, not the same
 451          as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
 452          but fairly different variant of sigaction(2), thanks to OSF/1
 453          compatibility...
 454
 455config COMPAT_OLD_SIGACTION
 456        bool
 457
 458source "kernel/gcov/Kconfig"
 459
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.