linux/arch/Kconfig
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0
   2#
   3# General architecture dependent options
   4#
   5
   6#
   7# Note: arch/$(SRCARCH)/Kconfig needs to be included first so that it can
   8# override the default values in this file.
   9#
  10source "arch/$(SRCARCH)/Kconfig"
  11
  12menu "General architecture-dependent options"
  13
  14config CRASH_CORE
  15        bool
  16
  17config KEXEC_CORE
  18        select CRASH_CORE
  19        bool
  20
  21config HAVE_IMA_KEXEC
  22        bool
  23
  24config HOTPLUG_SMT
  25        bool
  26
  27config OPROFILE
  28        tristate "OProfile system profiling"
  29        depends on PROFILING
  30        depends on HAVE_OPROFILE
  31        select RING_BUFFER
  32        select RING_BUFFER_ALLOW_SWAP
  33        help
  34          OProfile is a profiling system capable of profiling the
  35          whole system, include the kernel, kernel modules, libraries,
  36          and applications.
  37
  38          If unsure, say N.
  39
  40config OPROFILE_EVENT_MULTIPLEX
  41        bool "OProfile multiplexing support (EXPERIMENTAL)"
  42        default n
  43        depends on OPROFILE && X86
  44        help
  45          The number of hardware counters is limited. The multiplexing
  46          feature enables OProfile to gather more events than counters
  47          are provided by the hardware. This is realized by switching
  48          between events at a user specified time interval.
  49
  50          If unsure, say N.
  51
  52config HAVE_OPROFILE
  53        bool
  54
  55config OPROFILE_NMI_TIMER
  56        def_bool y
  57        depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !PPC64
  58
  59config KPROBES
  60        bool "Kprobes"
  61        depends on MODULES
  62        depends on HAVE_KPROBES
  63        select KALLSYMS
  64        help
  65          Kprobes allows you to trap at almost any kernel address and
  66          execute a callback function.  register_kprobe() establishes
  67          a probepoint and specifies the callback.  Kprobes is useful
  68          for kernel debugging, non-intrusive instrumentation and testing.
  69          If in doubt, say "N".
  70
  71config JUMP_LABEL
  72       bool "Optimize very unlikely/likely branches"
  73       depends on HAVE_ARCH_JUMP_LABEL
  74       depends on CC_HAS_ASM_GOTO
  75       help
  76         This option enables a transparent branch optimization that
  77         makes certain almost-always-true or almost-always-false branch
  78         conditions even cheaper to execute within the kernel.
  79
  80         Certain performance-sensitive kernel code, such as trace points,
  81         scheduler functionality, networking code and KVM have such
  82         branches and include support for this optimization technique.
  83
  84         If it is detected that the compiler has support for "asm goto",
  85         the kernel will compile such branches with just a nop
  86         instruction. When the condition flag is toggled to true, the
  87         nop will be converted to a jump instruction to execute the
  88         conditional block of instructions.
  89
  90         This technique lowers overhead and stress on the branch prediction
  91         of the processor and generally makes the kernel faster. The update
  92         of the condition is slower, but those are always very rare.
  93
  94         ( On 32-bit x86, the necessary options added to the compiler
  95           flags may increase the size of the kernel slightly. )
  96
  97config STATIC_KEYS_SELFTEST
  98        bool "Static key selftest"
  99        depends on JUMP_LABEL
 100        help
 101          Boot time self-test of the branch patching code.
 102
 103config OPTPROBES
 104        def_bool y
 105        depends on KPROBES && HAVE_OPTPROBES
 106        select TASKS_RCU if PREEMPT
 107
 108config KPROBES_ON_FTRACE
 109        def_bool y
 110        depends on KPROBES && HAVE_KPROBES_ON_FTRACE
 111        depends on DYNAMIC_FTRACE_WITH_REGS
 112        help
 113         If function tracer is enabled and the arch supports full
 114         passing of pt_regs to function tracing, then kprobes can
 115         optimize on top of function tracing.
 116
 117config UPROBES
 118        def_bool n
 119        depends on ARCH_SUPPORTS_UPROBES
 120        help
 121          Uprobes is the user-space counterpart to kprobes: they
 122          enable instrumentation applications (such as 'perf probe')
 123          to establish unintrusive probes in user-space binaries and
 124          libraries, by executing handler functions when the probes
 125          are hit by user-space applications.
 126
 127          ( These probes come in the form of single-byte breakpoints,
 128            managed by the kernel and kept transparent to the probed
 129            application. )
 130
 131config HAVE_EFFICIENT_UNALIGNED_ACCESS
 132        bool
 133        help
 134          Some architectures are unable to perform unaligned accesses
 135          without the use of get_unaligned/put_unaligned. Others are
 136          unable to perform such accesses efficiently (e.g. trap on
 137          unaligned access and require fixing it up in the exception
 138          handler.)
 139
 140          This symbol should be selected by an architecture if it can
 141          perform unaligned accesses efficiently to allow different
 142          code paths to be selected for these cases. Some network
 143          drivers, for example, could opt to not fix up alignment
 144          problems with received packets if doing so would not help
 145          much.
 146
 147          See Documentation/unaligned-memory-access.txt for more
 148          information on the topic of unaligned memory accesses.
 149
 150config ARCH_USE_BUILTIN_BSWAP
 151       bool
 152       help
 153         Modern versions of GCC (since 4.4) have builtin functions
 154         for handling byte-swapping. Using these, instead of the old
 155         inline assembler that the architecture code provides in the
 156         __arch_bswapXX() macros, allows the compiler to see what's
 157         happening and offers more opportunity for optimisation. In
 158         particular, the compiler will be able to combine the byteswap
 159         with a nearby load or store and use load-and-swap or
 160         store-and-swap instructions if the architecture has them. It
 161         should almost *never* result in code which is worse than the
 162         hand-coded assembler in <asm/swab.h>.  But just in case it
 163         does, the use of the builtins is optional.
 164
 165         Any architecture with load-and-swap or store-and-swap
 166         instructions should set this. And it shouldn't hurt to set it
 167         on architectures that don't have such instructions.
 168
 169config KRETPROBES
 170        def_bool y
 171        depends on KPROBES && HAVE_KRETPROBES
 172
 173config USER_RETURN_NOTIFIER
 174        bool
 175        depends on HAVE_USER_RETURN_NOTIFIER
 176        help
 177          Provide a kernel-internal notification when a cpu is about to
 178          switch to user mode.
 179
 180config HAVE_IOREMAP_PROT
 181        bool
 182
 183config HAVE_KPROBES
 184        bool
 185
 186config HAVE_KRETPROBES
 187        bool
 188
 189config HAVE_OPTPROBES
 190        bool
 191
 192config HAVE_KPROBES_ON_FTRACE
 193        bool
 194
 195config HAVE_FUNCTION_ERROR_INJECTION
 196        bool
 197
 198config HAVE_NMI
 199        bool
 200
 201#
 202# An arch should select this if it provides all these things:
 203#
 204#       task_pt_regs()          in asm/processor.h or asm/ptrace.h
 205#       arch_has_single_step()  if there is hardware single-step support
 206#       arch_has_block_step()   if there is hardware block-step support
 207#       asm/syscall.h           supplying asm-generic/syscall.h interface
 208#       linux/regset.h          user_regset interfaces
 209#       CORE_DUMP_USE_REGSET    #define'd in linux/elf.h
 210#       TIF_SYSCALL_TRACE       calls tracehook_report_syscall_{entry,exit}
 211#       TIF_NOTIFY_RESUME       calls tracehook_notify_resume()
 212#       signal delivery         calls tracehook_signal_handler()
 213#
 214config HAVE_ARCH_TRACEHOOK
 215        bool
 216
 217config HAVE_DMA_CONTIGUOUS
 218        bool
 219
 220config GENERIC_SMP_IDLE_THREAD
 221       bool
 222
 223config GENERIC_IDLE_POLL_SETUP
 224       bool
 225
 226config ARCH_HAS_FORTIFY_SOURCE
 227        bool
 228        help
 229          An architecture should select this when it can successfully
 230          build and run with CONFIG_FORTIFY_SOURCE.
 231
 232#
 233# Select if the arch provides a historic keepinit alias for the retain_initrd
 234# command line option
 235#
 236config ARCH_HAS_KEEPINITRD
 237        bool
 238
 239# Select if arch has all set_memory_ro/rw/x/nx() functions in asm/cacheflush.h
 240config ARCH_HAS_SET_MEMORY
 241        bool
 242
 243# Select if arch has all set_direct_map_invalid/default() functions
 244config ARCH_HAS_SET_DIRECT_MAP
 245        bool
 246
 247#
 248# Select if arch has an uncached kernel segment and provides the
 249# uncached_kernel_address / cached_kernel_address symbols to use it
 250#
 251config ARCH_HAS_UNCACHED_SEGMENT
 252        select ARCH_HAS_DMA_PREP_COHERENT
 253        bool
 254
 255# Select if arch init_task must go in the __init_task_data section
 256config ARCH_TASK_STRUCT_ON_STACK
 257       bool
 258
 259# Select if arch has its private alloc_task_struct() function
 260config ARCH_TASK_STRUCT_ALLOCATOR
 261        bool
 262
 263config HAVE_ARCH_THREAD_STRUCT_WHITELIST
 264        bool
 265        depends on !ARCH_TASK_STRUCT_ALLOCATOR
 266        help
 267          An architecture should select this to provide hardened usercopy
 268          knowledge about what region of the thread_struct should be
 269          whitelisted for copying to userspace. Normally this is only the
 270          FPU registers. Specifically, arch_thread_struct_whitelist()
 271          should be implemented. Without this, the entire thread_struct
 272          field in task_struct will be left whitelisted.
 273
 274# Select if arch has its private alloc_thread_stack() function
 275config ARCH_THREAD_STACK_ALLOCATOR
 276        bool
 277
 278# Select if arch wants to size task_struct dynamically via arch_task_struct_size:
 279config ARCH_WANTS_DYNAMIC_TASK_STRUCT
 280        bool
 281
 282config ARCH_32BIT_OFF_T
 283        bool
 284        depends on !64BIT
 285        help
 286          All new 32-bit architectures should have 64-bit off_t type on
 287          userspace side which corresponds to the loff_t kernel type. This
 288          is the requirement for modern ABIs. Some existing architectures
 289          still support 32-bit off_t. This option is enabled for all such
 290          architectures explicitly.
 291
 292config HAVE_REGS_AND_STACK_ACCESS_API
 293        bool
 294        help
 295          This symbol should be selected by an architecure if it supports
 296          the API needed to access registers and stack entries from pt_regs,
 297          declared in asm/ptrace.h
 298          For example the kprobes-based event tracer needs this API.
 299
 300config HAVE_RSEQ
 301        bool
 302        depends on HAVE_REGS_AND_STACK_ACCESS_API
 303        help
 304          This symbol should be selected by an architecture if it
 305          supports an implementation of restartable sequences.
 306
 307config HAVE_FUNCTION_ARG_ACCESS_API
 308        bool
 309        help
 310          This symbol should be selected by an architecure if it supports
 311          the API needed to access function arguments from pt_regs,
 312          declared in asm/ptrace.h
 313
 314config HAVE_CLK
 315        bool
 316        help
 317          The <linux/clk.h> calls support software clock gating and
 318          thus are a key power management tool on many systems.
 319
 320config HAVE_HW_BREAKPOINT
 321        bool
 322        depends on PERF_EVENTS
 323
 324config HAVE_MIXED_BREAKPOINTS_REGS
 325        bool
 326        depends on HAVE_HW_BREAKPOINT
 327        help
 328          Depending on the arch implementation of hardware breakpoints,
 329          some of them have separate registers for data and instruction
 330          breakpoints addresses, others have mixed registers to store
 331          them but define the access type in a control register.
 332          Select this option if your arch implements breakpoints under the
 333          latter fashion.
 334
 335config HAVE_USER_RETURN_NOTIFIER
 336        bool
 337
 338config HAVE_PERF_EVENTS_NMI
 339        bool
 340        help
 341          System hardware can generate an NMI using the perf event
 342          subsystem.  Also has support for calculating CPU cycle events
 343          to determine how many clock cycles in a given period.
 344
 345config HAVE_HARDLOCKUP_DETECTOR_PERF
 346        bool
 347        depends on HAVE_PERF_EVENTS_NMI
 348        help
 349          The arch chooses to use the generic perf-NMI-based hardlockup
 350          detector. Must define HAVE_PERF_EVENTS_NMI.
 351
 352config HAVE_NMI_WATCHDOG
 353        depends on HAVE_NMI
 354        bool
 355        help
 356          The arch provides a low level NMI watchdog. It provides
 357          asm/nmi.h, and defines its own arch_touch_nmi_watchdog().
 358
 359config HAVE_HARDLOCKUP_DETECTOR_ARCH
 360        bool
 361        select HAVE_NMI_WATCHDOG
 362        help
 363          The arch chooses to provide its own hardlockup detector, which is
 364          a superset of the HAVE_NMI_WATCHDOG. It also conforms to config
 365          interfaces and parameters provided by hardlockup detector subsystem.
 366
 367config HAVE_PERF_REGS
 368        bool
 369        help
 370          Support selective register dumps for perf events. This includes
 371          bit-mapping of each registers and a unique architecture id.
 372
 373config HAVE_PERF_USER_STACK_DUMP
 374        bool
 375        help
 376          Support user stack dumps for perf event samples. This needs
 377          access to the user stack pointer which is not unified across
 378          architectures.
 379
 380config HAVE_ARCH_JUMP_LABEL
 381        bool
 382
 383config HAVE_ARCH_JUMP_LABEL_RELATIVE
 384        bool
 385
 386config HAVE_RCU_TABLE_FREE
 387        bool
 388
 389config HAVE_RCU_TABLE_NO_INVALIDATE
 390        bool
 391
 392config HAVE_MMU_GATHER_PAGE_SIZE
 393        bool
 394
 395config HAVE_MMU_GATHER_NO_GATHER
 396        bool
 397
 398config ARCH_HAVE_NMI_SAFE_CMPXCHG
 399        bool
 400
 401config HAVE_ALIGNED_STRUCT_PAGE
 402        bool
 403        help
 404          This makes sure that struct pages are double word aligned and that
 405          e.g. the SLUB allocator can perform double word atomic operations
 406          on a struct page for better performance. However selecting this
 407          might increase the size of a struct page by a word.
 408
 409config HAVE_CMPXCHG_LOCAL
 410        bool
 411
 412config HAVE_CMPXCHG_DOUBLE
 413        bool
 414
 415config ARCH_WEAK_RELEASE_ACQUIRE
 416        bool
 417
 418config ARCH_WANT_IPC_PARSE_VERSION
 419        bool
 420
 421config ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 422        bool
 423
 424config ARCH_WANT_OLD_COMPAT_IPC
 425        select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 426        bool
 427
 428config HAVE_ARCH_SECCOMP_FILTER
 429        bool
 430        help
 431          An arch should select this symbol if it provides all of these things:
 432          - syscall_get_arch()
 433          - syscall_get_arguments()
 434          - syscall_rollback()
 435          - syscall_set_return_value()
 436          - SIGSYS siginfo_t support
 437          - secure_computing is called from a ptrace_event()-safe context
 438          - secure_computing return value is checked and a return value of -1
 439            results in the system call being skipped immediately.
 440          - seccomp syscall wired up
 441
 442config SECCOMP_FILTER
 443        def_bool y
 444        depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
 445        help
 446          Enable tasks to build secure computing environments defined
 447          in terms of Berkeley Packet Filter programs which implement
 448          task-defined system call filtering polices.
 449
 450          See Documentation/userspace-api/seccomp_filter.rst for details.
 451
 452config HAVE_ARCH_STACKLEAK
 453        bool
 454        help
 455          An architecture should select this if it has the code which
 456          fills the used part of the kernel stack with the STACKLEAK_POISON
 457          value before returning from system calls.
 458
 459config HAVE_STACKPROTECTOR
 460        bool
 461        help
 462          An arch should select this symbol if:
 463          - it has implemented a stack canary (e.g. __stack_chk_guard)
 464
 465config CC_HAS_STACKPROTECTOR_NONE
 466        def_bool $(cc-option,-fno-stack-protector)
 467
 468config STACKPROTECTOR
 469        bool "Stack Protector buffer overflow detection"
 470        depends on HAVE_STACKPROTECTOR
 471        depends on $(cc-option,-fstack-protector)
 472        default y
 473        help
 474          This option turns on the "stack-protector" GCC feature. This
 475          feature puts, at the beginning of functions, a canary value on
 476          the stack just before the return address, and validates
 477          the value just before actually returning.  Stack based buffer
 478          overflows (that need to overwrite this return address) now also
 479          overwrite the canary, which gets detected and the attack is then
 480          neutralized via a kernel panic.
 481
 482          Functions will have the stack-protector canary logic added if they
 483          have an 8-byte or larger character array on the stack.
 484
 485          This feature requires gcc version 4.2 or above, or a distribution
 486          gcc with the feature backported ("-fstack-protector").
 487
 488          On an x86 "defconfig" build, this feature adds canary checks to
 489          about 3% of all kernel functions, which increases kernel code size
 490          by about 0.3%.
 491
 492config STACKPROTECTOR_STRONG
 493        bool "Strong Stack Protector"
 494        depends on STACKPROTECTOR
 495        depends on $(cc-option,-fstack-protector-strong)
 496        default y
 497        help
 498          Functions will have the stack-protector canary logic added in any
 499          of the following conditions:
 500
 501          - local variable's address used as part of the right hand side of an
 502            assignment or function argument
 503          - local variable is an array (or union containing an array),
 504            regardless of array type or length
 505          - uses register local variables
 506
 507          This feature requires gcc version 4.9 or above, or a distribution
 508          gcc with the feature backported ("-fstack-protector-strong").
 509
 510          On an x86 "defconfig" build, this feature adds canary checks to
 511          about 20% of all kernel functions, which increases the kernel code
 512          size by about 2%.
 513
 514config HAVE_ARCH_WITHIN_STACK_FRAMES
 515        bool
 516        help
 517          An architecture should select this if it can walk the kernel stack
 518          frames to determine if an object is part of either the arguments
 519          or local variables (i.e. that it excludes saved return addresses,
 520          and similar) by implementing an inline arch_within_stack_frames(),
 521          which is used by CONFIG_HARDENED_USERCOPY.
 522
 523config HAVE_CONTEXT_TRACKING
 524        bool
 525        help
 526          Provide kernel/user boundaries probes necessary for subsystems
 527          that need it, such as userspace RCU extended quiescent state.
 528          Syscalls need to be wrapped inside user_exit()-user_enter() through
 529          the slow path using TIF_NOHZ flag. Exceptions handlers must be
 530          wrapped as well. Irqs are already protected inside
 531          rcu_irq_enter/rcu_irq_exit() but preemption or signal handling on
 532          irq exit still need to be protected.
 533
 534config HAVE_VIRT_CPU_ACCOUNTING
 535        bool
 536
 537config ARCH_HAS_SCALED_CPUTIME
 538        bool
 539
 540config HAVE_VIRT_CPU_ACCOUNTING_GEN
 541        bool
 542        default y if 64BIT
 543        help
 544          With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit.
 545          Before enabling this option, arch code must be audited
 546          to ensure there are no races in concurrent read/write of
 547          cputime_t. For example, reading/writing 64-bit cputime_t on
 548          some 32-bit arches may require multiple accesses, so proper
 549          locking is needed to protect against concurrent accesses.
 550
 551
 552config HAVE_IRQ_TIME_ACCOUNTING
 553        bool
 554        help
 555          Archs need to ensure they use a high enough resolution clock to
 556          support irq time accounting and then call enable_sched_clock_irqtime().
 557
 558config HAVE_MOVE_PMD
 559        bool
 560        help
 561          Archs that select this are able to move page tables at the PMD level.
 562
 563config HAVE_ARCH_TRANSPARENT_HUGEPAGE
 564        bool
 565
 566config HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
 567        bool
 568
 569config HAVE_ARCH_HUGE_VMAP
 570        bool
 571
 572config ARCH_WANT_HUGE_PMD_SHARE
 573        bool
 574
 575config HAVE_ARCH_SOFT_DIRTY
 576        bool
 577
 578config HAVE_MOD_ARCH_SPECIFIC
 579        bool
 580        help
 581          The arch uses struct mod_arch_specific to store data.  Many arches
 582          just need a simple module loader without arch specific data - those
 583          should not enable this.
 584
 585config MODULES_USE_ELF_RELA
 586        bool
 587        help
 588          Modules only use ELF RELA relocations.  Modules with ELF REL
 589          relocations will give an error.
 590
 591config MODULES_USE_ELF_REL
 592        bool
 593        help
 594          Modules only use ELF REL relocations.  Modules with ELF RELA
 595          relocations will give an error.
 596
 597config HAVE_IRQ_EXIT_ON_IRQ_STACK
 598        bool
 599        help
 600          Architecture doesn't only execute the irq handler on the irq stack
 601          but also irq_exit(). This way we can process softirqs on this irq
 602          stack instead of switching to a new one when we call __do_softirq()
 603          in the end of an hardirq.
 604          This spares a stack switch and improves cache usage on softirq
 605          processing.
 606
 607config PGTABLE_LEVELS
 608        int
 609        default 2
 610
 611config ARCH_HAS_ELF_RANDOMIZE
 612        bool
 613        help
 614          An architecture supports choosing randomized locations for
 615          stack, mmap, brk, and ET_DYN. Defined functions:
 616          - arch_mmap_rnd()
 617          - arch_randomize_brk()
 618
 619config HAVE_ARCH_MMAP_RND_BITS
 620        bool
 621        help
 622          An arch should select this symbol if it supports setting a variable
 623          number of bits for use in establishing the base address for mmap
 624          allocations, has MMU enabled and provides values for both:
 625          - ARCH_MMAP_RND_BITS_MIN
 626          - ARCH_MMAP_RND_BITS_MAX
 627
 628config HAVE_EXIT_THREAD
 629        bool
 630        help
 631          An architecture implements exit_thread.
 632
 633config ARCH_MMAP_RND_BITS_MIN
 634        int
 635
 636config ARCH_MMAP_RND_BITS_MAX
 637        int
 638
 639config ARCH_MMAP_RND_BITS_DEFAULT
 640        int
 641
 642config ARCH_MMAP_RND_BITS
 643        int "Number of bits to use for ASLR of mmap base address" if EXPERT
 644        range ARCH_MMAP_RND_BITS_MIN ARCH_MMAP_RND_BITS_MAX
 645        default ARCH_MMAP_RND_BITS_DEFAULT if ARCH_MMAP_RND_BITS_DEFAULT
 646        default ARCH_MMAP_RND_BITS_MIN
 647        depends on HAVE_ARCH_MMAP_RND_BITS
 648        help
 649          This value can be used to select the number of bits to use to
 650          determine the random offset to the base address of vma regions
 651          resulting from mmap allocations. This value will be bounded
 652          by the architecture's minimum and maximum supported values.
 653
 654          This value can be changed after boot using the
 655          /proc/sys/vm/mmap_rnd_bits tunable
 656
 657config HAVE_ARCH_MMAP_RND_COMPAT_BITS
 658        bool
 659        help
 660          An arch should select this symbol if it supports running applications
 661          in compatibility mode, supports setting a variable number of bits for
 662          use in establishing the base address for mmap allocations, has MMU
 663          enabled and provides values for both:
 664          - ARCH_MMAP_RND_COMPAT_BITS_MIN
 665          - ARCH_MMAP_RND_COMPAT_BITS_MAX
 666
 667config ARCH_MMAP_RND_COMPAT_BITS_MIN
 668        int
 669
 670config ARCH_MMAP_RND_COMPAT_BITS_MAX
 671        int
 672
 673config ARCH_MMAP_RND_COMPAT_BITS_DEFAULT
 674        int
 675
 676config ARCH_MMAP_RND_COMPAT_BITS
 677        int "Number of bits to use for ASLR of mmap base address for compatible applications" if EXPERT
 678        range ARCH_MMAP_RND_COMPAT_BITS_MIN ARCH_MMAP_RND_COMPAT_BITS_MAX
 679        default ARCH_MMAP_RND_COMPAT_BITS_DEFAULT if ARCH_MMAP_RND_COMPAT_BITS_DEFAULT
 680        default ARCH_MMAP_RND_COMPAT_BITS_MIN
 681        depends on HAVE_ARCH_MMAP_RND_COMPAT_BITS
 682        help
 683          This value can be used to select the number of bits to use to
 684          determine the random offset to the base address of vma regions
 685          resulting from mmap allocations for compatible applications This
 686          value will be bounded by the architecture's minimum and maximum
 687          supported values.
 688
 689          This value can be changed after boot using the
 690          /proc/sys/vm/mmap_rnd_compat_bits tunable
 691
 692config HAVE_ARCH_COMPAT_MMAP_BASES
 693        bool
 694        help
 695          This allows 64bit applications to invoke 32-bit mmap() syscall
 696          and vice-versa 32-bit applications to call 64-bit mmap().
 697          Required for applications doing different bitness syscalls.
 698
 699config HAVE_COPY_THREAD_TLS
 700        bool
 701        help
 702          Architecture provides copy_thread_tls to accept tls argument via
 703          normal C parameter passing, rather than extracting the syscall
 704          argument from pt_regs.
 705
 706config HAVE_STACK_VALIDATION
 707        bool
 708        help
 709          Architecture supports the 'objtool check' host tool command, which
 710          performs compile-time stack metadata validation.
 711
 712config HAVE_RELIABLE_STACKTRACE
 713        bool
 714        help
 715          Architecture has a save_stack_trace_tsk_reliable() function which
 716          only returns a stack trace if it can guarantee the trace is reliable.
 717
 718config HAVE_ARCH_HASH
 719        bool
 720        default n
 721        help
 722          If this is set, the architecture provides an <asm/hash.h>
 723          file which provides platform-specific implementations of some
 724          functions in <linux/hash.h> or fs/namei.c.
 725
 726config HAVE_ARCH_NVRAM_OPS
 727        bool
 728
 729config ISA_BUS_API
 730        def_bool ISA
 731
 732#
 733# ABI hall of shame
 734#
 735config CLONE_BACKWARDS
 736        bool
 737        help
 738          Architecture has tls passed as the 4th argument of clone(2),
 739          not the 5th one.
 740
 741config CLONE_BACKWARDS2
 742        bool
 743        help
 744          Architecture has the first two arguments of clone(2) swapped.
 745
 746config CLONE_BACKWARDS3
 747        bool
 748        help
 749          Architecture has tls passed as the 3rd argument of clone(2),
 750          not the 5th one.
 751
 752config ODD_RT_SIGACTION
 753        bool
 754        help
 755          Architecture has unusual rt_sigaction(2) arguments
 756
 757config OLD_SIGSUSPEND
 758        bool
 759        help
 760          Architecture has old sigsuspend(2) syscall, of one-argument variety
 761
 762config OLD_SIGSUSPEND3
 763        bool
 764        help
 765          Even weirder antique ABI - three-argument sigsuspend(2)
 766
 767config OLD_SIGACTION
 768        bool
 769        help
 770          Architecture has old sigaction(2) syscall.  Nope, not the same
 771          as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
 772          but fairly different variant of sigaction(2), thanks to OSF/1
 773          compatibility...
 774
 775config COMPAT_OLD_SIGACTION
 776        bool
 777
 778config 64BIT_TIME
 779        def_bool y
 780        help
 781          This should be selected by all architectures that need to support
 782          new system calls with a 64-bit time_t. This is relevant on all 32-bit
 783          architectures, and 64-bit architectures as part of compat syscall
 784          handling.
 785
 786config COMPAT_32BIT_TIME
 787        def_bool !64BIT || COMPAT
 788        help
 789          This enables 32 bit time_t support in addition to 64 bit time_t support.
 790          This is relevant on all 32-bit architectures, and 64-bit architectures
 791          as part of compat syscall handling.
 792
 793config ARCH_NO_COHERENT_DMA_MMAP
 794        bool
 795
 796config ARCH_NO_PREEMPT
 797        bool
 798
 799config ARCH_SUPPORTS_RT
 800        bool
 801
 802config CPU_NO_EFFICIENT_FFS
 803        def_bool n
 804
 805config HAVE_ARCH_VMAP_STACK
 806        def_bool n
 807        help
 808          An arch should select this symbol if it can support kernel stacks
 809          in vmalloc space.  This means:
 810
 811          - vmalloc space must be large enough to hold many kernel stacks.
 812            This may rule out many 32-bit architectures.
 813
 814          - Stacks in vmalloc space need to work reliably.  For example, if
 815            vmap page tables are created on demand, either this mechanism
 816            needs to work while the stack points to a virtual address with
 817            unpopulated page tables or arch code (switch_to() and switch_mm(),
 818            most likely) needs to ensure that the stack's page table entries
 819            are populated before running on a possibly unpopulated stack.
 820
 821          - If the stack overflows into a guard page, something reasonable
 822            should happen.  The definition of "reasonable" is flexible, but
 823            instantly rebooting without logging anything would be unfriendly.
 824
 825config VMAP_STACK
 826        default y
 827        bool "Use a virtually-mapped stack"
 828        depends on HAVE_ARCH_VMAP_STACK && !KASAN
 829        ---help---
 830          Enable this if you want the use virtually-mapped kernel stacks
 831          with guard pages.  This causes kernel stack overflows to be
 832          caught immediately rather than causing difficult-to-diagnose
 833          corruption.
 834
 835          This is presently incompatible with KASAN because KASAN expects
 836          the stack to map directly to the KASAN shadow map using a formula
 837          that is incorrect if the stack is in vmalloc space.
 838
 839config ARCH_OPTIONAL_KERNEL_RWX
 840        def_bool n
 841
 842config ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
 843        def_bool n
 844
 845config ARCH_HAS_STRICT_KERNEL_RWX
 846        def_bool n
 847
 848config STRICT_KERNEL_RWX
 849        bool "Make kernel text and rodata read-only" if ARCH_OPTIONAL_KERNEL_RWX
 850        depends on ARCH_HAS_STRICT_KERNEL_RWX
 851        default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
 852        help
 853          If this is set, kernel text and rodata memory will be made read-only,
 854          and non-text memory will be made non-executable. This provides
 855          protection against certain security exploits (e.g. executing the heap
 856          or modifying text)
 857
 858          These features are considered standard security practice these days.
 859          You should say Y here in almost all cases.
 860
 861config ARCH_HAS_STRICT_MODULE_RWX
 862        def_bool n
 863
 864config STRICT_MODULE_RWX
 865        bool "Set loadable kernel module data as NX and text as RO" if ARCH_OPTIONAL_KERNEL_RWX
 866        depends on ARCH_HAS_STRICT_MODULE_RWX && MODULES
 867        default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
 868        help
 869          If this is set, module text and rodata memory will be made read-only,
 870          and non-text memory will be made non-executable. This provides
 871          protection against certain security exploits (e.g. writing to text)
 872
 873# select if the architecture provides an asm/dma-direct.h header
 874config ARCH_HAS_PHYS_TO_DMA
 875        bool
 876
 877config ARCH_HAS_REFCOUNT
 878        bool
 879        help
 880          An architecture selects this when it has implemented refcount_t
 881          using open coded assembly primitives that provide an optimized
 882          refcount_t implementation, possibly at the expense of some full
 883          refcount state checks of CONFIG_REFCOUNT_FULL=y.
 884
 885          The refcount overflow check behavior, however, must be retained.
 886          Catching overflows is the primary security concern for protecting
 887          against bugs in reference counts.
 888
 889config REFCOUNT_FULL
 890        bool "Perform full reference count validation at the expense of speed"
 891        help
 892          Enabling this switches the refcounting infrastructure from a fast
 893          unchecked atomic_t implementation to a fully state checked
 894          implementation, which can be (slightly) slower but provides protections
 895          against various use-after-free conditions that can be used in
 896          security flaw exploits.
 897
 898config HAVE_ARCH_COMPILER_H
 899        bool
 900        help
 901          An architecture can select this if it provides an
 902          asm/compiler.h header that should be included after
 903          linux/compiler-*.h in order to override macro definitions that those
 904          headers generally provide.
 905
 906config HAVE_ARCH_PREL32_RELOCATIONS
 907        bool
 908        help
 909          May be selected by an architecture if it supports place-relative
 910          32-bit relocations, both in the toolchain and in the module loader,
 911          in which case relative references can be used in special sections
 912          for PCI fixup, initcalls etc which are only half the size on 64 bit
 913          architectures, and don't require runtime relocation on relocatable
 914          kernels.
 915
 916config ARCH_USE_MEMREMAP_PROT
 917        bool
 918
 919config LOCK_EVENT_COUNTS
 920        bool "Locking event counts collection"
 921        depends on DEBUG_FS
 922        ---help---
 923          Enable light-weight counting of various locking related events
 924          in the system with minimal performance impact. This reduces
 925          the chance of application behavior change because of timing
 926          differences. The counts are reported via debugfs.
 927
 928source "kernel/gcov/Kconfig"
 929
 930source "scripts/gcc-plugins/Kconfig"
 931
 932endmenu
 933