linux/arch/x86/Kconfig
<<
>>
Prefs
   1# Select 32 or 64 bit
   2config 64BIT
   3        bool "64-bit kernel" if ARCH = "x86"
   4        default ARCH != "i386"
   5        ---help---
   6          Say yes to build a 64-bit kernel - formerly known as x86_64
   7          Say no to build a 32-bit kernel - formerly known as i386
   8
   9config X86_32
  10        def_bool y
  11        depends on !64BIT
  12
  13config X86_64
  14        def_bool y
  15        depends on 64BIT
  16
  17### Arch settings
  18config X86
  19        def_bool y
  20        select ACPI_LEGACY_TABLES_LOOKUP        if ACPI
  21        select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
  22        select ANON_INODES
  23        select ARCH_CLOCKSOURCE_DATA
  24        select ARCH_DISCARD_MEMBLOCK
  25        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
  26        select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
  27        select ARCH_HAS_DEVMEM_IS_ALLOWED
  28        select ARCH_HAS_ELF_RANDOMIZE
  29        select ARCH_HAS_FAST_MULTIPLIER
  30        select ARCH_HAS_GCOV_PROFILE_ALL
  31        select ARCH_HAS_KCOV                    if X86_64
  32        select ARCH_HAS_PMEM_API                if X86_64
  33        select ARCH_HAS_MMIO_FLUSH
  34        select ARCH_HAS_SG_CHAIN
  35        select ARCH_HAS_UBSAN_SANITIZE_ALL
  36        select ARCH_HAVE_NMI_SAFE_CMPXCHG
  37        select ARCH_MIGHT_HAVE_ACPI_PDC         if ACPI
  38        select ARCH_MIGHT_HAVE_PC_PARPORT
  39        select ARCH_MIGHT_HAVE_PC_SERIO
  40        select ARCH_SUPPORTS_ATOMIC_RMW
  41        select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
  42        select ARCH_SUPPORTS_INT128             if X86_64
  43        select ARCH_SUPPORTS_NUMA_BALANCING     if X86_64
  44        select ARCH_USE_BUILTIN_BSWAP
  45        select ARCH_USE_CMPXCHG_LOCKREF         if X86_64
  46        select ARCH_USE_QUEUED_RWLOCKS
  47        select ARCH_USE_QUEUED_SPINLOCKS
  48        select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH if SMP
  49        select ARCH_WANTS_DYNAMIC_TASK_STRUCT
  50        select ARCH_WANT_FRAME_POINTERS
  51        select ARCH_WANT_IPC_PARSE_VERSION      if X86_32
  52        select ARCH_WANT_OPTIONAL_GPIOLIB
  53        select BUILDTIME_EXTABLE_SORT
  54        select CLKEVT_I8253
  55        select CLKSRC_I8253                     if X86_32
  56        select CLOCKSOURCE_VALIDATE_LAST_CYCLE
  57        select CLOCKSOURCE_WATCHDOG
  58        select CLONE_BACKWARDS                  if X86_32
  59        select COMPAT_OLD_SIGACTION             if IA32_EMULATION
  60        select DCACHE_WORD_ACCESS
  61        select EDAC_ATOMIC_SCRUB
  62        select EDAC_SUPPORT
  63        select GENERIC_CLOCKEVENTS
  64        select GENERIC_CLOCKEVENTS_BROADCAST    if X86_64 || (X86_32 && X86_LOCAL_APIC)
  65        select GENERIC_CLOCKEVENTS_MIN_ADJUST
  66        select GENERIC_CMOS_UPDATE
  67        select GENERIC_CPU_AUTOPROBE
  68        select GENERIC_EARLY_IOREMAP
  69        select GENERIC_FIND_FIRST_BIT
  70        select GENERIC_IOMAP
  71        select GENERIC_IRQ_PROBE
  72        select GENERIC_IRQ_SHOW
  73        select GENERIC_PENDING_IRQ              if SMP
  74        select GENERIC_SMP_IDLE_THREAD
  75        select GENERIC_STRNCPY_FROM_USER
  76        select GENERIC_STRNLEN_USER
  77        select GENERIC_TIME_VSYSCALL
  78        select HAVE_ACPI_APEI                   if ACPI
  79        select HAVE_ACPI_APEI_NMI               if ACPI
  80        select HAVE_ALIGNED_STRUCT_PAGE         if SLUB
  81        select HAVE_AOUT                        if X86_32
  82        select HAVE_ARCH_AUDITSYSCALL
  83        select HAVE_ARCH_HUGE_VMAP              if X86_64 || X86_PAE
  84        select HAVE_ARCH_JUMP_LABEL
  85        select HAVE_ARCH_KASAN                  if X86_64 && SPARSEMEM_VMEMMAP
  86        select HAVE_ARCH_KGDB
  87        select HAVE_ARCH_KMEMCHECK
  88        select HAVE_ARCH_MMAP_RND_BITS          if MMU
  89        select HAVE_ARCH_MMAP_RND_COMPAT_BITS   if MMU && COMPAT
  90        select HAVE_ARCH_SECCOMP_FILTER
  91        select HAVE_ARCH_SOFT_DIRTY             if X86_64
  92        select HAVE_ARCH_TRACEHOOK
  93        select HAVE_ARCH_TRANSPARENT_HUGEPAGE
  94        select HAVE_BPF_JIT                     if X86_64
  95        select HAVE_CC_STACKPROTECTOR
  96        select HAVE_CMPXCHG_DOUBLE
  97        select HAVE_CMPXCHG_LOCAL
  98        select HAVE_CONTEXT_TRACKING            if X86_64
  99        select HAVE_COPY_THREAD_TLS
 100        select HAVE_C_RECORDMCOUNT
 101        select HAVE_DEBUG_KMEMLEAK
 102        select HAVE_DEBUG_STACKOVERFLOW
 103        select HAVE_DMA_API_DEBUG
 104        select HAVE_DMA_CONTIGUOUS
 105        select HAVE_DYNAMIC_FTRACE
 106        select HAVE_DYNAMIC_FTRACE_WITH_REGS
 107        select HAVE_EFFICIENT_UNALIGNED_ACCESS
 108        select HAVE_FENTRY                      if X86_64
 109        select HAVE_FTRACE_MCOUNT_RECORD
 110        select HAVE_FUNCTION_GRAPH_FP_TEST
 111        select HAVE_FUNCTION_GRAPH_TRACER
 112        select HAVE_FUNCTION_TRACER
 113        select HAVE_GENERIC_DMA_COHERENT        if X86_32
 114        select HAVE_HW_BREAKPOINT
 115        select HAVE_IDE
 116        select HAVE_IOREMAP_PROT
 117        select HAVE_IRQ_EXIT_ON_IRQ_STACK       if X86_64
 118        select HAVE_IRQ_TIME_ACCOUNTING
 119        select HAVE_KERNEL_BZIP2
 120        select HAVE_KERNEL_GZIP
 121        select HAVE_KERNEL_LZ4
 122        select HAVE_KERNEL_LZMA
 123        select HAVE_KERNEL_LZO
 124        select HAVE_KERNEL_XZ
 125        select HAVE_KPROBES
 126        select HAVE_KPROBES_ON_FTRACE
 127        select HAVE_KRETPROBES
 128        select HAVE_KVM
 129        select HAVE_LIVEPATCH                   if X86_64
 130        select HAVE_MEMBLOCK
 131        select HAVE_MEMBLOCK_NODE_MAP
 132        select HAVE_MIXED_BREAKPOINTS_REGS
 133        select HAVE_OPROFILE
 134        select HAVE_OPTPROBES
 135        select HAVE_PCSPKR_PLATFORM
 136        select HAVE_PERF_EVENTS
 137        select HAVE_PERF_EVENTS_NMI
 138        select HAVE_PERF_REGS
 139        select HAVE_PERF_USER_STACK_DUMP
 140        select HAVE_REGS_AND_STACK_ACCESS_API
 141        select HAVE_SYSCALL_TRACEPOINTS
 142        select HAVE_UID16                       if X86_32 || IA32_EMULATION
 143        select HAVE_UNSTABLE_SCHED_CLOCK
 144        select HAVE_USER_RETURN_NOTIFIER
 145        select IRQ_FORCED_THREADING
 146        select MODULES_USE_ELF_RELA             if X86_64
 147        select MODULES_USE_ELF_REL              if X86_32
 148        select OLD_SIGACTION                    if X86_32
 149        select OLD_SIGSUSPEND3                  if X86_32 || IA32_EMULATION
 150        select PERF_EVENTS
 151        select RTC_LIB
 152        select SPARSE_IRQ
 153        select SRCU
 154        select SYSCTL_EXCEPTION_TRACE
 155        select USER_STACKTRACE_SUPPORT
 156        select VIRT_TO_BUS
 157        select X86_DEV_DMA_OPS                  if X86_64
 158        select X86_FEATURE_NAMES                if PROC_FS
 159        select HAVE_STACK_VALIDATION            if X86_64
 160        select ARCH_USES_HIGH_VMA_FLAGS         if X86_INTEL_MEMORY_PROTECTION_KEYS
 161        select ARCH_HAS_PKEYS                   if X86_INTEL_MEMORY_PROTECTION_KEYS
 162
 163config INSTRUCTION_DECODER
 164        def_bool y
 165        depends on KPROBES || PERF_EVENTS || UPROBES
 166
 167config PERF_EVENTS_INTEL_UNCORE
 168        def_bool y
 169        depends on PERF_EVENTS && CPU_SUP_INTEL && PCI
 170
 171config OUTPUT_FORMAT
 172        string
 173        default "elf32-i386" if X86_32
 174        default "elf64-x86-64" if X86_64
 175
 176config ARCH_DEFCONFIG
 177        string
 178        default "arch/x86/configs/i386_defconfig" if X86_32
 179        default "arch/x86/configs/x86_64_defconfig" if X86_64
 180
 181config LOCKDEP_SUPPORT
 182        def_bool y
 183
 184config STACKTRACE_SUPPORT
 185        def_bool y
 186
 187config MMU
 188        def_bool y
 189
 190config ARCH_MMAP_RND_BITS_MIN
 191        default 28 if 64BIT
 192        default 8
 193
 194config ARCH_MMAP_RND_BITS_MAX
 195        default 32 if 64BIT
 196        default 16
 197
 198config ARCH_MMAP_RND_COMPAT_BITS_MIN
 199        default 8
 200
 201config ARCH_MMAP_RND_COMPAT_BITS_MAX
 202        default 16
 203
 204config SBUS
 205        bool
 206
 207config NEED_DMA_MAP_STATE
 208        def_bool y
 209        depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG || SWIOTLB
 210
 211config NEED_SG_DMA_LENGTH
 212        def_bool y
 213
 214config GENERIC_ISA_DMA
 215        def_bool y
 216        depends on ISA_DMA_API
 217
 218config GENERIC_BUG
 219        def_bool y
 220        depends on BUG
 221        select GENERIC_BUG_RELATIVE_POINTERS if X86_64
 222
 223config GENERIC_BUG_RELATIVE_POINTERS
 224        bool
 225
 226config GENERIC_HWEIGHT
 227        def_bool y
 228
 229config ARCH_MAY_HAVE_PC_FDC
 230        def_bool y
 231        depends on ISA_DMA_API
 232
 233config RWSEM_XCHGADD_ALGORITHM
 234        def_bool y
 235
 236config GENERIC_CALIBRATE_DELAY
 237        def_bool y
 238
 239config ARCH_HAS_CPU_RELAX
 240        def_bool y
 241
 242config ARCH_HAS_CACHE_LINE_SIZE
 243        def_bool y
 244
 245config HAVE_SETUP_PER_CPU_AREA
 246        def_bool y
 247
 248config NEED_PER_CPU_EMBED_FIRST_CHUNK
 249        def_bool y
 250
 251config NEED_PER_CPU_PAGE_FIRST_CHUNK
 252        def_bool y
 253
 254config ARCH_HIBERNATION_POSSIBLE
 255        def_bool y
 256
 257config ARCH_SUSPEND_POSSIBLE
 258        def_bool y
 259
 260config ARCH_WANT_HUGE_PMD_SHARE
 261        def_bool y
 262
 263config ARCH_WANT_GENERAL_HUGETLB
 264        def_bool y
 265
 266config ZONE_DMA32
 267        def_bool y if X86_64
 268
 269config AUDIT_ARCH
 270        def_bool y if X86_64
 271
 272config ARCH_SUPPORTS_OPTIMIZED_INLINING
 273        def_bool y
 274
 275config ARCH_SUPPORTS_DEBUG_PAGEALLOC
 276        def_bool y
 277
 278config KASAN_SHADOW_OFFSET
 279        hex
 280        depends on KASAN
 281        default 0xdffffc0000000000
 282
 283config HAVE_INTEL_TXT
 284        def_bool y
 285        depends on INTEL_IOMMU && ACPI
 286
 287config X86_32_SMP
 288        def_bool y
 289        depends on X86_32 && SMP
 290
 291config X86_64_SMP
 292        def_bool y
 293        depends on X86_64 && SMP
 294
 295config X86_32_LAZY_GS
 296        def_bool y
 297        depends on X86_32 && !CC_STACKPROTECTOR
 298
 299config ARCH_HWEIGHT_CFLAGS
 300        string
 301        default "-fcall-saved-ecx -fcall-saved-edx" if X86_32
 302        default "-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" if X86_64
 303
 304config ARCH_SUPPORTS_UPROBES
 305        def_bool y
 306
 307config FIX_EARLYCON_MEM
 308        def_bool y
 309
 310config DEBUG_RODATA
 311        def_bool y
 312
 313config PGTABLE_LEVELS
 314        int
 315        default 4 if X86_64
 316        default 3 if X86_PAE
 317        default 2
 318
 319source "init/Kconfig"
 320source "kernel/Kconfig.freezer"
 321
 322menu "Processor type and features"
 323
 324config ZONE_DMA
 325        bool "DMA memory allocation support" if EXPERT
 326        default y
 327        help
 328          DMA memory allocation support allows devices with less than 32-bit
 329          addressing to allocate within the first 16MB of address space.
 330          Disable if no such devices will be used.
 331
 332          If unsure, say Y.
 333
 334config SMP
 335        bool "Symmetric multi-processing support"
 336        ---help---
 337          This enables support for systems with more than one CPU. If you have
 338          a system with only one CPU, say N. If you have a system with more
 339          than one CPU, say Y.
 340
 341          If you say N here, the kernel will run on uni- and multiprocessor
 342          machines, but will use only one CPU of a multiprocessor machine. If
 343          you say Y here, the kernel will run on many, but not all,
 344          uniprocessor machines. On a uniprocessor machine, the kernel
 345          will run faster if you say N here.
 346
 347          Note that if you say Y here and choose architecture "586" or
 348          "Pentium" under "Processor family", the kernel will not work on 486
 349          architectures. Similarly, multiprocessor kernels for the "PPro"
 350          architecture may not work on all Pentium based boards.
 351
 352          People using multiprocessor machines who say Y here should also say
 353          Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
 354          Management" code will be disabled if you say Y here.
 355
 356          See also <file:Documentation/x86/i386/IO-APIC.txt>,
 357          <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
 358          <http://www.tldp.org/docs.html#howto>.
 359
 360          If you don't know what to do here, say N.
 361
 362config X86_FEATURE_NAMES
 363        bool "Processor feature human-readable names" if EMBEDDED
 364        default y
 365        ---help---
 366          This option compiles in a table of x86 feature bits and corresponding
 367          names.  This is required to support /proc/cpuinfo and a few kernel
 368          messages.  You can disable this to save space, at the expense of
 369          making those few kernel messages show numeric feature bits instead.
 370
 371          If in doubt, say Y.
 372
 373config X86_FAST_FEATURE_TESTS
 374        bool "Fast CPU feature tests" if EMBEDDED
 375        default y
 376        ---help---
 377          Some fast-paths in the kernel depend on the capabilities of the CPU.
 378          Say Y here for the kernel to patch in the appropriate code at runtime
 379          based on the capabilities of the CPU. The infrastructure for patching
 380          code at runtime takes up some additional space; space-constrained
 381          embedded systems may wish to say N here to produce smaller, slightly
 382          slower code.
 383
 384config X86_X2APIC
 385        bool "Support x2apic"
 386        depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
 387        ---help---
 388          This enables x2apic support on CPUs that have this feature.
 389
 390          This allows 32-bit apic IDs (so it can support very large systems),
 391          and accesses the local apic via MSRs not via mmio.
 392
 393          If you don't know what to do here, say N.
 394
 395config X86_MPPARSE
 396        bool "Enable MPS table" if ACPI || SFI
 397        default y
 398        depends on X86_LOCAL_APIC
 399        ---help---
 400          For old smp systems that do not have proper acpi support. Newer systems
 401          (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
 402
 403config X86_BIGSMP
 404        bool "Support for big SMP systems with more than 8 CPUs"
 405        depends on X86_32 && SMP
 406        ---help---
 407          This option is needed for the systems that have more than 8 CPUs
 408
 409config GOLDFISH
 410       def_bool y
 411       depends on X86_GOLDFISH
 412
 413if X86_32
 414config X86_EXTENDED_PLATFORM
 415        bool "Support for extended (non-PC) x86 platforms"
 416        default y
 417        ---help---
 418          If you disable this option then the kernel will only support
 419          standard PC platforms. (which covers the vast majority of
 420          systems out there.)
 421
 422          If you enable this option then you'll be able to select support
 423          for the following (non-PC) 32 bit x86 platforms:
 424                Goldfish (Android emulator)
 425                AMD Elan
 426                RDC R-321x SoC
 427                SGI 320/540 (Visual Workstation)
 428                STA2X11-based (e.g. Northville)
 429                Moorestown MID devices
 430
 431          If you have one of these systems, or if you want to build a
 432          generic distribution kernel, say Y here - otherwise say N.
 433endif
 434
 435if X86_64
 436config X86_EXTENDED_PLATFORM
 437        bool "Support for extended (non-PC) x86 platforms"
 438        default y
 439        ---help---
 440          If you disable this option then the kernel will only support
 441          standard PC platforms. (which covers the vast majority of
 442          systems out there.)
 443
 444          If you enable this option then you'll be able to select support
 445          for the following (non-PC) 64 bit x86 platforms:
 446                Numascale NumaChip
 447                ScaleMP vSMP
 448                SGI Ultraviolet
 449
 450          If you have one of these systems, or if you want to build a
 451          generic distribution kernel, say Y here - otherwise say N.
 452endif
 453# This is an alphabetically sorted list of 64 bit extended platforms
 454# Please maintain the alphabetic order if and when there are additions
 455config X86_NUMACHIP
 456        bool "Numascale NumaChip"
 457        depends on X86_64
 458        depends on X86_EXTENDED_PLATFORM
 459        depends on NUMA
 460        depends on SMP
 461        depends on X86_X2APIC
 462        depends on PCI_MMCONFIG
 463        ---help---
 464          Adds support for Numascale NumaChip large-SMP systems. Needed to
 465          enable more than ~168 cores.
 466          If you don't have one of these, you should say N here.
 467
 468config X86_VSMP
 469        bool "ScaleMP vSMP"
 470        select HYPERVISOR_GUEST
 471        select PARAVIRT
 472        depends on X86_64 && PCI
 473        depends on X86_EXTENDED_PLATFORM
 474        depends on SMP
 475        ---help---
 476          Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
 477          supposed to run on these EM64T-based machines.  Only choose this option
 478          if you have one of these machines.
 479
 480config X86_UV
 481        bool "SGI Ultraviolet"
 482        depends on X86_64
 483        depends on X86_EXTENDED_PLATFORM
 484        depends on NUMA
 485        depends on EFI
 486        depends on X86_X2APIC
 487        depends on PCI
 488        ---help---
 489          This option is needed in order to support SGI Ultraviolet systems.
 490          If you don't have one of these, you should say N here.
 491
 492# Following is an alphabetically sorted list of 32 bit extended platforms
 493# Please maintain the alphabetic order if and when there are additions
 494
 495config X86_GOLDFISH
 496       bool "Goldfish (Virtual Platform)"
 497       depends on X86_EXTENDED_PLATFORM
 498       ---help---
 499         Enable support for the Goldfish virtual platform used primarily
 500         for Android development. Unless you are building for the Android
 501         Goldfish emulator say N here.
 502
 503config X86_INTEL_CE
 504        bool "CE4100 TV platform"
 505        depends on PCI
 506        depends on PCI_GODIRECT
 507        depends on X86_IO_APIC
 508        depends on X86_32
 509        depends on X86_EXTENDED_PLATFORM
 510        select X86_REBOOTFIXUPS
 511        select OF
 512        select OF_EARLY_FLATTREE
 513        ---help---
 514          Select for the Intel CE media processor (CE4100) SOC.
 515          This option compiles in support for the CE4100 SOC for settop
 516          boxes and media devices.
 517
 518config X86_INTEL_MID
 519        bool "Intel MID platform support"
 520        depends on X86_EXTENDED_PLATFORM
 521        depends on X86_PLATFORM_DEVICES
 522        depends on PCI
 523        depends on X86_64 || (PCI_GOANY && X86_32)
 524        depends on X86_IO_APIC
 525        select SFI
 526        select I2C
 527        select DW_APB_TIMER
 528        select APB_TIMER
 529        select INTEL_SCU_IPC
 530        select MFD_INTEL_MSIC
 531        ---help---
 532          Select to build a kernel capable of supporting Intel MID (Mobile
 533          Internet Device) platform systems which do not have the PCI legacy
 534          interfaces. If you are building for a PC class system say N here.
 535
 536          Intel MID platforms are based on an Intel processor and chipset which
 537          consume less power than most of the x86 derivatives.
 538
 539config X86_INTEL_QUARK
 540        bool "Intel Quark platform support"
 541        depends on X86_32
 542        depends on X86_EXTENDED_PLATFORM
 543        depends on X86_PLATFORM_DEVICES
 544        depends on X86_TSC
 545        depends on PCI
 546        depends on PCI_GOANY
 547        depends on X86_IO_APIC
 548        select IOSF_MBI
 549        select INTEL_IMR
 550        select COMMON_CLK
 551        ---help---
 552          Select to include support for Quark X1000 SoC.
 553          Say Y here if you have a Quark based system such as the Arduino
 554          compatible Intel Galileo.
 555
 556config X86_INTEL_LPSS
 557        bool "Intel Low Power Subsystem Support"
 558        depends on X86 && ACPI
 559        select COMMON_CLK
 560        select PINCTRL
 561        select IOSF_MBI
 562        ---help---
 563          Select to build support for Intel Low Power Subsystem such as
 564          found on Intel Lynxpoint PCH. Selecting this option enables
 565          things like clock tree (common clock framework) and pincontrol
 566          which are needed by the LPSS peripheral drivers.
 567
 568config X86_AMD_PLATFORM_DEVICE
 569        bool "AMD ACPI2Platform devices support"
 570        depends on ACPI
 571        select COMMON_CLK
 572        select PINCTRL
 573        ---help---
 574          Select to interpret AMD specific ACPI device to platform device
 575          such as I2C, UART, GPIO found on AMD Carrizo and later chipsets.
 576          I2C and UART depend on COMMON_CLK to set clock. GPIO driver is
 577          implemented under PINCTRL subsystem.
 578
 579config IOSF_MBI
 580        tristate "Intel SoC IOSF Sideband support for SoC platforms"
 581        depends on PCI
 582        ---help---
 583          This option enables sideband register access support for Intel SoC
 584          platforms. On these platforms the IOSF sideband is used in lieu of
 585          MSR's for some register accesses, mostly but not limited to thermal
 586          and power. Drivers may query the availability of this device to
 587          determine if they need the sideband in order to work on these
 588          platforms. The sideband is available on the following SoC products.
 589          This list is not meant to be exclusive.
 590           - BayTrail
 591           - Braswell
 592           - Quark
 593
 594          You should say Y if you are running a kernel on one of these SoC's.
 595
 596config IOSF_MBI_DEBUG
 597        bool "Enable IOSF sideband access through debugfs"
 598        depends on IOSF_MBI && DEBUG_FS
 599        ---help---
 600          Select this option to expose the IOSF sideband access registers (MCR,
 601          MDR, MCRX) through debugfs to write and read register information from
 602          different units on the SoC. This is most useful for obtaining device
 603          state information for debug and analysis. As this is a general access
 604          mechanism, users of this option would have specific knowledge of the
 605          device they want to access.
 606
 607          If you don't require the option or are in doubt, say N.
 608
 609config X86_RDC321X
 610        bool "RDC R-321x SoC"
 611        depends on X86_32
 612        depends on X86_EXTENDED_PLATFORM
 613        select M486
 614        select X86_REBOOTFIXUPS
 615        ---help---
 616          This option is needed for RDC R-321x system-on-chip, also known
 617          as R-8610-(G).
 618          If you don't have one of these chips, you should say N here.
 619
 620config X86_32_NON_STANDARD
 621        bool "Support non-standard 32-bit SMP architectures"
 622        depends on X86_32 && SMP
 623        depends on X86_EXTENDED_PLATFORM
 624        ---help---
 625          This option compiles in the bigsmp and STA2X11 default
 626          subarchitectures.  It is intended for a generic binary
 627          kernel. If you select them all, kernel will probe it one by
 628          one and will fallback to default.
 629
 630# Alphabetically sorted list of Non standard 32 bit platforms
 631
 632config X86_SUPPORTS_MEMORY_FAILURE
 633        def_bool y
 634        # MCE code calls memory_failure():
 635        depends on X86_MCE
 636        # On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
 637        # On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
 638        depends on X86_64 || !SPARSEMEM
 639        select ARCH_SUPPORTS_MEMORY_FAILURE
 640
 641config STA2X11
 642        bool "STA2X11 Companion Chip Support"
 643        depends on X86_32_NON_STANDARD && PCI
 644        select X86_DEV_DMA_OPS
 645        select X86_DMA_REMAP
 646        select SWIOTLB
 647        select MFD_STA2X11
 648        select ARCH_REQUIRE_GPIOLIB
 649        default n
 650        ---help---
 651          This adds support for boards based on the STA2X11 IO-Hub,
 652          a.k.a. "ConneXt". The chip is used in place of the standard
 653          PC chipset, so all "standard" peripherals are missing. If this
 654          option is selected the kernel will still be able to boot on
 655          standard PC machines.
 656
 657config X86_32_IRIS
 658        tristate "Eurobraille/Iris poweroff module"
 659        depends on X86_32
 660        ---help---
 661          The Iris machines from EuroBraille do not have APM or ACPI support
 662          to shut themselves down properly.  A special I/O sequence is
 663          needed to do so, which is what this module does at
 664          kernel shutdown.
 665
 666          This is only for Iris machines from EuroBraille.
 667
 668          If unused, say N.
 669
 670config SCHED_OMIT_FRAME_POINTER
 671        def_bool y
 672        prompt "Single-depth WCHAN output"
 673        depends on X86
 674        ---help---
 675          Calculate simpler /proc/<PID>/wchan values. If this option
 676          is disabled then wchan values will recurse back to the
 677          caller function. This provides more accurate wchan values,
 678          at the expense of slightly more scheduling overhead.
 679
 680          If in doubt, say "Y".
 681
 682menuconfig HYPERVISOR_GUEST
 683        bool "Linux guest support"
 684        ---help---
 685          Say Y here to enable options for running Linux under various hyper-
 686          visors. This option enables basic hypervisor detection and platform
 687          setup.
 688
 689          If you say N, all options in this submenu will be skipped and
 690          disabled, and Linux guest support won't be built in.
 691
 692if HYPERVISOR_GUEST
 693
 694config PARAVIRT
 695        bool "Enable paravirtualization code"
 696        ---help---
 697          This changes the kernel so it can modify itself when it is run
 698          under a hypervisor, potentially improving performance significantly
 699          over full virtualization.  However, when run without a hypervisor
 700          the kernel is theoretically slower and slightly larger.
 701
 702config PARAVIRT_DEBUG
 703        bool "paravirt-ops debugging"
 704        depends on PARAVIRT && DEBUG_KERNEL
 705        ---help---
 706          Enable to debug paravirt_ops internals.  Specifically, BUG if
 707          a paravirt_op is missing when it is called.
 708
 709config PARAVIRT_SPINLOCKS
 710        bool "Paravirtualization layer for spinlocks"
 711        depends on PARAVIRT && SMP
 712        select UNINLINE_SPIN_UNLOCK if !QUEUED_SPINLOCKS
 713        ---help---
 714          Paravirtualized spinlocks allow a pvops backend to replace the
 715          spinlock implementation with something virtualization-friendly
 716          (for example, block the virtual CPU rather than spinning).
 717
 718          It has a minimal impact on native kernels and gives a nice performance
 719          benefit on paravirtualized KVM / Xen kernels.
 720
 721          If you are unsure how to answer this question, answer Y.
 722
 723config QUEUED_LOCK_STAT
 724        bool "Paravirt queued spinlock statistics"
 725        depends on PARAVIRT_SPINLOCKS && DEBUG_FS && QUEUED_SPINLOCKS
 726        ---help---
 727          Enable the collection of statistical data on the slowpath
 728          behavior of paravirtualized queued spinlocks and report
 729          them on debugfs.
 730
 731source "arch/x86/xen/Kconfig"
 732
 733config KVM_GUEST
 734        bool "KVM Guest support (including kvmclock)"
 735        depends on PARAVIRT
 736        select PARAVIRT_CLOCK
 737        default y
 738        ---help---
 739          This option enables various optimizations for running under the KVM
 740          hypervisor. It includes a paravirtualized clock, so that instead
 741          of relying on a PIT (or probably other) emulation by the
 742          underlying device model, the host provides the guest with
 743          timing infrastructure such as time of day, and system time
 744
 745config KVM_DEBUG_FS
 746        bool "Enable debug information for KVM Guests in debugfs"
 747        depends on KVM_GUEST && DEBUG_FS
 748        default n
 749        ---help---
 750          This option enables collection of various statistics for KVM guest.
 751          Statistics are displayed in debugfs filesystem. Enabling this option
 752          may incur significant overhead.
 753
 754source "arch/x86/lguest/Kconfig"
 755
 756config PARAVIRT_TIME_ACCOUNTING
 757        bool "Paravirtual steal time accounting"
 758        depends on PARAVIRT
 759        default n
 760        ---help---
 761          Select this option to enable fine granularity task steal time
 762          accounting. Time spent executing other tasks in parallel with
 763          the current vCPU is discounted from the vCPU power. To account for
 764          that, there can be a small performance impact.
 765
 766          If in doubt, say N here.
 767
 768config PARAVIRT_CLOCK
 769        bool
 770
 771endif #HYPERVISOR_GUEST
 772
 773config NO_BOOTMEM
 774        def_bool y
 775
 776source "arch/x86/Kconfig.cpu"
 777
 778config HPET_TIMER
 779        def_bool X86_64
 780        prompt "HPET Timer Support" if X86_32
 781        ---help---
 782          Use the IA-PC HPET (High Precision Event Timer) to manage
 783          time in preference to the PIT and RTC, if a HPET is
 784          present.
 785          HPET is the next generation timer replacing legacy 8254s.
 786          The HPET provides a stable time base on SMP
 787          systems, unlike the TSC, but it is more expensive to access,
 788          as it is off-chip.  The interface used is documented
 789          in the HPET spec, revision 1.
 790
 791          You can safely choose Y here.  However, HPET will only be
 792          activated if the platform and the BIOS support this feature.
 793          Otherwise the 8254 will be used for timing services.
 794
 795          Choose N to continue using the legacy 8254 timer.
 796
 797config HPET_EMULATE_RTC
 798        def_bool y
 799        depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
 800
 801config APB_TIMER
 802       def_bool y if X86_INTEL_MID
 803       prompt "Intel MID APB Timer Support" if X86_INTEL_MID
 804       select DW_APB_TIMER
 805       depends on X86_INTEL_MID && SFI
 806       help
 807         APB timer is the replacement for 8254, HPET on X86 MID platforms.
 808         The APBT provides a stable time base on SMP
 809         systems, unlike the TSC, but it is more expensive to access,
 810         as it is off-chip. APB timers are always running regardless of CPU
 811         C states, they are used as per CPU clockevent device when possible.
 812
 813# Mark as expert because too many people got it wrong.
 814# The code disables itself when not needed.
 815config DMI
 816        default y
 817        select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
 818        bool "Enable DMI scanning" if EXPERT
 819        ---help---
 820          Enabled scanning of DMI to identify machine quirks. Say Y
 821          here unless you have verified that your setup is not
 822          affected by entries in the DMI blacklist. Required by PNP
 823          BIOS code.
 824
 825config GART_IOMMU
 826        bool "Old AMD GART IOMMU support"
 827        select SWIOTLB
 828        depends on X86_64 && PCI && AMD_NB
 829        ---help---
 830          Provides a driver for older AMD Athlon64/Opteron/Turion/Sempron
 831          GART based hardware IOMMUs.
 832
 833          The GART supports full DMA access for devices with 32-bit access
 834          limitations, on systems with more than 3 GB. This is usually needed
 835          for USB, sound, many IDE/SATA chipsets and some other devices.
 836
 837          Newer systems typically have a modern AMD IOMMU, supported via
 838          the CONFIG_AMD_IOMMU=y config option.
 839
 840          In normal configurations this driver is only active when needed:
 841          there's more than 3 GB of memory and the system contains a
 842          32-bit limited device.
 843
 844          If unsure, say Y.
 845
 846config CALGARY_IOMMU
 847        bool "IBM Calgary IOMMU support"
 848        select SWIOTLB
 849        depends on X86_64 && PCI
 850        ---help---
 851          Support for hardware IOMMUs in IBM's xSeries x366 and x460
 852          systems. Needed to run systems with more than 3GB of memory
 853          properly with 32-bit PCI devices that do not support DAC
 854          (Double Address Cycle). Calgary also supports bus level
 855          isolation, where all DMAs pass through the IOMMU.  This
 856          prevents them from going anywhere except their intended
 857          destination. This catches hard-to-find kernel bugs and
 858          mis-behaving drivers and devices that do not use the DMA-API
 859          properly to set up their DMA buffers.  The IOMMU can be
 860          turned off at boot time with the iommu=off parameter.
 861          Normally the kernel will make the right choice by itself.
 862          If unsure, say Y.
 863
 864config CALGARY_IOMMU_ENABLED_BY_DEFAULT
 865        def_bool y
 866        prompt "Should Calgary be enabled by default?"
 867        depends on CALGARY_IOMMU
 868        ---help---
 869          Should Calgary be enabled by default? if you choose 'y', Calgary
 870          will be used (if it exists). If you choose 'n', Calgary will not be
 871          used even if it exists. If you choose 'n' and would like to use
 872          Calgary anyway, pass 'iommu=calgary' on the kernel command line.
 873          If unsure, say Y.
 874
 875# need this always selected by IOMMU for the VIA workaround
 876config SWIOTLB
 877        def_bool y if X86_64
 878        ---help---
 879          Support for software bounce buffers used on x86-64 systems
 880          which don't have a hardware IOMMU. Using this PCI devices
 881          which can only access 32-bits of memory can be used on systems
 882          with more than 3 GB of memory.
 883          If unsure, say Y.
 884
 885config IOMMU_HELPER
 886        def_bool y
 887        depends on CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU
 888
 889config MAXSMP
 890        bool "Enable Maximum number of SMP Processors and NUMA Nodes"
 891        depends on X86_64 && SMP && DEBUG_KERNEL
 892        select CPUMASK_OFFSTACK
 893        ---help---
 894          Enable maximum number of CPUS and NUMA Nodes for this architecture.
 895          If unsure, say N.
 896
 897config NR_CPUS
 898        int "Maximum number of CPUs" if SMP && !MAXSMP
 899        range 2 8 if SMP && X86_32 && !X86_BIGSMP
 900        range 2 512 if SMP && !MAXSMP && !CPUMASK_OFFSTACK
 901        range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64
 902        default "1" if !SMP
 903        default "8192" if MAXSMP
 904        default "32" if SMP && X86_BIGSMP
 905        default "8" if SMP && X86_32
 906        default "64" if SMP
 907        ---help---
 908          This allows you to specify the maximum number of CPUs which this
 909          kernel will support.  If CPUMASK_OFFSTACK is enabled, the maximum
 910          supported value is 8192, otherwise the maximum value is 512.  The
 911          minimum value which makes sense is 2.
 912
 913          This is purely to save memory - each supported CPU adds
 914          approximately eight kilobytes to the kernel image.
 915
 916config SCHED_SMT
 917        bool "SMT (Hyperthreading) scheduler support"
 918        depends on SMP
 919        ---help---
 920          SMT scheduler support improves the CPU scheduler's decision making
 921          when dealing with Intel Pentium 4 chips with HyperThreading at a
 922          cost of slightly increased overhead in some places. If unsure say
 923          N here.
 924
 925config SCHED_MC
 926        def_bool y
 927        prompt "Multi-core scheduler support"
 928        depends on SMP
 929        ---help---
 930          Multi-core scheduler support improves the CPU scheduler's decision
 931          making when dealing with multi-core CPU chips at a cost of slightly
 932          increased overhead in some places. If unsure say N here.
 933
 934source "kernel/Kconfig.preempt"
 935
 936config UP_LATE_INIT
 937       def_bool y
 938       depends on !SMP && X86_LOCAL_APIC
 939
 940config X86_UP_APIC
 941        bool "Local APIC support on uniprocessors" if !PCI_MSI
 942        default PCI_MSI
 943        depends on X86_32 && !SMP && !X86_32_NON_STANDARD
 944        ---help---
 945          A local APIC (Advanced Programmable Interrupt Controller) is an
 946          integrated interrupt controller in the CPU. If you have a single-CPU
 947          system which has a processor with a local APIC, you can say Y here to
 948          enable and use it. If you say Y here even though your machine doesn't
 949          have a local APIC, then the kernel will still run with no slowdown at
 950          all. The local APIC supports CPU-generated self-interrupts (timer,
 951          performance counters), and the NMI watchdog which detects hard
 952          lockups.
 953
 954config X86_UP_IOAPIC
 955        bool "IO-APIC support on uniprocessors"
 956        depends on X86_UP_APIC
 957        ---help---
 958          An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
 959          SMP-capable replacement for PC-style interrupt controllers. Most
 960          SMP systems and many recent uniprocessor systems have one.
 961
 962          If you have a single-CPU system with an IO-APIC, you can say Y here
 963          to use it. If you say Y here even though your machine doesn't have
 964          an IO-APIC, then the kernel will still run with no slowdown at all.
 965
 966config X86_LOCAL_APIC
 967        def_bool y
 968        depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
 969        select IRQ_DOMAIN_HIERARCHY
 970        select PCI_MSI_IRQ_DOMAIN if PCI_MSI
 971
 972config X86_IO_APIC
 973        def_bool y
 974        depends on X86_LOCAL_APIC || X86_UP_IOAPIC
 975
 976config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
 977        bool "Reroute for broken boot IRQs"
 978        depends on X86_IO_APIC
 979        ---help---
 980          This option enables a workaround that fixes a source of
 981          spurious interrupts. This is recommended when threaded
 982          interrupt handling is used on systems where the generation of
 983          superfluous "boot interrupts" cannot be disabled.
 984
 985          Some chipsets generate a legacy INTx "boot IRQ" when the IRQ
 986          entry in the chipset's IO-APIC is masked (as, e.g. the RT
 987          kernel does during interrupt handling). On chipsets where this
 988          boot IRQ generation cannot be disabled, this workaround keeps
 989          the original IRQ line masked so that only the equivalent "boot
 990          IRQ" is delivered to the CPUs. The workaround also tells the
 991          kernel to set up the IRQ handler on the boot IRQ line. In this
 992          way only one interrupt is delivered to the kernel. Otherwise
 993          the spurious second interrupt may cause the kernel to bring
 994          down (vital) interrupt lines.
 995
 996          Only affects "broken" chipsets. Interrupt sharing may be
 997          increased on these systems.
 998
 999config X86_MCE
1000        bool "Machine Check / overheating reporting"
1001        select GENERIC_ALLOCATOR
1002        default y
1003        ---help---
1004          Machine Check support allows the processor to notify the
1005          kernel if it detects a problem (e.g. overheating, data corruption).
1006          The action the kernel takes depends on the severity of the problem,
1007          ranging from warning messages to halting the machine.
1008
1009config X86_MCE_INTEL
1010        def_bool y
1011        prompt "Intel MCE features"
1012        depends on X86_MCE && X86_LOCAL_APIC
1013        ---help---
1014           Additional support for intel specific MCE features such as
1015           the thermal monitor.
1016
1017config X86_MCE_AMD
1018        def_bool y
1019        prompt "AMD MCE features"
1020        depends on X86_MCE && X86_LOCAL_APIC
1021        ---help---
1022           Additional support for AMD specific MCE features such as
1023           the DRAM Error Threshold.
1024
1025config X86_ANCIENT_MCE
1026        bool "Support for old Pentium 5 / WinChip machine checks"
1027        depends on X86_32 && X86_MCE
1028        ---help---
1029          Include support for machine check handling on old Pentium 5 or WinChip
1030          systems. These typically need to be enabled explicitly on the command
1031          line.
1032
1033config X86_MCE_THRESHOLD
1034        depends on X86_MCE_AMD || X86_MCE_INTEL
1035        def_bool y
1036
1037config X86_MCE_INJECT
1038        depends on X86_MCE
1039        tristate "Machine check injector support"
1040        ---help---
1041          Provide support for injecting machine checks for testing purposes.
1042          If you don't know what a machine check is and you don't do kernel
1043          QA it is safe to say n.
1044
1045config X86_THERMAL_VECTOR
1046        def_bool y
1047        depends on X86_MCE_INTEL
1048
1049config X86_LEGACY_VM86
1050        bool "Legacy VM86 support"
1051        default n
1052        depends on X86_32
1053        ---help---
1054          This option allows user programs to put the CPU into V8086
1055          mode, which is an 80286-era approximation of 16-bit real mode.
1056
1057          Some very old versions of X and/or vbetool require this option
1058          for user mode setting.  Similarly, DOSEMU will use it if
1059          available to accelerate real mode DOS programs.  However, any
1060          recent version of DOSEMU, X, or vbetool should be fully
1061          functional even without kernel VM86 support, as they will all
1062          fall back to software emulation. Nevertheless, if you are using
1063          a 16-bit DOS program where 16-bit performance matters, vm86
1064          mode might be faster than emulation and you might want to
1065          enable this option.
1066
1067          Note that any app that works on a 64-bit kernel is unlikely to
1068          need this option, as 64-bit kernels don't, and can't, support
1069          V8086 mode. This option is also unrelated to 16-bit protected
1070          mode and is not needed to run most 16-bit programs under Wine.
1071
1072          Enabling this option increases the complexity of the kernel
1073          and slows down exception handling a tiny bit.
1074
1075          If unsure, say N here.
1076
1077config VM86
1078       bool
1079       default X86_LEGACY_VM86
1080
1081config X86_16BIT
1082        bool "Enable support for 16-bit segments" if EXPERT
1083        default y
1084        depends on MODIFY_LDT_SYSCALL
1085        ---help---
1086          This option is required by programs like Wine to run 16-bit
1087          protected mode legacy code on x86 processors.  Disabling
1088          this option saves about 300 bytes on i386, or around 6K text
1089          plus 16K runtime memory on x86-64,
1090
1091config X86_ESPFIX32
1092        def_bool y
1093        depends on X86_16BIT && X86_32
1094
1095config X86_ESPFIX64
1096        def_bool y
1097        depends on X86_16BIT && X86_64
1098
1099config X86_VSYSCALL_EMULATION
1100       bool "Enable vsyscall emulation" if EXPERT
1101       default y
1102       depends on X86_64
1103       ---help---
1104         This enables emulation of the legacy vsyscall page.  Disabling
1105         it is roughly equivalent to booting with vsyscall=none, except
1106         that it will also disable the helpful warning if a program
1107         tries to use a vsyscall.  With this option set to N, offending
1108         programs will just segfault, citing addresses of the form
1109         0xffffffffff600?00.
1110
1111         This option is required by many programs built before 2013, and
1112         care should be used even with newer programs if set to N.
1113
1114         Disabling this option saves about 7K of kernel size and
1115         possibly 4K of additional runtime pagetable memory.
1116
1117config TOSHIBA
1118        tristate "Toshiba Laptop support"
1119        depends on X86_32
1120        ---help---
1121          This adds a driver to safely access the System Management Mode of
1122          the CPU on Toshiba portables with a genuine Toshiba BIOS. It does
1123          not work on models with a Phoenix BIOS. The System Management Mode
1124          is used to set the BIOS and power saving options on Toshiba portables.
1125
1126          For information on utilities to make use of this driver see the
1127          Toshiba Linux utilities web site at:
1128          <http://www.buzzard.org.uk/toshiba/>.
1129
1130          Say Y if you intend to run this kernel on a Toshiba portable.
1131          Say N otherwise.
1132
1133config I8K
1134        tristate "Dell i8k legacy laptop support"
1135        select HWMON
1136        select SENSORS_DELL_SMM
1137        ---help---
1138          This option enables legacy /proc/i8k userspace interface in hwmon
1139          dell-smm-hwmon driver. Character file /proc/i8k reports bios version,
1140          temperature and allows controlling fan speeds of Dell laptops via
1141          System Management Mode. For old Dell laptops (like Dell Inspiron 8000)
1142          it reports also power and hotkey status. For fan speed control is
1143          needed userspace package i8kutils.
1144
1145          Say Y if you intend to run this kernel on old Dell laptops or want to
1146          use userspace package i8kutils.
1147          Say N otherwise.
1148
1149config X86_REBOOTFIXUPS
1150        bool "Enable X86 board specific fixups for reboot"
1151        depends on X86_32
1152        ---help---
1153          This enables chipset and/or board specific fixups to be done
1154          in order to get reboot to work correctly. This is only needed on
1155          some combinations of hardware and BIOS. The symptom, for which
1156          this config is intended, is when reboot ends with a stalled/hung
1157          system.
1158
1159          Currently, the only fixup is for the Geode machines using
1160          CS5530A and CS5536 chipsets and the RDC R-321x SoC.
1161
1162          Say Y if you want to enable the fixup. Currently, it's safe to
1163          enable this option even if you don't need it.
1164          Say N otherwise.
1165
1166config MICROCODE
1167        bool "CPU microcode loading support"
1168        default y
1169        depends on CPU_SUP_AMD || CPU_SUP_INTEL
1170        select FW_LOADER
1171        ---help---
1172          If you say Y here, you will be able to update the microcode on
1173          Intel and AMD processors. The Intel support is for the IA32 family,
1174          e.g. Pentium Pro, Pentium II, Pentium III, Pentium 4, Xeon etc. The
1175          AMD support is for families 0x10 and later. You will obviously need
1176          the actual microcode binary data itself which is not shipped with
1177          the Linux kernel.
1178
1179          The preferred method to load microcode from a detached initrd is described
1180          in Documentation/x86/early-microcode.txt. For that you need to enable
1181          CONFIG_BLK_DEV_INITRD in order for the loader to be able to scan the
1182          initrd for microcode blobs.
1183
1184          In addition, you can build-in the microcode into the kernel. For that you
1185          need to enable FIRMWARE_IN_KERNEL and add the vendor-supplied microcode
1186          to the CONFIG_EXTRA_FIRMWARE config option.
1187
1188config MICROCODE_INTEL
1189        bool "Intel microcode loading support"
1190        depends on MICROCODE
1191        default MICROCODE
1192        select FW_LOADER
1193        ---help---
1194          This options enables microcode patch loading support for Intel
1195          processors.
1196
1197          For the current Intel microcode data package go to
1198          <https://downloadcenter.intel.com> and search for
1199          'Linux Processor Microcode Data File'.
1200
1201config MICROCODE_AMD
1202        bool "AMD microcode loading support"
1203        depends on MICROCODE
1204        select FW_LOADER
1205        ---help---
1206          If you select this option, microcode patch loading support for AMD
1207          processors will be enabled.
1208
1209config MICROCODE_OLD_INTERFACE
1210        def_bool y
1211        depends on MICROCODE
1212
1213config PERF_EVENTS_AMD_POWER
1214        depends on PERF_EVENTS && CPU_SUP_AMD
1215        tristate "AMD Processor Power Reporting Mechanism"
1216        ---help---
1217          Provide power reporting mechanism support for AMD processors.
1218          Currently, it leverages X86_FEATURE_ACC_POWER
1219          (CPUID Fn8000_0007_EDX[12]) interface to calculate the
1220          average power consumption on Family 15h processors.
1221
1222config X86_MSR
1223        tristate "/dev/cpu/*/msr - Model-specific register support"
1224        ---help---
1225          This device gives privileged processes access to the x86
1226          Model-Specific Registers (MSRs).  It is a character device with
1227          major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
1228          MSR accesses are directed to a specific CPU on multi-processor
1229          systems.
1230
1231config X86_CPUID
1232        tristate "/dev/cpu/*/cpuid - CPU information support"
1233        ---help---
1234          This device gives processes access to the x86 CPUID instruction to
1235          be executed on a specific processor.  It is a character device
1236          with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
1237          /dev/cpu/31/cpuid.
1238
1239choice
1240        prompt "High Memory Support"
1241        default HIGHMEM4G
1242        depends on X86_32
1243
1244config NOHIGHMEM
1245        bool "off"
1246        ---help---
1247          Linux can use up to 64 Gigabytes of physical memory on x86 systems.
1248          However, the address space of 32-bit x86 processors is only 4
1249          Gigabytes large. That means that, if you have a large amount of
1250          physical memory, not all of it can be "permanently mapped" by the
1251          kernel. The physical memory that's not permanently mapped is called
1252          "high memory".
1253
1254          If you are compiling a kernel which will never run on a machine with
1255          more than 1 Gigabyte total physical RAM, answer "off" here (default
1256          choice and suitable for most users). This will result in a "3GB/1GB"
1257          split: 3GB are mapped so that each process sees a 3GB virtual memory
1258          space and the remaining part of the 4GB virtual memory space is used
1259          by the kernel to permanently map as much physical memory as
1260          possible.
1261
1262          If the machine has between 1 and 4 Gigabytes physical RAM, then
1263          answer "4GB" here.
1264
1265          If more than 4 Gigabytes is used then answer "64GB" here. This
1266          selection turns Intel PAE (Physical Address Extension) mode on.
1267          PAE implements 3-level paging on IA32 processors. PAE is fully
1268          supported by Linux, PAE mode is implemented on all recent Intel
1269          processors (Pentium Pro and better). NOTE: If you say "64GB" here,
1270          then the kernel will not boot on CPUs that don't support PAE!
1271
1272          The actual amount of total physical memory will either be
1273          auto detected or can be forced by using a kernel command line option
1274          such as "mem=256M". (Try "man bootparam" or see the documentation of
1275          your boot loader (lilo or loadlin) about how to pass options to the
1276          kernel at boot time.)
1277
1278          If unsure, say "off".
1279
1280config HIGHMEM4G
1281        bool "4GB"
1282        ---help---
1283          Select this if you have a 32-bit processor and between 1 and 4
1284          gigabytes of physical RAM.
1285
1286config HIGHMEM64G
1287        bool "64GB"
1288        depends on !M486
1289        select X86_PAE
1290        ---help---
1291          Select this if you have a 32-bit processor and more than 4
1292          gigabytes of physical RAM.
1293
1294endchoice
1295
1296choice
1297        prompt "Memory split" if EXPERT
1298        default VMSPLIT_3G
1299        depends on X86_32
1300        ---help---
1301          Select the desired split between kernel and user memory.
1302
1303          If the address range available to the kernel is less than the
1304          physical memory installed, the remaining memory will be available
1305          as "high memory". Accessing high memory is a little more costly
1306          than low memory, as it needs to be mapped into the kernel first.
1307          Note that increasing the kernel address space limits the range
1308          available to user programs, making the address space there
1309          tighter.  Selecting anything other than the default 3G/1G split
1310          will also likely make your kernel incompatible with binary-only
1311          kernel modules.
1312
1313          If you are not absolutely sure what you are doing, leave this
1314          option alone!
1315
1316        config VMSPLIT_3G
1317                bool "3G/1G user/kernel split"
1318        config VMSPLIT_3G_OPT
1319                depends on !X86_PAE
1320                bool "3G/1G user/kernel split (for full 1G low memory)"
1321        config VMSPLIT_2G
1322                bool "2G/2G user/kernel split"
1323        config VMSPLIT_2G_OPT
1324                depends on !X86_PAE
1325                bool "2G/2G user/kernel split (for full 2G low memory)"
1326        config VMSPLIT_1G
1327                bool "1G/3G user/kernel split"
1328endchoice
1329
1330config PAGE_OFFSET
1331        hex
1332        default 0xB0000000 if VMSPLIT_3G_OPT
1333        default 0x80000000 if VMSPLIT_2G
1334        default 0x78000000 if VMSPLIT_2G_OPT
1335        default 0x40000000 if VMSPLIT_1G
1336        default 0xC0000000
1337        depends on X86_32
1338
1339config HIGHMEM
1340        def_bool y
1341        depends on X86_32 && (HIGHMEM64G || HIGHMEM4G)
1342
1343config X86_PAE
1344        bool "PAE (Physical Address Extension) Support"
1345        depends on X86_32 && !HIGHMEM4G
1346        select SWIOTLB
1347        ---help---
1348          PAE is required for NX support, and furthermore enables
1349          larger swapspace support for non-overcommit purposes. It
1350          has the cost of more pagetable lookup overhead, and also
1351          consumes more pagetable space per process.
1352
1353config ARCH_PHYS_ADDR_T_64BIT
1354        def_bool y
1355        depends on X86_64 || X86_PAE
1356
1357config ARCH_DMA_ADDR_T_64BIT
1358        def_bool y
1359        depends on X86_64 || HIGHMEM64G
1360
1361config X86_DIRECT_GBPAGES
1362        def_bool y
1363        depends on X86_64 && !DEBUG_PAGEALLOC && !KMEMCHECK
1364        ---help---
1365          Certain kernel features effectively disable kernel
1366          linear 1 GB mappings (even if the CPU otherwise
1367          supports them), so don't confuse the user by printing
1368          that we have them enabled.
1369
1370# Common NUMA Features
1371config NUMA
1372        bool "Numa Memory Allocation and Scheduler Support"
1373        depends on SMP
1374        depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
1375        default y if X86_BIGSMP
1376        ---help---
1377          Enable NUMA (Non Uniform Memory Access) support.
1378
1379          The kernel will try to allocate memory used by a CPU on the
1380          local memory controller of the CPU and add some more
1381          NUMA awareness to the kernel.
1382
1383          For 64-bit this is recommended if the system is Intel Core i7
1384          (or later), AMD Opteron, or EM64T NUMA.
1385
1386          For 32-bit this is only needed if you boot a 32-bit
1387          kernel on a 64-bit NUMA platform.
1388
1389          Otherwise, you should say N.
1390
1391config AMD_NUMA
1392        def_bool y
1393        prompt "Old style AMD Opteron NUMA detection"
1394        depends on X86_64 && NUMA && PCI
1395        ---help---
1396          Enable AMD NUMA node topology detection.  You should say Y here if
1397          you have a multi processor AMD system. This uses an old method to
1398          read the NUMA configuration directly from the builtin Northbridge
1399          of Opteron. It is recommended to use X86_64_ACPI_NUMA instead,
1400          which also takes priority if both are compiled in.
1401
1402config X86_64_ACPI_NUMA
1403        def_bool y
1404        prompt "ACPI NUMA detection"
1405        depends on X86_64 && NUMA && ACPI && PCI
1406        select ACPI_NUMA
1407        ---help---
1408          Enable ACPI SRAT based node topology detection.
1409
1410# Some NUMA nodes have memory ranges that span
1411# other nodes.  Even though a pfn is valid and
1412# between a node's start and end pfns, it may not
1413# reside on that node.  See memmap_init_zone()
1414# for details.
1415config NODES_SPAN_OTHER_NODES
1416        def_bool y
1417        depends on X86_64_ACPI_NUMA
1418
1419config NUMA_EMU
1420        bool "NUMA emulation"
1421        depends on NUMA
1422        ---help---
1423          Enable NUMA emulation. A flat machine will be split
1424          into virtual nodes when booted with "numa=fake=N", where N is the
1425          number of nodes. This is only useful for debugging.
1426
1427config NODES_SHIFT
1428        int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
1429        range 1 10
1430        default "10" if MAXSMP
1431        default "6" if X86_64
1432        default "3"
1433        depends on NEED_MULTIPLE_NODES
1434        ---help---
1435          Specify the maximum number of NUMA Nodes available on the target
1436          system.  Increases memory reserved to accommodate various tables.
1437
1438config ARCH_HAVE_MEMORY_PRESENT
1439        def_bool y
1440        depends on X86_32 && DISCONTIGMEM
1441
1442config NEED_NODE_MEMMAP_SIZE
1443        def_bool y
1444        depends on X86_32 && (DISCONTIGMEM || SPARSEMEM)
1445
1446config ARCH_FLATMEM_ENABLE
1447        def_bool y
1448        depends on X86_32 && !NUMA
1449
1450config ARCH_DISCONTIGMEM_ENABLE
1451        def_bool y
1452        depends on NUMA && X86_32
1453
1454config ARCH_DISCONTIGMEM_DEFAULT
1455        def_bool y
1456        depends on NUMA && X86_32
1457
1458config ARCH_SPARSEMEM_ENABLE
1459        def_bool y
1460        depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD
1461        select SPARSEMEM_STATIC if X86_32
1462        select SPARSEMEM_VMEMMAP_ENABLE if X86_64
1463
1464config ARCH_SPARSEMEM_DEFAULT
1465        def_bool y
1466        depends on X86_64
1467
1468config ARCH_SELECT_MEMORY_MODEL
1469        def_bool y
1470        depends on ARCH_SPARSEMEM_ENABLE
1471
1472config ARCH_MEMORY_PROBE
1473        bool "Enable sysfs memory/probe interface"
1474        depends on X86_64 && MEMORY_HOTPLUG
1475        help
1476          This option enables a sysfs memory/probe interface for testing.
1477          See Documentation/memory-hotplug.txt for more information.
1478          If you are unsure how to answer this question, answer N.
1479
1480config ARCH_PROC_KCORE_TEXT
1481        def_bool y
1482        depends on X86_64 && PROC_KCORE
1483
1484config ILLEGAL_POINTER_VALUE
1485       hex
1486       default 0 if X86_32
1487       default 0xdead000000000000 if X86_64
1488
1489source "mm/Kconfig"
1490
1491config X86_PMEM_LEGACY_DEVICE
1492        bool
1493
1494config X86_PMEM_LEGACY
1495        tristate "Support non-standard NVDIMMs and ADR protected memory"
1496        depends on PHYS_ADDR_T_64BIT
1497        depends on BLK_DEV
1498        select X86_PMEM_LEGACY_DEVICE
1499        select LIBNVDIMM
1500        help
1501          Treat memory marked using the non-standard e820 type of 12 as used
1502          by the Intel Sandy Bridge-EP reference BIOS as protected memory.
1503          The kernel will offer these regions to the 'pmem' driver so
1504          they can be used for persistent storage.
1505
1506          Say Y if unsure.
1507
1508config HIGHPTE
1509        bool "Allocate 3rd-level pagetables from highmem"
1510        depends on HIGHMEM
1511        ---help---
1512          The VM uses one page table entry for each page of physical memory.
1513          For systems with a lot of RAM, this can be wasteful of precious
1514          low memory.  Setting this option will put user-space page table
1515          entries in high memory.
1516
1517config X86_CHECK_BIOS_CORRUPTION
1518        bool "Check for low memory corruption"
1519        ---help---
1520          Periodically check for memory corruption in low memory, which
1521          is suspected to be caused by BIOS.  Even when enabled in the
1522          configuration, it is disabled at runtime.  Enable it by
1523          setting "memory_corruption_check=1" on the kernel command
1524          line.  By default it scans the low 64k of memory every 60
1525          seconds; see the memory_corruption_check_size and
1526          memory_corruption_check_period parameters in
1527          Documentation/kernel-parameters.txt to adjust this.
1528
1529          When enabled with the default parameters, this option has
1530          almost no overhead, as it reserves a relatively small amount
1531          of memory and scans it infrequently.  It both detects corruption
1532          and prevents it from affecting the running system.
1533
1534          It is, however, intended as a diagnostic tool; if repeatable
1535          BIOS-originated corruption always affects the same memory,
1536          you can use memmap= to prevent the kernel from using that
1537          memory.
1538
1539config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
1540        bool "Set the default setting of memory_corruption_check"
1541        depends on X86_CHECK_BIOS_CORRUPTION
1542        default y
1543        ---help---
1544          Set whether the default state of memory_corruption_check is
1545          on or off.
1546
1547config X86_RESERVE_LOW
1548        int "Amount of low memory, in kilobytes, to reserve for the BIOS"
1549        default 64
1550        range 4 640
1551        ---help---
1552          Specify the amount of low memory to reserve for the BIOS.
1553
1554          The first page contains BIOS data structures that the kernel
1555          must not use, so that page must always be reserved.
1556
1557          By default we reserve the first 64K of physical RAM, as a
1558          number of BIOSes are known to corrupt that memory range
1559          during events such as suspend/resume or monitor cable
1560          insertion, so it must not be used by the kernel.
1561
1562          You can set this to 4 if you are absolutely sure that you
1563          trust the BIOS to get all its memory reservations and usages
1564          right.  If you know your BIOS have problems beyond the
1565          default 64K area, you can set this to 640 to avoid using the
1566          entire low memory range.
1567
1568          If you have doubts about the BIOS (e.g. suspend/resume does
1569          not work or there's kernel crashes after certain hardware
1570          hotplug events) then you might want to enable
1571          X86_CHECK_BIOS_CORRUPTION=y to allow the kernel to check
1572          typical corruption patterns.
1573
1574          Leave this to the default value of 64 if you are unsure.
1575
1576config MATH_EMULATION
1577        bool
1578        depends on MODIFY_LDT_SYSCALL
1579        prompt "Math emulation" if X86_32
1580        ---help---
1581          Linux can emulate a math coprocessor (used for floating point
1582          operations) if you don't have one. 486DX and Pentium processors have
1583          a math coprocessor built in, 486SX and 386 do not, unless you added
1584          a 487DX or 387, respectively. (The messages during boot time can
1585          give you some hints here ["man dmesg"].) Everyone needs either a
1586          coprocessor or this emulation.
1587
1588          If you don't have a math coprocessor, you need to say Y here; if you
1589          say Y here even though you have a coprocessor, the coprocessor will
1590          be used nevertheless. (This behavior can be changed with the kernel
1591          command line option "no387", which comes handy if your coprocessor
1592          is broken. Try "man bootparam" or see the documentation of your boot
1593          loader (lilo or loadlin) about how to pass options to the kernel at
1594          boot time.) This means that it is a good idea to say Y here if you
1595          intend to use this kernel on different machines.
1596
1597          More information about the internals of the Linux math coprocessor
1598          emulation can be found in <file:arch/x86/math-emu/README>.
1599
1600          If you are not sure, say Y; apart from resulting in a 66 KB bigger
1601          kernel, it won't hurt.
1602
1603config MTRR
1604        def_bool y
1605        prompt "MTRR (Memory Type Range Register) support" if EXPERT
1606        ---help---
1607          On Intel P6 family processors (Pentium Pro, Pentium II and later)
1608          the Memory Type Range Registers (MTRRs) may be used to control
1609          processor access to memory ranges. This is most useful if you have
1610          a video (VGA) card on a PCI or AGP bus. Enabling write-combining
1611          allows bus write transfers to be combined into a larger transfer
1612          before bursting over the PCI/AGP bus. This can increase performance
1613          of image write operations 2.5 times or more. Saying Y here creates a
1614          /proc/mtrr file which may be used to manipulate your processor's
1615          MTRRs. Typically the X server should use this.
1616
1617          This code has a reasonably generic interface so that similar
1618          control registers on other processors can be easily supported
1619          as well:
1620
1621          The Cyrix 6x86, 6x86MX and M II processors have Address Range
1622          Registers (ARRs) which provide a similar functionality to MTRRs. For
1623          these, the ARRs are used to emulate the MTRRs.
1624          The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
1625          MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
1626          write-combining. All of these processors are supported by this code
1627          and it makes sense to say Y here if you have one of them.
1628
1629          Saying Y here also fixes a problem with buggy SMP BIOSes which only
1630          set the MTRRs for the boot CPU and not for the secondary CPUs. This
1631          can lead to all sorts of problems, so it's good to say Y here.
1632
1633          You can safely say Y even if your machine doesn't have MTRRs, you'll
1634          just add about 9 KB to your kernel.
1635
1636          See <file:Documentation/x86/mtrr.txt> for more information.
1637
1638config MTRR_SANITIZER
1639        def_bool y
1640        prompt "MTRR cleanup support"
1641        depends on MTRR
1642        ---help---
1643          Convert MTRR layout from continuous to discrete, so X drivers can
1644          add writeback entries.
1645
1646          Can be disabled with disable_mtrr_cleanup on the kernel command line.
1647          The largest mtrr entry size for a continuous block can be set with
1648          mtrr_chunk_size.
1649
1650          If unsure, say Y.
1651
1652config MTRR_SANITIZER_ENABLE_DEFAULT
1653        int "MTRR cleanup enable value (0-1)"
1654        range 0 1
1655        default "0"
1656        depends on MTRR_SANITIZER
1657        ---help---
1658          Enable mtrr cleanup default value
1659
1660config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
1661        int "MTRR cleanup spare reg num (0-7)"
1662        range 0 7
1663        default "1"
1664        depends on MTRR_SANITIZER
1665        ---help---
1666          mtrr cleanup spare entries default, it can be changed via
1667          mtrr_spare_reg_nr=N on the kernel command line.
1668
1669config X86_PAT
1670        def_bool y
1671        prompt "x86 PAT support" if EXPERT
1672        depends on MTRR
1673        ---help---
1674          Use PAT attributes to setup page level cache control.
1675
1676          PATs are the modern equivalents of MTRRs and are much more
1677          flexible than MTRRs.
1678
1679          Say N here if you see bootup problems (boot crash, boot hang,
1680          spontaneous reboots) or a non-working video driver.
1681
1682          If unsure, say Y.
1683
1684config ARCH_USES_PG_UNCACHED
1685        def_bool y
1686        depends on X86_PAT
1687
1688config ARCH_RANDOM
1689        def_bool y
1690        prompt "x86 architectural random number generator" if EXPERT
1691        ---help---
1692          Enable the x86 architectural RDRAND instruction
1693          (Intel Bull Mountain technology) to generate random numbers.
1694          If supported, this is a high bandwidth, cryptographically
1695          secure hardware random number generator.
1696
1697config X86_SMAP
1698        def_bool y
1699        prompt "Supervisor Mode Access Prevention" if EXPERT
1700        ---help---
1701          Supervisor Mode Access Prevention (SMAP) is a security
1702          feature in newer Intel processors.  There is a small
1703          performance cost if this enabled and turned on; there is
1704          also a small increase in the kernel size if this is enabled.
1705
1706          If unsure, say Y.
1707
1708config X86_INTEL_MPX
1709        prompt "Intel MPX (Memory Protection Extensions)"
1710        def_bool n
1711        depends on CPU_SUP_INTEL
1712        ---help---
1713          MPX provides hardware features that can be used in
1714          conjunction with compiler-instrumented code to check
1715          memory references.  It is designed to detect buffer
1716          overflow or underflow bugs.
1717
1718          This option enables running applications which are
1719          instrumented or otherwise use MPX.  It does not use MPX
1720          itself inside the kernel or to protect the kernel
1721          against bad memory references.
1722
1723          Enabling this option will make the kernel larger:
1724          ~8k of kernel text and 36 bytes of data on a 64-bit
1725          defconfig.  It adds a long to the 'mm_struct' which
1726          will increase the kernel memory overhead of each
1727          process and adds some branches to paths used during
1728          exec() and munmap().
1729
1730          For details, see Documentation/x86/intel_mpx.txt
1731
1732          If unsure, say N.
1733
1734config X86_INTEL_MEMORY_PROTECTION_KEYS
1735        prompt "Intel Memory Protection Keys"
1736        def_bool y
1737        # Note: only available in 64-bit mode
1738        depends on CPU_SUP_INTEL && X86_64
1739        ---help---
1740          Memory Protection Keys provides a mechanism for enforcing
1741          page-based protections, but without requiring modification of the
1742          page tables when an application changes protection domains.
1743
1744          For details, see Documentation/x86/protection-keys.txt
1745
1746          If unsure, say y.
1747
1748config EFI
1749        bool "EFI runtime service support"
1750        depends on ACPI
1751        select UCS2_STRING
1752        select EFI_RUNTIME_WRAPPERS
1753        ---help---
1754          This enables the kernel to use EFI runtime services that are
1755          available (such as the EFI variable services).
1756
1757          This option is only useful on systems that have EFI firmware.
1758          In addition, you should use the latest ELILO loader available
1759          at <http://elilo.sourceforge.net> in order to take advantage
1760          of EFI runtime services. However, even with this option, the
1761          resultant kernel should continue to boot on existing non-EFI
1762          platforms.
1763
1764config EFI_STUB
1765       bool "EFI stub support"
1766       depends on EFI && !X86_USE_3DNOW
1767       select RELOCATABLE
1768       ---help---
1769          This kernel feature allows a bzImage to be loaded directly
1770          by EFI firmware without the use of a bootloader.
1771
1772          See Documentation/efi-stub.txt for more information.
1773
1774config EFI_MIXED
1775        bool "EFI mixed-mode support"
1776        depends on EFI_STUB && X86_64
1777        ---help---
1778           Enabling this feature allows a 64-bit kernel to be booted
1779           on a 32-bit firmware, provided that your CPU supports 64-bit
1780           mode.
1781
1782           Note that it is not possible to boot a mixed-mode enabled
1783           kernel via the EFI boot stub - a bootloader that supports
1784           the EFI handover protocol must be used.
1785
1786           If unsure, say N.
1787
1788config SECCOMP
1789        def_bool y
1790        prompt "Enable seccomp to safely compute untrusted bytecode"
1791        ---help---
1792          This kernel feature is useful for number crunching applications
1793          that may need to compute untrusted bytecode during their
1794          execution. By using pipes or other transports made available to
1795          the process as file descriptors supporting the read/write
1796          syscalls, it's possible to isolate those applications in
1797          their own address space using seccomp. Once seccomp is
1798          enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
1799          and the task is only allowed to execute a few safe syscalls
1800          defined by each seccomp mode.
1801
1802          If unsure, say Y. Only embedded should say N here.
1803
1804source kernel/Kconfig.hz
1805
1806config KEXEC
1807        bool "kexec system call"
1808        select KEXEC_CORE
1809        ---help---
1810          kexec is a system call that implements the ability to shutdown your
1811          current kernel, and to start another kernel.  It is like a reboot
1812          but it is independent of the system firmware.   And like a reboot
1813          you can start any kernel with it, not just Linux.
1814
1815          The name comes from the similarity to the exec system call.
1816
1817          It is an ongoing process to be certain the hardware in a machine
1818          is properly shutdown, so do not be surprised if this code does not
1819          initially work for you.  As of this writing the exact hardware
1820          interface is strongly in flux, so no good recommendation can be
1821          made.
1822
1823config KEXEC_FILE
1824        bool "kexec file based system call"
1825        select KEXEC_CORE
1826        select BUILD_BIN2C
1827        depends on X86_64
1828        depends on CRYPTO=y
1829        depends on CRYPTO_SHA256=y
1830        ---help---
1831          This is new version of kexec system call. This system call is
1832          file based and takes file descriptors as system call argument
1833          for kernel and initramfs as opposed to list of segments as
1834          accepted by previous system call.
1835
1836config KEXEC_VERIFY_SIG
1837        bool "Verify kernel signature during kexec_file_load() syscall"
1838        depends on KEXEC_FILE
1839        ---help---
1840          This option makes kernel signature verification mandatory for
1841          the kexec_file_load() syscall.
1842
1843          In addition to that option, you need to enable signature
1844          verification for the corresponding kernel image type being
1845          loaded in order for this to work.
1846
1847config KEXEC_BZIMAGE_VERIFY_SIG
1848        bool "Enable bzImage signature verification support"
1849        depends on KEXEC_VERIFY_SIG
1850        depends on SIGNED_PE_FILE_VERIFICATION
1851        select SYSTEM_TRUSTED_KEYRING
1852        ---help---
1853          Enable bzImage signature verification support.
1854
1855config CRASH_DUMP
1856        bool "kernel crash dumps"
1857        depends on X86_64 || (X86_32 && HIGHMEM)
1858        ---help---
1859          Generate crash dump after being started by kexec.
1860          This should be normally only set in special crash dump kernels
1861          which are loaded in the main kernel with kexec-tools into
1862          a specially reserved region and then later executed after
1863          a crash by kdump/kexec. The crash dump kernel must be compiled
1864          to a memory address not used by the main kernel or BIOS using
1865          PHYSICAL_START, or it must be built as a relocatable image
1866          (CONFIG_RELOCATABLE=y).
1867          For more details see Documentation/kdump/kdump.txt
1868
1869config KEXEC_JUMP
1870        bool "kexec jump"
1871        depends on KEXEC && HIBERNATION
1872        ---help---
1873          Jump between original kernel and kexeced kernel and invoke
1874          code in physical address mode via KEXEC
1875
1876config PHYSICAL_START
1877        hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
1878        default "0x1000000"
1879        ---help---
1880          This gives the physical address where the kernel is loaded.
1881
1882          If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
1883          bzImage will decompress itself to above physical address and
1884          run from there. Otherwise, bzImage will run from the address where
1885          it has been loaded by the boot loader and will ignore above physical
1886          address.
1887
1888          In normal kdump cases one does not have to set/change this option
1889          as now bzImage can be compiled as a completely relocatable image
1890          (CONFIG_RELOCATABLE=y) and be used to load and run from a different
1891          address. This option is mainly useful for the folks who don't want
1892          to use a bzImage for capturing the crash dump and want to use a
1893          vmlinux instead. vmlinux is not relocatable hence a kernel needs
1894          to be specifically compiled to run from a specific memory area
1895          (normally a reserved region) and this option comes handy.
1896
1897          So if you are using bzImage for capturing the crash dump,
1898          leave the value here unchanged to 0x1000000 and set
1899          CONFIG_RELOCATABLE=y.  Otherwise if you plan to use vmlinux
1900          for capturing the crash dump change this value to start of
1901          the reserved region.  In other words, it can be set based on
1902          the "X" value as specified in the "crashkernel=YM@XM"
1903          command line boot parameter passed to the panic-ed
1904          kernel. Please take a look at Documentation/kdump/kdump.txt
1905          for more details about crash dumps.
1906
1907          Usage of bzImage for capturing the crash dump is recommended as
1908          one does not have to build two kernels. Same kernel can be used
1909          as production kernel and capture kernel. Above option should have
1910          gone away after relocatable bzImage support is introduced. But it
1911          is present because there are users out there who continue to use
1912          vmlinux for dump capture. This option should go away down the
1913          line.
1914
1915          Don't change this unless you know what you are doing.
1916
1917config RELOCATABLE
1918        bool "Build a relocatable kernel"
1919        default y
1920        ---help---
1921          This builds a kernel image that retains relocation information
1922          so it can be loaded someplace besides the default 1MB.
1923          The relocations tend to make the kernel binary about 10% larger,
1924          but are discarded at runtime.
1925
1926          One use is for the kexec on panic case where the recovery kernel
1927          must live at a different physical address than the primary
1928          kernel.
1929
1930          Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
1931          it has been loaded at and the compile time physical address
1932          (CONFIG_PHYSICAL_START) is used as the minimum location.
1933
1934config RANDOMIZE_BASE
1935        bool "Randomize the address of the kernel image"
1936        depends on RELOCATABLE
1937        default n
1938        ---help---
1939           Randomizes the physical and virtual address at which the
1940           kernel image is decompressed, as a security feature that
1941           deters exploit attempts relying on knowledge of the location
1942           of kernel internals.
1943
1944           Entropy is generated using the RDRAND instruction if it is
1945           supported. If RDTSC is supported, it is used as well. If
1946           neither RDRAND nor RDTSC are supported, then randomness is
1947           read from the i8254 timer.
1948
1949           The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET,
1950           and aligned according to PHYSICAL_ALIGN. Since the kernel is
1951           built using 2GiB addressing, and PHYSICAL_ALGIN must be at a
1952           minimum of 2MiB, only 10 bits of entropy is theoretically
1953           possible. At best, due to page table layouts, 64-bit can use
1954           9 bits of entropy and 32-bit uses 8 bits.
1955
1956           If unsure, say N.
1957
1958config RANDOMIZE_BASE_MAX_OFFSET
1959        hex "Maximum kASLR offset allowed" if EXPERT
1960        depends on RANDOMIZE_BASE
1961        range 0x0 0x20000000 if X86_32
1962        default "0x20000000" if X86_32
1963        range 0x0 0x40000000 if X86_64
1964        default "0x40000000" if X86_64
1965        ---help---
1966          The lesser of RANDOMIZE_BASE_MAX_OFFSET and available physical
1967          memory is used to determine the maximal offset in bytes that will
1968          be applied to the kernel when kernel Address Space Layout
1969          Randomization (kASLR) is active. This must be a multiple of
1970          PHYSICAL_ALIGN.
1971
1972          On 32-bit this is limited to 512MiB by page table layouts. The
1973          default is 512MiB.
1974
1975          On 64-bit this is limited by how the kernel fixmap page table is
1976          positioned, so this cannot be larger than 1GiB currently. Without
1977          RANDOMIZE_BASE, there is a 512MiB to 1.5GiB split between kernel
1978          and modules. When RANDOMIZE_BASE_MAX_OFFSET is above 512MiB, the
1979          modules area will shrink to compensate, up to the current maximum
1980          1GiB to 1GiB split. The default is 1GiB.
1981
1982          If unsure, leave at the default value.
1983
1984# Relocation on x86 needs some additional build support
1985config X86_NEED_RELOCS
1986        def_bool y
1987        depends on RANDOMIZE_BASE || (X86_32 && RELOCATABLE)
1988
1989config PHYSICAL_ALIGN
1990        hex "Alignment value to which kernel should be aligned"
1991        default "0x200000"
1992        range 0x2000 0x1000000 if X86_32
1993        range 0x200000 0x1000000 if X86_64
1994        ---help---
1995          This value puts the alignment restrictions on physical address
1996          where kernel is loaded and run from. Kernel is compiled for an
1997          address which meets above alignment restriction.
1998
1999          If bootloader loads the kernel at a non-aligned address and
2000          CONFIG_RELOCATABLE is set, kernel will move itself to nearest
2001          address aligned to above value and run from there.
2002
2003          If bootloader loads the kernel at a non-aligned address and
2004          CONFIG_RELOCATABLE is not set, kernel will ignore the run time
2005          load address and decompress itself to the address it has been
2006          compiled for and run from there. The address for which kernel is
2007          compiled already meets above alignment restrictions. Hence the
2008          end result is that kernel runs from a physical address meeting
2009          above alignment restrictions.
2010
2011          On 32-bit this value must be a multiple of 0x2000. On 64-bit
2012          this value must be a multiple of 0x200000.
2013
2014          Don't change this unless you know what you are doing.
2015
2016config HOTPLUG_CPU
2017        bool "Support for hot-pluggable CPUs"
2018        depends on SMP
2019        ---help---
2020          Say Y here to allow turning CPUs off and on. CPUs can be
2021          controlled through /sys/devices/system/cpu.
2022          ( Note: power management support will enable this option
2023            automatically on SMP systems. )
2024          Say N if you want to disable CPU hotplug.
2025
2026config BOOTPARAM_HOTPLUG_CPU0
2027        bool "Set default setting of cpu0_hotpluggable"
2028        default n
2029        depends on HOTPLUG_CPU
2030        ---help---
2031          Set whether default state of cpu0_hotpluggable is on or off.
2032
2033          Say Y here to enable CPU0 hotplug by default. If this switch
2034          is turned on, there is no need to give cpu0_hotplug kernel
2035          parameter and the CPU0 hotplug feature is enabled by default.
2036
2037          Please note: there are two known CPU0 dependencies if you want
2038          to enable the CPU0 hotplug feature either by this switch or by
2039          cpu0_hotplug kernel parameter.
2040
2041          First, resume from hibernate or suspend always starts from CPU0.
2042          So hibernate and suspend are prevented if CPU0 is offline.
2043
2044          Second dependency is PIC interrupts always go to CPU0. CPU0 can not
2045          offline if any interrupt can not migrate out of CPU0. There may
2046          be other CPU0 dependencies.
2047
2048          Please make sure the dependencies are under your control before
2049          you enable this feature.
2050
2051          Say N if you don't want to enable CPU0 hotplug feature by default.
2052          You still can enable the CPU0 hotplug feature at boot by kernel
2053          parameter cpu0_hotplug.
2054
2055config DEBUG_HOTPLUG_CPU0
2056        def_bool n
2057        prompt "Debug CPU0 hotplug"
2058        depends on HOTPLUG_CPU
2059        ---help---
2060          Enabling this option offlines CPU0 (if CPU0 can be offlined) as
2061          soon as possible and boots up userspace with CPU0 offlined. User
2062          can online CPU0 back after boot time.
2063
2064          To debug CPU0 hotplug, you need to enable CPU0 offline/online
2065          feature by either turning on CONFIG_BOOTPARAM_HOTPLUG_CPU0 during
2066          compilation or giving cpu0_hotplug kernel parameter at boot.
2067
2068          If unsure, say N.
2069
2070config COMPAT_VDSO
2071        def_bool n
2072        prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
2073        depends on X86_32 || IA32_EMULATION
2074        ---help---
2075          Certain buggy versions of glibc will crash if they are
2076          presented with a 32-bit vDSO that is not mapped at the address
2077          indicated in its segment table.
2078
2079          The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a
2080          and fixed by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and
2081          49ad572a70b8aeb91e57483a11dd1b77e31c4468.  Glibc 2.3.3 is
2082          the only released version with the bug, but OpenSUSE 9
2083          contains a buggy "glibc 2.3.2".
2084
2085          The symptom of the bug is that everything crashes on startup, saying:
2086          dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!
2087
2088          Saying Y here changes the default value of the vdso32 boot
2089          option from 1 to 0, which turns off the 32-bit vDSO entirely.
2090          This works around the glibc bug but hurts performance.
2091
2092          If unsure, say N: if you are compiling your own kernel, you
2093          are unlikely to be using a buggy version of glibc.
2094
2095choice
2096        prompt "vsyscall table for legacy applications"
2097        depends on X86_64
2098        default LEGACY_VSYSCALL_EMULATE
2099        help
2100          Legacy user code that does not know how to find the vDSO expects
2101          to be able to issue three syscalls by calling fixed addresses in
2102          kernel space. Since this location is not randomized with ASLR,
2103          it can be used to assist security vulnerability exploitation.
2104
2105          This setting can be changed at boot time via the kernel command
2106          line parameter vsyscall=[native|emulate|none].
2107
2108          On a system with recent enough glibc (2.14 or newer) and no
2109          static binaries, you can say None without a performance penalty
2110          to improve security.
2111
2112          If unsure, select "Emulate".
2113
2114        config LEGACY_VSYSCALL_NATIVE
2115                bool "Native"
2116                help
2117                  Actual executable code is located in the fixed vsyscall
2118                  address mapping, implementing time() efficiently. Since
2119                  this makes the mapping executable, it can be used during
2120                  security vulnerability exploitation (traditionally as
2121                  ROP gadgets). This configuration is not recommended.
2122
2123        config LEGACY_VSYSCALL_EMULATE
2124                bool "Emulate"
2125                help
2126                  The kernel traps and emulates calls into the fixed
2127                  vsyscall address mapping. This makes the mapping
2128                  non-executable, but it still contains known contents,
2129                  which could be used in certain rare security vulnerability
2130                  exploits. This configuration is recommended when userspace
2131                  still uses the vsyscall area.
2132
2133        config LEGACY_VSYSCALL_NONE
2134                bool "None"
2135                help
2136                  There will be no vsyscall mapping at all. This will
2137                  eliminate any risk of ASLR bypass due to the vsyscall
2138                  fixed address mapping. Attempts to use the vsyscalls
2139                  will be reported to dmesg, so that either old or
2140                  malicious userspace programs can be identified.
2141
2142endchoice
2143
2144config CMDLINE_BOOL
2145        bool "Built-in kernel command line"
2146        ---help---
2147          Allow for specifying boot arguments to the kernel at
2148          build time.  On some systems (e.g. embedded ones), it is
2149          necessary or convenient to provide some or all of the
2150          kernel boot arguments with the kernel itself (that is,
2151          to not rely on the boot loader to provide them.)
2152
2153          To compile command line arguments into the kernel,
2154          set this option to 'Y', then fill in the
2155          boot arguments in CONFIG_CMDLINE.
2156
2157          Systems with fully functional boot loaders (i.e. non-embedded)
2158          should leave this option set to 'N'.
2159
2160config CMDLINE
2161        string "Built-in kernel command string"
2162        depends on CMDLINE_BOOL
2163        default ""
2164        ---help---
2165          Enter arguments here that should be compiled into the kernel
2166          image and used at boot time.  If the boot loader provides a
2167          command line at boot time, it is appended to this string to
2168          form the full kernel command line, when the system boots.
2169
2170          However, you can use the CONFIG_CMDLINE_OVERRIDE option to
2171          change this behavior.
2172
2173          In most cases, the command line (whether built-in or provided
2174          by the boot loader) should specify the device for the root
2175          file system.
2176
2177config CMDLINE_OVERRIDE
2178        bool "Built-in command line overrides boot loader arguments"
2179        depends on CMDLINE_BOOL
2180        ---help---
2181          Set this option to 'Y' to have the kernel ignore the boot loader
2182          command line, and use ONLY the built-in command line.
2183
2184          This is used to work around broken boot loaders.  This should
2185          be set to 'N' under normal conditions.
2186
2187config MODIFY_LDT_SYSCALL
2188        bool "Enable the LDT (local descriptor table)" if EXPERT
2189        default y
2190        ---help---
2191          Linux can allow user programs to install a per-process x86
2192          Local Descriptor Table (LDT) using the modify_ldt(2) system
2193          call.  This is required to run 16-bit or segmented code such as
2194          DOSEMU or some Wine programs.  It is also used by some very old
2195          threading libraries.
2196
2197          Enabling this feature adds a small amount of overhead to
2198          context switches and increases the low-level kernel attack
2199          surface.  Disabling it removes the modify_ldt(2) system call.
2200
2201          Saying 'N' here may make sense for embedded or server kernels.
2202
2203source "kernel/livepatch/Kconfig"
2204
2205endmenu
2206
2207config ARCH_ENABLE_MEMORY_HOTPLUG
2208        def_bool y
2209        depends on X86_64 || (X86_32 && HIGHMEM)
2210
2211config ARCH_ENABLE_MEMORY_HOTREMOVE
2212        def_bool y
2213        depends on MEMORY_HOTPLUG
2214
2215config USE_PERCPU_NUMA_NODE_ID
2216        def_bool y
2217        depends on NUMA
2218
2219config ARCH_ENABLE_SPLIT_PMD_PTLOCK
2220        def_bool y
2221        depends on X86_64 || X86_PAE
2222
2223config ARCH_ENABLE_HUGEPAGE_MIGRATION
2224        def_bool y
2225        depends on X86_64 && HUGETLB_PAGE && MIGRATION
2226
2227menu "Power management and ACPI options"
2228
2229config ARCH_HIBERNATION_HEADER
2230        def_bool y
2231        depends on X86_64 && HIBERNATION
2232
2233source "kernel/power/Kconfig"
2234
2235source "drivers/acpi/Kconfig"
2236
2237source "drivers/sfi/Kconfig"
2238
2239config X86_APM_BOOT
2240        def_bool y
2241        depends on APM
2242
2243menuconfig APM
2244        tristate "APM (Advanced Power Management) BIOS support"
2245        depends on X86_32 && PM_SLEEP
2246        ---help---
2247          APM is a BIOS specification for saving power using several different
2248          techniques. This is mostly useful for battery powered laptops with
2249          APM compliant BIOSes. If you say Y here, the system time will be
2250          reset after a RESUME operation, the /proc/apm device will provide
2251          battery status information, and user-space programs will receive
2252          notification of APM "events" (e.g. battery status change).
2253
2254          If you select "Y" here, you can disable actual use of the APM
2255          BIOS by passing the "apm=off" option to the kernel at boot time.
2256
2257          Note that the APM support is almost completely disabled for
2258          machines with more than one CPU.
2259
2260          In order to use APM, you will need supporting software. For location
2261          and more information, read <file:Documentation/power/apm-acpi.txt>
2262          and the Battery Powered Linux mini-HOWTO, available from
2263          <http://www.tldp.org/docs.html#howto>.
2264
2265          This driver does not spin down disk drives (see the hdparm(8)
2266          manpage ("man 8 hdparm") for that), and it doesn't turn off
2267          VESA-compliant "green" monitors.
2268
2269          This driver does not support the TI 4000M TravelMate and the ACER
2270          486/DX4/75 because they don't have compliant BIOSes. Many "green"
2271          desktop machines also don't have compliant BIOSes, and this driver
2272          may cause those machines to panic during the boot phase.
2273
2274          Generally, if you don't have a battery in your machine, there isn't
2275          much point in using this driver and you should say N. If you get
2276          random kernel OOPSes or reboots that don't seem to be related to
2277          anything, try disabling/enabling this option (or disabling/enabling
2278          APM in your BIOS).
2279
2280          Some other things you should try when experiencing seemingly random,
2281          "weird" problems:
2282
2283          1) make sure that you have enough swap space and that it is
2284          enabled.
2285          2) pass the "no-hlt" option to the kernel
2286          3) switch on floating point emulation in the kernel and pass
2287          the "no387" option to the kernel
2288          4) pass the "floppy=nodma" option to the kernel
2289          5) pass the "mem=4M" option to the kernel (thereby disabling
2290          all but the first 4 MB of RAM)
2291          6) make sure that the CPU is not over clocked.
2292          7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/>
2293          8) disable the cache from your BIOS settings
2294          9) install a fan for the video card or exchange video RAM
2295          10) install a better fan for the CPU
2296          11) exchange RAM chips
2297          12) exchange the motherboard.
2298
2299          To compile this driver as a module, choose M here: the
2300          module will be called apm.
2301
2302if APM
2303
2304config APM_IGNORE_USER_SUSPEND
2305        bool "Ignore USER SUSPEND"
2306        ---help---
2307          This option will ignore USER SUSPEND requests. On machines with a
2308          compliant APM BIOS, you want to say N. However, on the NEC Versa M
2309          series notebooks, it is necessary to say Y because of a BIOS bug.
2310
2311config APM_DO_ENABLE
2312        bool "Enable PM at boot time"
2313        ---help---
2314          Enable APM features at boot time. From page 36 of the APM BIOS
2315          specification: "When disabled, the APM BIOS does not automatically
2316          power manage devices, enter the Standby State, enter the Suspend
2317          State, or take power saving steps in response to CPU Idle calls."
2318          This driver will make CPU Idle calls when Linux is idle (unless this
2319          feature is turned off -- see "Do CPU IDLE calls", below). This
2320          should always save battery power, but more complicated APM features
2321          will be dependent on your BIOS implementation. You may need to turn
2322          this option off if your computer hangs at boot time when using APM
2323          support, or if it beeps continuously instead of suspending. Turn
2324          this off if you have a NEC UltraLite Versa 33/C or a Toshiba
2325          T400CDT. This is off by default since most machines do fine without
2326          this feature.
2327
2328config APM_CPU_IDLE
2329        depends on CPU_IDLE
2330        bool "Make CPU Idle calls when idle"
2331        ---help---
2332          Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
2333          On some machines, this can activate improved power savings, such as
2334          a slowed CPU clock rate, when the machine is idle. These idle calls
2335          are made after the idle loop has run for some length of time (e.g.,
2336          333 mS). On some machines, this will cause a hang at boot time or
2337          whenever the CPU becomes idle. (On machines with more than one CPU,
2338          this option does nothing.)
2339
2340config APM_DISPLAY_BLANK
2341        bool "Enable console blanking using APM"
2342        ---help---
2343          Enable console blanking using the APM. Some laptops can use this to
2344          turn off the LCD backlight when the screen blanker of the Linux
2345          virtual console blanks the screen. Note that this is only used by
2346          the virtual console screen blanker, and won't turn off the backlight
2347          when using the X Window system. This also doesn't have anything to
2348          do with your VESA-compliant power-saving monitor. Further, this
2349          option doesn't work for all laptops -- it might not turn off your
2350          backlight at all, or it might print a lot of errors to the console,
2351          especially if you are using gpm.
2352
2353config APM_ALLOW_INTS
2354        bool "Allow interrupts during APM BIOS calls"
2355        ---help---
2356          Normally we disable external interrupts while we are making calls to
2357          the APM BIOS as a measure to lessen the effects of a badly behaving
2358          BIOS implementation.  The BIOS should reenable interrupts if it
2359          needs to.  Unfortunately, some BIOSes do not -- especially those in
2360          many of the newer IBM Thinkpads.  If you experience hangs when you
2361          suspend, try setting this to Y.  Otherwise, say N.
2362
2363endif # APM
2364
2365source "drivers/cpufreq/Kconfig"
2366
2367source "drivers/cpuidle/Kconfig"
2368
2369source "drivers/idle/Kconfig"
2370
2371endmenu
2372
2373
2374menu "Bus options (PCI etc.)"
2375
2376config PCI
2377        bool "PCI support"
2378        default y
2379        ---help---
2380          Find out whether you have a PCI motherboard. PCI is the name of a
2381          bus system, i.e. the way the CPU talks to the other stuff inside
2382          your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
2383          VESA. If you have PCI, say Y, otherwise N.
2384
2385choice
2386        prompt "PCI access mode"
2387        depends on X86_32 && PCI
2388        default PCI_GOANY
2389        ---help---
2390          On PCI systems, the BIOS can be used to detect the PCI devices and
2391          determine their configuration. However, some old PCI motherboards
2392          have BIOS bugs and may crash if this is done. Also, some embedded
2393          PCI-based systems don't have any BIOS at all. Linux can also try to
2394          detect the PCI hardware directly without using the BIOS.
2395
2396          With this option, you can specify how Linux should detect the
2397          PCI devices. If you choose "BIOS", the BIOS will be used,
2398          if you choose "Direct", the BIOS won't be used, and if you
2399          choose "MMConfig", then PCI Express MMCONFIG will be used.
2400          If you choose "Any", the kernel will try MMCONFIG, then the
2401          direct access method and falls back to the BIOS if that doesn't
2402          work. If unsure, go with the default, which is "Any".
2403
2404config PCI_GOBIOS
2405        bool "BIOS"
2406
2407config PCI_GOMMCONFIG
2408        bool "MMConfig"
2409
2410config PCI_GODIRECT
2411        bool "Direct"
2412
2413config PCI_GOOLPC
2414        bool "OLPC XO-1"
2415        depends on OLPC
2416
2417config PCI_GOANY
2418        bool "Any"
2419
2420endchoice
2421
2422config PCI_BIOS
2423        def_bool y
2424        depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY)
2425
2426# x86-64 doesn't support PCI BIOS access from long mode so always go direct.
2427config PCI_DIRECT
2428        def_bool y
2429        depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG))
2430
2431config PCI_MMCONFIG
2432        def_bool y
2433        depends on X86_32 && PCI && (ACPI || SFI) && (PCI_GOMMCONFIG || PCI_GOANY)
2434
2435config PCI_OLPC
2436        def_bool y
2437        depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
2438
2439config PCI_XEN
2440        def_bool y
2441        depends on PCI && XEN
2442        select SWIOTLB_XEN
2443
2444config PCI_DOMAINS
2445        def_bool y
2446        depends on PCI
2447
2448config PCI_MMCONFIG
2449        bool "Support mmconfig PCI config space access"
2450        depends on X86_64 && PCI && ACPI
2451
2452config PCI_CNB20LE_QUIRK
2453        bool "Read CNB20LE Host Bridge Windows" if EXPERT
2454        depends on PCI
2455        help
2456          Read the PCI windows out of the CNB20LE host bridge. This allows
2457          PCI hotplug to work on systems with the CNB20LE chipset which do
2458          not have ACPI.
2459
2460          There's no public spec for this chipset, and this functionality
2461          is known to be incomplete.
2462
2463          You should say N unless you know you need this.
2464
2465source "drivers/pci/Kconfig"
2466
2467# x86_64 have no ISA slots, but can have ISA-style DMA.
2468config ISA_DMA_API
2469        bool "ISA-style DMA support" if (X86_64 && EXPERT)
2470        default y
2471        help
2472          Enables ISA-style DMA support for devices requiring such controllers.
2473          If unsure, say Y.
2474
2475if X86_32
2476
2477config ISA
2478        bool "ISA support"
2479        ---help---
2480          Find out whether you have ISA slots on your motherboard.  ISA is the
2481          name of a bus system, i.e. the way the CPU talks to the other stuff
2482          inside your box.  Other bus systems are PCI, EISA, MicroChannel
2483          (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
2484          newer boards don't support it.  If you have ISA, say Y, otherwise N.
2485
2486config EISA
2487        bool "EISA support"
2488        depends on ISA
2489        ---help---
2490          The Extended Industry Standard Architecture (EISA) bus was
2491          developed as an open alternative to the IBM MicroChannel bus.
2492
2493          The EISA bus provided some of the features of the IBM MicroChannel
2494          bus while maintaining backward compatibility with cards made for
2495          the older ISA bus.  The EISA bus saw limited use between 1988 and
2496          1995 when it was made obsolete by the PCI bus.
2497
2498          Say Y here if you are building a kernel for an EISA-based machine.
2499
2500          Otherwise, say N.
2501
2502source "drivers/eisa/Kconfig"
2503
2504config SCx200
2505        tristate "NatSemi SCx200 support"
2506        ---help---
2507          This provides basic support for National Semiconductor's
2508          (now AMD's) Geode processors.  The driver probes for the
2509          PCI-IDs of several on-chip devices, so its a good dependency
2510          for other scx200_* drivers.
2511
2512          If compiled as a module, the driver is named scx200.
2513
2514config SCx200HR_TIMER
2515        tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
2516        depends on SCx200
2517        default y
2518        ---help---
2519          This driver provides a clocksource built upon the on-chip
2520          27MHz high-resolution timer.  Its also a workaround for
2521          NSC Geode SC-1100's buggy TSC, which loses time when the
2522          processor goes idle (as is done by the scheduler).  The
2523          other workaround is idle=poll boot option.
2524
2525config OLPC
2526        bool "One Laptop Per Child support"
2527        depends on !X86_PAE
2528        select GPIOLIB
2529        select OF
2530        select OF_PROMTREE
2531        select IRQ_DOMAIN
2532        ---help---
2533          Add support for detecting the unique features of the OLPC
2534          XO hardware.
2535
2536config OLPC_XO1_PM
2537        bool "OLPC XO-1 Power Management"
2538        depends on OLPC && MFD_CS5535 && PM_SLEEP
2539        select MFD_CORE
2540        ---help---
2541          Add support for poweroff and suspend of the OLPC XO-1 laptop.
2542
2543config OLPC_XO1_RTC
2544        bool "OLPC XO-1 Real Time Clock"
2545        depends on OLPC_XO1_PM && RTC_DRV_CMOS
2546        ---help---
2547          Add support for the XO-1 real time clock, which can be used as a
2548          programmable wakeup source.
2549
2550config OLPC_XO1_SCI
2551        bool "OLPC XO-1 SCI extras"
2552        depends on OLPC && OLPC_XO1_PM
2553        depends on INPUT=y
2554        select POWER_SUPPLY
2555        select GPIO_CS5535
2556        select MFD_CORE
2557        ---help---
2558          Add support for SCI-based features of the OLPC XO-1 laptop:
2559           - EC-driven system wakeups
2560           - Power button
2561           - Ebook switch
2562           - Lid switch
2563           - AC adapter status updates
2564           - Battery status updates
2565
2566config OLPC_XO15_SCI
2567        bool "OLPC XO-1.5 SCI extras"
2568        depends on OLPC && ACPI
2569        select POWER_SUPPLY
2570        ---help---
2571          Add support for SCI-based features of the OLPC XO-1.5 laptop:
2572           - EC-driven system wakeups
2573           - AC adapter status updates
2574           - Battery status updates
2575
2576config ALIX
2577        bool "PCEngines ALIX System Support (LED setup)"
2578        select GPIOLIB
2579        ---help---
2580          This option enables system support for the PCEngines ALIX.
2581          At present this just sets up LEDs for GPIO control on
2582          ALIX2/3/6 boards.  However, other system specific setup should
2583          get added here.
2584
2585          Note: You must still enable the drivers for GPIO and LED support
2586          (GPIO_CS5535 & LEDS_GPIO) to actually use the LEDs
2587
2588          Note: You have to set alix.force=1 for boards with Award BIOS.
2589
2590config NET5501
2591        bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)"
2592        select GPIOLIB
2593        ---help---
2594          This option enables system support for the Soekris Engineering net5501.
2595
2596config GEOS
2597        bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)"
2598        select GPIOLIB
2599        depends on DMI
2600        ---help---
2601          This option enables system support for the Traverse Technologies GEOS.
2602
2603config TS5500
2604        bool "Technologic Systems TS-5500 platform support"
2605        depends on MELAN
2606        select CHECK_SIGNATURE
2607        select NEW_LEDS
2608        select LEDS_CLASS
2609        ---help---
2610          This option enables system support for the Technologic Systems TS-5500.
2611
2612endif # X86_32
2613
2614config AMD_NB
2615        def_bool y
2616        depends on CPU_SUP_AMD && PCI
2617
2618source "drivers/pcmcia/Kconfig"
2619
2620config RAPIDIO
2621        tristate "RapidIO support"
2622        depends on PCI
2623        default n
2624        help
2625          If enabled this option will include drivers and the core
2626          infrastructure code to support RapidIO interconnect devices.
2627
2628source "drivers/rapidio/Kconfig"
2629
2630config X86_SYSFB
2631        bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
2632        help
2633          Firmwares often provide initial graphics framebuffers so the BIOS,
2634          bootloader or kernel can show basic video-output during boot for
2635          user-guidance and debugging. Historically, x86 used the VESA BIOS
2636          Extensions and EFI-framebuffers for this, which are mostly limited
2637          to x86.
2638          This option, if enabled, marks VGA/VBE/EFI framebuffers as generic
2639          framebuffers so the new generic system-framebuffer drivers can be
2640          used on x86. If the framebuffer is not compatible with the generic
2641          modes, it is adverticed as fallback platform framebuffer so legacy
2642          drivers like efifb, vesafb and uvesafb can pick it up.
2643          If this option is not selected, all system framebuffers are always
2644          marked as fallback platform framebuffers as usual.
2645
2646          Note: Legacy fbdev drivers, including vesafb, efifb, uvesafb, will
2647          not be able to pick up generic system framebuffers if this option
2648          is selected. You are highly encouraged to enable simplefb as
2649          replacement if you select this option. simplefb can correctly deal
2650          with generic system framebuffers. But you should still keep vesafb
2651          and others enabled as fallback if a system framebuffer is
2652          incompatible with simplefb.
2653
2654          If unsure, say Y.
2655
2656endmenu
2657
2658
2659menu "Executable file formats / Emulations"
2660
2661source "fs/Kconfig.binfmt"
2662
2663config IA32_EMULATION
2664        bool "IA32 Emulation"
2665        depends on X86_64
2666        select BINFMT_ELF
2667        select COMPAT_BINFMT_ELF
2668        select ARCH_WANT_OLD_COMPAT_IPC
2669        ---help---
2670          Include code to run legacy 32-bit programs under a
2671          64-bit kernel. You should likely turn this on, unless you're
2672          100% sure that you don't have any 32-bit programs left.
2673
2674config IA32_AOUT
2675        tristate "IA32 a.out support"
2676        depends on IA32_EMULATION
2677        ---help---
2678          Support old a.out binaries in the 32bit emulation.
2679
2680config X86_X32
2681        bool "x32 ABI for 64-bit mode"
2682        depends on X86_64
2683        ---help---
2684          Include code to run binaries for the x32 native 32-bit ABI
2685          for 64-bit processors.  An x32 process gets access to the
2686          full 64-bit register file and wide data path while leaving
2687          pointers at 32 bits for smaller memory footprint.
2688
2689          You will need a recent binutils (2.22 or later) with
2690          elf32_x86_64 support enabled to compile a kernel with this
2691          option set.
2692
2693config COMPAT
2694        def_bool y
2695        depends on IA32_EMULATION || X86_X32
2696
2697if COMPAT
2698config COMPAT_FOR_U64_ALIGNMENT
2699        def_bool y
2700
2701config SYSVIPC_COMPAT
2702        def_bool y
2703        depends on SYSVIPC
2704
2705config KEYS_COMPAT
2706        def_bool y
2707        depends on KEYS
2708endif
2709
2710endmenu
2711
2712
2713config HAVE_ATOMIC_IOMAP
2714        def_bool y
2715        depends on X86_32
2716
2717config X86_DEV_DMA_OPS
2718        bool
2719        depends on X86_64 || STA2X11
2720
2721config X86_DMA_REMAP
2722        bool
2723        depends on STA2X11
2724
2725config PMC_ATOM
2726        def_bool y
2727        depends on PCI
2728
2729config VMD
2730        depends on PCI_MSI
2731        tristate "Volume Management Device Driver"
2732        default N
2733        ---help---
2734          Adds support for the Intel Volume Management Device (VMD). VMD is a
2735          secondary PCI host bridge that allows PCI Express root ports,
2736          and devices attached to them, to be removed from the default
2737          PCI domain and placed within the VMD domain. This provides
2738          more bus resources than are otherwise possible with a
2739          single domain. If you know your system provides one of these and
2740          has devices attached to it, say Y; if you are not sure, say N.
2741
2742source "net/Kconfig"
2743
2744source "drivers/Kconfig"
2745
2746source "drivers/firmware/Kconfig"
2747
2748source "fs/Kconfig"
2749
2750source "arch/x86/Kconfig.debug"
2751
2752source "security/Kconfig"
2753
2754source "crypto/Kconfig"
2755
2756source "arch/x86/kvm/Kconfig"
2757
2758source "lib/Kconfig"
2759