linux/arch/x86/Kconfig
<<
>>
Prefs
   1# Select 32 or 64 bit
   2config 64BIT
   3        bool "64-bit kernel" if ARCH = "x86"
   4        default ARCH = "x86_64"
   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 !64BIT
  11
  12config X86_64
  13        def_bool 64BIT
  14
  15### Arch settings
  16config X86
  17        def_bool y
  18        select HAVE_AOUT if X86_32
  19        select HAVE_READQ
  20        select HAVE_WRITEQ
  21        select HAVE_UNSTABLE_SCHED_CLOCK
  22        select HAVE_IDE
  23        select HAVE_OPROFILE
  24        select HAVE_PERF_EVENTS
  25        select HAVE_IRQ_WORK
  26        select HAVE_IOREMAP_PROT
  27        select HAVE_KPROBES
  28        select HAVE_MEMBLOCK
  29        select ARCH_WANT_OPTIONAL_GPIOLIB
  30        select ARCH_WANT_FRAME_POINTERS
  31        select HAVE_DMA_ATTRS
  32        select HAVE_KRETPROBES
  33        select HAVE_OPTPROBES
  34        select HAVE_FTRACE_MCOUNT_RECORD
  35        select HAVE_C_RECORDMCOUNT
  36        select HAVE_DYNAMIC_FTRACE
  37        select HAVE_FUNCTION_TRACER
  38        select HAVE_FUNCTION_GRAPH_TRACER
  39        select HAVE_FUNCTION_GRAPH_FP_TEST
  40        select HAVE_FUNCTION_TRACE_MCOUNT_TEST
  41        select HAVE_FTRACE_NMI_ENTER if DYNAMIC_FTRACE
  42        select HAVE_SYSCALL_TRACEPOINTS
  43        select HAVE_KVM
  44        select HAVE_ARCH_KGDB
  45        select HAVE_ARCH_TRACEHOOK
  46        select HAVE_GENERIC_DMA_COHERENT if X86_32
  47        select HAVE_EFFICIENT_UNALIGNED_ACCESS
  48        select USER_STACKTRACE_SUPPORT
  49        select HAVE_REGS_AND_STACK_ACCESS_API
  50        select HAVE_DMA_API_DEBUG
  51        select HAVE_KERNEL_GZIP
  52        select HAVE_KERNEL_BZIP2
  53        select HAVE_KERNEL_LZMA
  54        select HAVE_KERNEL_XZ
  55        select HAVE_KERNEL_LZO
  56        select HAVE_HW_BREAKPOINT
  57        select HAVE_MIXED_BREAKPOINTS_REGS
  58        select PERF_EVENTS
  59        select HAVE_PERF_EVENTS_NMI
  60        select ANON_INODES
  61        select HAVE_ARCH_KMEMCHECK
  62        select HAVE_USER_RETURN_NOTIFIER
  63        select HAVE_ARCH_JUMP_LABEL
  64        select HAVE_TEXT_POKE_SMP
  65        select HAVE_GENERIC_HARDIRQS
  66        select HAVE_SPARSE_IRQ
  67        select GENERIC_IRQ_PROBE
  68        select GENERIC_PENDING_IRQ if SMP
  69        select USE_GENERIC_SMP_HELPERS if SMP
  70
  71config INSTRUCTION_DECODER
  72        def_bool (KPROBES || PERF_EVENTS)
  73
  74config OUTPUT_FORMAT
  75        string
  76        default "elf32-i386" if X86_32
  77        default "elf64-x86-64" if X86_64
  78
  79config ARCH_DEFCONFIG
  80        string
  81        default "arch/x86/configs/i386_defconfig" if X86_32
  82        default "arch/x86/configs/x86_64_defconfig" if X86_64
  83
  84config GENERIC_CMOS_UPDATE
  85        def_bool y
  86
  87config CLOCKSOURCE_WATCHDOG
  88        def_bool y
  89
  90config GENERIC_CLOCKEVENTS
  91        def_bool y
  92
  93config GENERIC_CLOCKEVENTS_BROADCAST
  94        def_bool y
  95        depends on X86_64 || (X86_32 && X86_LOCAL_APIC)
  96
  97config LOCKDEP_SUPPORT
  98        def_bool y
  99
 100config STACKTRACE_SUPPORT
 101        def_bool y
 102
 103config HAVE_LATENCYTOP_SUPPORT
 104        def_bool y
 105
 106config MMU
 107        def_bool y
 108
 109config ZONE_DMA
 110        def_bool y
 111
 112config SBUS
 113        bool
 114
 115config NEED_DMA_MAP_STATE
 116       def_bool (X86_64 || DMAR || DMA_API_DEBUG)
 117
 118config NEED_SG_DMA_LENGTH
 119        def_bool y
 120
 121config GENERIC_ISA_DMA
 122        def_bool y
 123
 124config GENERIC_IOMAP
 125        def_bool y
 126
 127config GENERIC_BUG
 128        def_bool y
 129        depends on BUG
 130        select GENERIC_BUG_RELATIVE_POINTERS if X86_64
 131
 132config GENERIC_BUG_RELATIVE_POINTERS
 133        bool
 134
 135config GENERIC_HWEIGHT
 136        def_bool y
 137
 138config GENERIC_GPIO
 139        bool
 140
 141config ARCH_MAY_HAVE_PC_FDC
 142        def_bool y
 143
 144config RWSEM_GENERIC_SPINLOCK
 145        def_bool !X86_XADD
 146
 147config RWSEM_XCHGADD_ALGORITHM
 148        def_bool X86_XADD
 149
 150config ARCH_HAS_CPU_IDLE_WAIT
 151        def_bool y
 152
 153config GENERIC_CALIBRATE_DELAY
 154        def_bool y
 155
 156config GENERIC_TIME_VSYSCALL
 157        bool
 158        default X86_64
 159
 160config ARCH_HAS_CPU_RELAX
 161        def_bool y
 162
 163config ARCH_HAS_DEFAULT_IDLE
 164        def_bool y
 165
 166config ARCH_HAS_CACHE_LINE_SIZE
 167        def_bool y
 168
 169config HAVE_SETUP_PER_CPU_AREA
 170        def_bool y
 171
 172config NEED_PER_CPU_EMBED_FIRST_CHUNK
 173        def_bool y
 174
 175config NEED_PER_CPU_PAGE_FIRST_CHUNK
 176        def_bool y
 177
 178config HAVE_CPUMASK_OF_CPU_MAP
 179        def_bool X86_64_SMP
 180
 181config ARCH_HIBERNATION_POSSIBLE
 182        def_bool y
 183
 184config ARCH_SUSPEND_POSSIBLE
 185        def_bool y
 186
 187config ZONE_DMA32
 188        bool
 189        default X86_64
 190
 191config ARCH_POPULATES_NODE_MAP
 192        def_bool y
 193
 194config AUDIT_ARCH
 195        bool
 196        default X86_64
 197
 198config ARCH_SUPPORTS_OPTIMIZED_INLINING
 199        def_bool y
 200
 201config ARCH_SUPPORTS_DEBUG_PAGEALLOC
 202        def_bool y
 203
 204config HAVE_INTEL_TXT
 205        def_bool y
 206        depends on EXPERIMENTAL && DMAR && ACPI
 207
 208config X86_32_SMP
 209        def_bool y
 210        depends on X86_32 && SMP
 211
 212config X86_64_SMP
 213        def_bool y
 214        depends on X86_64 && SMP
 215
 216config X86_HT
 217        def_bool y
 218        depends on SMP
 219
 220config X86_TRAMPOLINE
 221        def_bool y
 222        depends on SMP || (64BIT && ACPI_SLEEP)
 223
 224config X86_32_LAZY_GS
 225        def_bool y
 226        depends on X86_32 && !CC_STACKPROTECTOR
 227
 228config ARCH_HWEIGHT_CFLAGS
 229        string
 230        default "-fcall-saved-ecx -fcall-saved-edx" if X86_32
 231        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
 232
 233config KTIME_SCALAR
 234        def_bool X86_32
 235
 236config ARCH_CPU_PROBE_RELEASE
 237        def_bool y
 238        depends on HOTPLUG_CPU
 239
 240source "init/Kconfig"
 241source "kernel/Kconfig.freezer"
 242
 243menu "Processor type and features"
 244
 245source "kernel/time/Kconfig"
 246
 247config SMP
 248        bool "Symmetric multi-processing support"
 249        ---help---
 250          This enables support for systems with more than one CPU. If you have
 251          a system with only one CPU, like most personal computers, say N. If
 252          you have a system with more than one CPU, say Y.
 253
 254          If you say N here, the kernel will run on single and multiprocessor
 255          machines, but will use only one CPU of a multiprocessor machine. If
 256          you say Y here, the kernel will run on many, but not all,
 257          singleprocessor machines. On a singleprocessor machine, the kernel
 258          will run faster if you say N here.
 259
 260          Note that if you say Y here and choose architecture "586" or
 261          "Pentium" under "Processor family", the kernel will not work on 486
 262          architectures. Similarly, multiprocessor kernels for the "PPro"
 263          architecture may not work on all Pentium based boards.
 264
 265          People using multiprocessor machines who say Y here should also say
 266          Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
 267          Management" code will be disabled if you say Y here.
 268
 269          See also <file:Documentation/i386/IO-APIC.txt>,
 270          <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
 271          <http://www.tldp.org/docs.html#howto>.
 272
 273          If you don't know what to do here, say N.
 274
 275config X86_X2APIC
 276        bool "Support x2apic"
 277        depends on X86_LOCAL_APIC && X86_64 && INTR_REMAP
 278        ---help---
 279          This enables x2apic support on CPUs that have this feature.
 280
 281          This allows 32-bit apic IDs (so it can support very large systems),
 282          and accesses the local apic via MSRs not via mmio.
 283
 284          If you don't know what to do here, say N.
 285
 286config X86_MPPARSE
 287        bool "Enable MPS table" if ACPI
 288        default y
 289        depends on X86_LOCAL_APIC
 290        ---help---
 291          For old smp systems that do not have proper acpi support. Newer systems
 292          (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
 293
 294config X86_BIGSMP
 295        bool "Support for big SMP systems with more than 8 CPUs"
 296        depends on X86_32 && SMP
 297        ---help---
 298          This option is needed for the systems that have more than 8 CPUs
 299
 300if X86_32
 301config X86_EXTENDED_PLATFORM
 302        bool "Support for extended (non-PC) x86 platforms"
 303        default y
 304        ---help---
 305          If you disable this option then the kernel will only support
 306          standard PC platforms. (which covers the vast majority of
 307          systems out there.)
 308
 309          If you enable this option then you'll be able to select support
 310          for the following (non-PC) 32 bit x86 platforms:
 311                AMD Elan
 312                NUMAQ (IBM/Sequent)
 313                RDC R-321x SoC
 314                SGI 320/540 (Visual Workstation)
 315                Summit/EXA (IBM x440)
 316                Unisys ES7000 IA32 series
 317                Moorestown MID devices
 318
 319          If you have one of these systems, or if you want to build a
 320          generic distribution kernel, say Y here - otherwise say N.
 321endif
 322
 323if X86_64
 324config X86_EXTENDED_PLATFORM
 325        bool "Support for extended (non-PC) x86 platforms"
 326        default y
 327        ---help---
 328          If you disable this option then the kernel will only support
 329          standard PC platforms. (which covers the vast majority of
 330          systems out there.)
 331
 332          If you enable this option then you'll be able to select support
 333          for the following (non-PC) 64 bit x86 platforms:
 334                ScaleMP vSMP
 335                SGI Ultraviolet
 336
 337          If you have one of these systems, or if you want to build a
 338          generic distribution kernel, say Y here - otherwise say N.
 339endif
 340# This is an alphabetically sorted list of 64 bit extended platforms
 341# Please maintain the alphabetic order if and when there are additions
 342
 343config X86_VSMP
 344        bool "ScaleMP vSMP"
 345        select PARAVIRT_GUEST
 346        select PARAVIRT
 347        depends on X86_64 && PCI
 348        depends on X86_EXTENDED_PLATFORM
 349        ---help---
 350          Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
 351          supposed to run on these EM64T-based machines.  Only choose this option
 352          if you have one of these machines.
 353
 354config X86_UV
 355        bool "SGI Ultraviolet"
 356        depends on X86_64
 357        depends on X86_EXTENDED_PLATFORM
 358        depends on NUMA
 359        depends on X86_X2APIC
 360        ---help---
 361          This option is needed in order to support SGI Ultraviolet systems.
 362          If you don't have one of these, you should say N here.
 363
 364# Following is an alphabetically sorted list of 32 bit extended platforms
 365# Please maintain the alphabetic order if and when there are additions
 366
 367config X86_ELAN
 368        bool "AMD Elan"
 369        depends on X86_32
 370        depends on X86_EXTENDED_PLATFORM
 371        ---help---
 372          Select this for an AMD Elan processor.
 373
 374          Do not use this option for K6/Athlon/Opteron processors!
 375
 376          If unsure, choose "PC-compatible" instead.
 377
 378config X86_INTEL_CE
 379        bool "CE4100 TV platform"
 380        depends on PCI
 381        depends on PCI_GODIRECT
 382        depends on X86_32
 383        depends on X86_EXTENDED_PLATFORM
 384        select X86_REBOOTFIXUPS
 385        ---help---
 386          Select for the Intel CE media processor (CE4100) SOC.
 387          This option compiles in support for the CE4100 SOC for settop
 388          boxes and media devices.
 389
 390config X86_MRST
 391       bool "Moorestown MID platform"
 392        depends on PCI
 393        depends on PCI_GOANY
 394        depends on X86_32
 395        depends on X86_EXTENDED_PLATFORM
 396        depends on X86_IO_APIC
 397        select APB_TIMER
 398        select I2C
 399        select SPI
 400        select INTEL_SCU_IPC
 401        select X86_PLATFORM_DEVICES
 402        ---help---
 403          Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin
 404          Internet Device(MID) platform. Moorestown consists of two chips:
 405          Lincroft (CPU core, graphics, and memory controller) and Langwell IOH.
 406          Unlike standard x86 PCs, Moorestown does not have many legacy devices
 407          nor standard legacy replacement devices/features. e.g. Moorestown does
 408          not contain i8259, i8254, HPET, legacy BIOS, most of the io ports.
 409
 410config X86_RDC321X
 411        bool "RDC R-321x SoC"
 412        depends on X86_32
 413        depends on X86_EXTENDED_PLATFORM
 414        select M486
 415        select X86_REBOOTFIXUPS
 416        ---help---
 417          This option is needed for RDC R-321x system-on-chip, also known
 418          as R-8610-(G).
 419          If you don't have one of these chips, you should say N here.
 420
 421config X86_32_NON_STANDARD
 422        bool "Support non-standard 32-bit SMP architectures"
 423        depends on X86_32 && SMP
 424        depends on X86_EXTENDED_PLATFORM
 425        ---help---
 426          This option compiles in the NUMAQ, Summit, bigsmp, ES7000, default
 427          subarchitectures.  It is intended for a generic binary kernel.
 428          if you select them all, kernel will probe it one by one. and will
 429          fallback to default.
 430
 431# Alphabetically sorted list of Non standard 32 bit platforms
 432
 433config X86_NUMAQ
 434        bool "NUMAQ (IBM/Sequent)"
 435        depends on X86_32_NON_STANDARD
 436        depends on PCI
 437        select NUMA
 438        select X86_MPPARSE
 439        ---help---
 440          This option is used for getting Linux to run on a NUMAQ (IBM/Sequent)
 441          NUMA multiquad box. This changes the way that processors are
 442          bootstrapped, and uses Clustered Logical APIC addressing mode instead
 443          of Flat Logical.  You will need a new lynxer.elf file to flash your
 444          firmware with - send email to <Martin.Bligh@us.ibm.com>.
 445
 446config X86_SUPPORTS_MEMORY_FAILURE
 447        def_bool y
 448        # MCE code calls memory_failure():
 449        depends on X86_MCE
 450        # On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
 451        depends on !X86_NUMAQ
 452        # On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
 453        depends on X86_64 || !SPARSEMEM
 454        select ARCH_SUPPORTS_MEMORY_FAILURE
 455
 456config X86_VISWS
 457        bool "SGI 320/540 (Visual Workstation)"
 458        depends on X86_32 && PCI && X86_MPPARSE && PCI_GODIRECT
 459        depends on X86_32_NON_STANDARD
 460        ---help---
 461          The SGI Visual Workstation series is an IA32-based workstation
 462          based on SGI systems chips with some legacy PC hardware attached.
 463
 464          Say Y here to create a kernel to run on the SGI 320 or 540.
 465
 466          A kernel compiled for the Visual Workstation will run on general
 467          PCs as well. See <file:Documentation/sgi-visws.txt> for details.
 468
 469config X86_SUMMIT
 470        bool "Summit/EXA (IBM x440)"
 471        depends on X86_32_NON_STANDARD
 472        ---help---
 473          This option is needed for IBM systems that use the Summit/EXA chipset.
 474          In particular, it is needed for the x440.
 475
 476config X86_ES7000
 477        bool "Unisys ES7000 IA32 series"
 478        depends on X86_32_NON_STANDARD && X86_BIGSMP
 479        ---help---
 480          Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
 481          supposed to run on an IA32-based Unisys ES7000 system.
 482
 483config X86_32_IRIS
 484        tristate "Eurobraille/Iris poweroff module"
 485        depends on X86_32
 486        ---help---
 487          The Iris machines from EuroBraille do not have APM or ACPI support
 488          to shut themselves down properly.  A special I/O sequence is
 489          needed to do so, which is what this module does at
 490          kernel shutdown.
 491
 492          This is only for Iris machines from EuroBraille.
 493
 494          If unused, say N.
 495
 496config SCHED_OMIT_FRAME_POINTER
 497        def_bool y
 498        prompt "Single-depth WCHAN output"
 499        depends on X86
 500        ---help---
 501          Calculate simpler /proc/<PID>/wchan values. If this option
 502          is disabled then wchan values will recurse back to the
 503          caller function. This provides more accurate wchan values,
 504          at the expense of slightly more scheduling overhead.
 505
 506          If in doubt, say "Y".
 507
 508menuconfig PARAVIRT_GUEST
 509        bool "Paravirtualized guest support"
 510        ---help---
 511          Say Y here to get to see options related to running Linux under
 512          various hypervisors.  This option alone does not add any kernel code.
 513
 514          If you say N, all options in this submenu will be skipped and disabled.
 515
 516if PARAVIRT_GUEST
 517
 518source "arch/x86/xen/Kconfig"
 519
 520config KVM_CLOCK
 521        bool "KVM paravirtualized clock"
 522        select PARAVIRT
 523        select PARAVIRT_CLOCK
 524        ---help---
 525          Turning on this option will allow you to run a paravirtualized clock
 526          when running over the KVM hypervisor. Instead of relying on a PIT
 527          (or probably other) emulation by the underlying device model, the host
 528          provides the guest with timing infrastructure such as time of day, and
 529          system time
 530
 531config KVM_GUEST
 532        bool "KVM Guest support"
 533        select PARAVIRT
 534        ---help---
 535          This option enables various optimizations for running under the KVM
 536          hypervisor.
 537
 538source "arch/x86/lguest/Kconfig"
 539
 540config PARAVIRT
 541        bool "Enable paravirtualization code"
 542        ---help---
 543          This changes the kernel so it can modify itself when it is run
 544          under a hypervisor, potentially improving performance significantly
 545          over full virtualization.  However, when run without a hypervisor
 546          the kernel is theoretically slower and slightly larger.
 547
 548config PARAVIRT_SPINLOCKS
 549        bool "Paravirtualization layer for spinlocks"
 550        depends on PARAVIRT && SMP && EXPERIMENTAL
 551        ---help---
 552          Paravirtualized spinlocks allow a pvops backend to replace the
 553          spinlock implementation with something virtualization-friendly
 554          (for example, block the virtual CPU rather than spinning).
 555
 556          Unfortunately the downside is an up to 5% performance hit on
 557          native kernels, with various workloads.
 558
 559          If you are unsure how to answer this question, answer N.
 560
 561config PARAVIRT_CLOCK
 562        bool
 563
 564endif
 565
 566config PARAVIRT_DEBUG
 567        bool "paravirt-ops debugging"
 568        depends on PARAVIRT && DEBUG_KERNEL
 569        ---help---
 570          Enable to debug paravirt_ops internals.  Specifically, BUG if
 571          a paravirt_op is missing when it is called.
 572
 573config NO_BOOTMEM
 574        def_bool y
 575
 576config MEMTEST
 577        bool "Memtest"
 578        ---help---
 579          This option adds a kernel parameter 'memtest', which allows memtest
 580          to be set.
 581                memtest=0, mean disabled; -- default
 582                memtest=1, mean do 1 test pattern;
 583                ...
 584                memtest=4, mean do 4 test patterns.
 585          If you are unsure how to answer this question, answer N.
 586
 587config X86_SUMMIT_NUMA
 588        def_bool y
 589        depends on X86_32 && NUMA && X86_32_NON_STANDARD
 590
 591config X86_CYCLONE_TIMER
 592        def_bool y
 593        depends on X86_32_NON_STANDARD
 594
 595source "arch/x86/Kconfig.cpu"
 596
 597config HPET_TIMER
 598        def_bool X86_64
 599        prompt "HPET Timer Support" if X86_32
 600        ---help---
 601          Use the IA-PC HPET (High Precision Event Timer) to manage
 602          time in preference to the PIT and RTC, if a HPET is
 603          present.
 604          HPET is the next generation timer replacing legacy 8254s.
 605          The HPET provides a stable time base on SMP
 606          systems, unlike the TSC, but it is more expensive to access,
 607          as it is off-chip.  You can find the HPET spec at
 608          <http://www.intel.com/hardwaredesign/hpetspec_1.pdf>.
 609
 610          You can safely choose Y here.  However, HPET will only be
 611          activated if the platform and the BIOS support this feature.
 612          Otherwise the 8254 will be used for timing services.
 613
 614          Choose N to continue using the legacy 8254 timer.
 615
 616config HPET_EMULATE_RTC
 617        def_bool y
 618        depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
 619
 620config APB_TIMER
 621       def_bool y if MRST
 622       prompt "Langwell APB Timer Support" if X86_MRST
 623       help
 624         APB timer is the replacement for 8254, HPET on X86 MID platforms.
 625         The APBT provides a stable time base on SMP
 626         systems, unlike the TSC, but it is more expensive to access,
 627         as it is off-chip. APB timers are always running regardless of CPU
 628         C states, they are used as per CPU clockevent device when possible.
 629
 630# Mark as expert because too many people got it wrong.
 631# The code disables itself when not needed.
 632config DMI
 633        default y
 634        bool "Enable DMI scanning" if EXPERT
 635        ---help---
 636          Enabled scanning of DMI to identify machine quirks. Say Y
 637          here unless you have verified that your setup is not
 638          affected by entries in the DMI blacklist. Required by PNP
 639          BIOS code.
 640
 641config GART_IOMMU
 642        bool "GART IOMMU support" if EXPERT
 643        default y
 644        select SWIOTLB
 645        depends on X86_64 && PCI && AMD_NB
 646        ---help---
 647          Support for full DMA access of devices with 32bit memory access only
 648          on systems with more than 3GB. This is usually needed for USB,
 649          sound, many IDE/SATA chipsets and some other devices.
 650          Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
 651          based hardware IOMMU and a software bounce buffer based IOMMU used
 652          on Intel systems and as fallback.
 653          The code is only active when needed (enough memory and limited
 654          device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
 655          too.
 656
 657config CALGARY_IOMMU
 658        bool "IBM Calgary IOMMU support"
 659        select SWIOTLB
 660        depends on X86_64 && PCI && EXPERIMENTAL
 661        ---help---
 662          Support for hardware IOMMUs in IBM's xSeries x366 and x460
 663          systems. Needed to run systems with more than 3GB of memory
 664          properly with 32-bit PCI devices that do not support DAC
 665          (Double Address Cycle). Calgary also supports bus level
 666          isolation, where all DMAs pass through the IOMMU.  This
 667          prevents them from going anywhere except their intended
 668          destination. This catches hard-to-find kernel bugs and
 669          mis-behaving drivers and devices that do not use the DMA-API
 670          properly to set up their DMA buffers.  The IOMMU can be
 671          turned off at boot time with the iommu=off parameter.
 672          Normally the kernel will make the right choice by itself.
 673          If unsure, say Y.
 674
 675config CALGARY_IOMMU_ENABLED_BY_DEFAULT
 676        def_bool y
 677        prompt "Should Calgary be enabled by default?"
 678        depends on CALGARY_IOMMU
 679        ---help---
 680          Should Calgary be enabled by default? if you choose 'y', Calgary
 681          will be used (if it exists). If you choose 'n', Calgary will not be
 682          used even if it exists. If you choose 'n' and would like to use
 683          Calgary anyway, pass 'iommu=calgary' on the kernel command line.
 684          If unsure, say Y.
 685
 686config AMD_IOMMU
 687        bool "AMD IOMMU support"
 688        select SWIOTLB
 689        select PCI_MSI
 690        depends on X86_64 && PCI && ACPI
 691        ---help---
 692          With this option you can enable support for AMD IOMMU hardware in
 693          your system. An IOMMU is a hardware component which provides
 694          remapping of DMA memory accesses from devices. With an AMD IOMMU you
 695          can isolate the the DMA memory of different devices and protect the
 696          system from misbehaving device drivers or hardware.
 697
 698          You can find out if your system has an AMD IOMMU if you look into
 699          your BIOS for an option to enable it or if you have an IVRS ACPI
 700          table.
 701
 702config AMD_IOMMU_STATS
 703        bool "Export AMD IOMMU statistics to debugfs"
 704        depends on AMD_IOMMU
 705        select DEBUG_FS
 706        ---help---
 707          This option enables code in the AMD IOMMU driver to collect various
 708          statistics about whats happening in the driver and exports that
 709          information to userspace via debugfs.
 710          If unsure, say N.
 711
 712# need this always selected by IOMMU for the VIA workaround
 713config SWIOTLB
 714        def_bool y if X86_64
 715        ---help---
 716          Support for software bounce buffers used on x86-64 systems
 717          which don't have a hardware IOMMU (e.g. the current generation
 718          of Intel's x86-64 CPUs). Using this PCI devices which can only
 719          access 32-bits of memory can be used on systems with more than
 720          3 GB of memory. If unsure, say Y.
 721
 722config IOMMU_HELPER
 723        def_bool (CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU)
 724
 725config IOMMU_API
 726        def_bool (AMD_IOMMU || DMAR)
 727
 728config MAXSMP
 729        bool "Enable Maximum number of SMP Processors and NUMA Nodes"
 730        depends on X86_64 && SMP && DEBUG_KERNEL && EXPERIMENTAL
 731        select CPUMASK_OFFSTACK
 732        ---help---
 733          Enable maximum number of CPUS and NUMA Nodes for this architecture.
 734          If unsure, say N.
 735
 736config NR_CPUS
 737        int "Maximum number of CPUs" if SMP && !MAXSMP
 738        range 2 8 if SMP && X86_32 && !X86_BIGSMP
 739        range 2 512 if SMP && !MAXSMP
 740        default "1" if !SMP
 741        default "4096" if MAXSMP
 742        default "32" if SMP && (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000)
 743        default "8" if SMP
 744        ---help---
 745          This allows you to specify the maximum number of CPUs which this
 746          kernel will support.  The maximum supported value is 512 and the
 747          minimum value which makes sense is 2.
 748
 749          This is purely to save memory - each supported CPU adds
 750          approximately eight kilobytes to the kernel image.
 751
 752config SCHED_SMT
 753        bool "SMT (Hyperthreading) scheduler support"
 754        depends on X86_HT
 755        ---help---
 756          SMT scheduler support improves the CPU scheduler's decision making
 757          when dealing with Intel Pentium 4 chips with HyperThreading at a
 758          cost of slightly increased overhead in some places. If unsure say
 759          N here.
 760
 761config SCHED_MC
 762        def_bool y
 763        prompt "Multi-core scheduler support"
 764        depends on X86_HT
 765        ---help---
 766          Multi-core scheduler support improves the CPU scheduler's decision
 767          making when dealing with multi-core CPU chips at a cost of slightly
 768          increased overhead in some places. If unsure say N here.
 769
 770config IRQ_TIME_ACCOUNTING
 771        bool "Fine granularity task level IRQ time accounting"
 772        default n
 773        ---help---
 774          Select this option to enable fine granularity task irq time
 775          accounting. This is done by reading a timestamp on each
 776          transitions between softirq and hardirq state, so there can be a
 777          small performance impact.
 778
 779          If in doubt, say N here.
 780
 781source "kernel/Kconfig.preempt"
 782
 783config X86_UP_APIC
 784        bool "Local APIC support on uniprocessors"
 785        depends on X86_32 && !SMP && !X86_32_NON_STANDARD
 786        ---help---
 787          A local APIC (Advanced Programmable Interrupt Controller) is an
 788          integrated interrupt controller in the CPU. If you have a single-CPU
 789          system which has a processor with a local APIC, you can say Y here to
 790          enable and use it. If you say Y here even though your machine doesn't
 791          have a local APIC, then the kernel will still run with no slowdown at
 792          all. The local APIC supports CPU-generated self-interrupts (timer,
 793          performance counters), and the NMI watchdog which detects hard
 794          lockups.
 795
 796config X86_UP_IOAPIC
 797        bool "IO-APIC support on uniprocessors"
 798        depends on X86_UP_APIC
 799        ---help---
 800          An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
 801          SMP-capable replacement for PC-style interrupt controllers. Most
 802          SMP systems and many recent uniprocessor systems have one.
 803
 804          If you have a single-CPU system with an IO-APIC, you can say Y here
 805          to use it. If you say Y here even though your machine doesn't have
 806          an IO-APIC, then the kernel will still run with no slowdown at all.
 807
 808config X86_LOCAL_APIC
 809        def_bool y
 810        depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
 811
 812config X86_IO_APIC
 813        def_bool y
 814        depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
 815
 816config X86_VISWS_APIC
 817        def_bool y
 818        depends on X86_32 && X86_VISWS
 819
 820config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
 821        bool "Reroute for broken boot IRQs"
 822        depends on X86_IO_APIC
 823        ---help---
 824          This option enables a workaround that fixes a source of
 825          spurious interrupts. This is recommended when threaded
 826          interrupt handling is used on systems where the generation of
 827          superfluous "boot interrupts" cannot be disabled.
 828
 829          Some chipsets generate a legacy INTx "boot IRQ" when the IRQ
 830          entry in the chipset's IO-APIC is masked (as, e.g. the RT
 831          kernel does during interrupt handling). On chipsets where this
 832          boot IRQ generation cannot be disabled, this workaround keeps
 833          the original IRQ line masked so that only the equivalent "boot
 834          IRQ" is delivered to the CPUs. The workaround also tells the
 835          kernel to set up the IRQ handler on the boot IRQ line. In this
 836          way only one interrupt is delivered to the kernel. Otherwise
 837          the spurious second interrupt may cause the kernel to bring
 838          down (vital) interrupt lines.
 839
 840          Only affects "broken" chipsets. Interrupt sharing may be
 841          increased on these systems.
 842
 843config X86_MCE
 844        bool "Machine Check / overheating reporting"
 845        ---help---
 846          Machine Check support allows the processor to notify the
 847          kernel if it detects a problem (e.g. overheating, data corruption).
 848          The action the kernel takes depends on the severity of the problem,
 849          ranging from warning messages to halting the machine.
 850
 851config X86_MCE_INTEL
 852        def_bool y
 853        prompt "Intel MCE features"
 854        depends on X86_MCE && X86_LOCAL_APIC
 855        ---help---
 856           Additional support for intel specific MCE features such as
 857           the thermal monitor.
 858
 859config X86_MCE_AMD
 860        def_bool y
 861        prompt "AMD MCE features"
 862        depends on X86_MCE && X86_LOCAL_APIC
 863        ---help---
 864           Additional support for AMD specific MCE features such as
 865           the DRAM Error Threshold.
 866
 867config X86_ANCIENT_MCE
 868        bool "Support for old Pentium 5 / WinChip machine checks"
 869        depends on X86_32 && X86_MCE
 870        ---help---
 871          Include support for machine check handling on old Pentium 5 or WinChip
 872          systems. These typically need to be enabled explicitely on the command
 873          line.
 874
 875config X86_MCE_THRESHOLD
 876        depends on X86_MCE_AMD || X86_MCE_INTEL
 877        def_bool y
 878
 879config X86_MCE_INJECT
 880        depends on X86_MCE
 881        tristate "Machine check injector support"
 882        ---help---
 883          Provide support for injecting machine checks for testing purposes.
 884          If you don't know what a machine check is and you don't do kernel
 885          QA it is safe to say n.
 886
 887config X86_THERMAL_VECTOR
 888        def_bool y
 889        depends on X86_MCE_INTEL
 890
 891config VM86
 892        bool "Enable VM86 support" if EXPERT
 893        default y
 894        depends on X86_32
 895        ---help---
 896          This option is required by programs like DOSEMU to run 16-bit legacy
 897          code on X86 processors. It also may be needed by software like
 898          XFree86 to initialize some video cards via BIOS. Disabling this
 899          option saves about 6k.
 900
 901config TOSHIBA
 902        tristate "Toshiba Laptop support"
 903        depends on X86_32
 904        ---help---
 905          This adds a driver to safely access the System Management Mode of
 906          the CPU on Toshiba portables with a genuine Toshiba BIOS. It does
 907          not work on models with a Phoenix BIOS. The System Management Mode
 908          is used to set the BIOS and power saving options on Toshiba portables.
 909
 910          For information on utilities to make use of this driver see the
 911          Toshiba Linux utilities web site at:
 912          <http://www.buzzard.org.uk/toshiba/>.
 913
 914          Say Y if you intend to run this kernel on a Toshiba portable.
 915          Say N otherwise.
 916
 917config I8K
 918        tristate "Dell laptop support"
 919        ---help---
 920          This adds a driver to safely access the System Management Mode
 921          of the CPU on the Dell Inspiron 8000. The System Management Mode
 922          is used to read cpu temperature and cooling fan status and to
 923          control the fans on the I8K portables.
 924
 925          This driver has been tested only on the Inspiron 8000 but it may
 926          also work with other Dell laptops. You can force loading on other
 927          models by passing the parameter `force=1' to the module. Use at
 928          your own risk.
 929
 930          For information on utilities to make use of this driver see the
 931          I8K Linux utilities web site at:
 932          <http://people.debian.org/~dz/i8k/>
 933
 934          Say Y if you intend to run this kernel on a Dell Inspiron 8000.
 935          Say N otherwise.
 936
 937config X86_REBOOTFIXUPS
 938        bool "Enable X86 board specific fixups for reboot"
 939        depends on X86_32
 940        ---help---
 941          This enables chipset and/or board specific fixups to be done
 942          in order to get reboot to work correctly. This is only needed on
 943          some combinations of hardware and BIOS. The symptom, for which
 944          this config is intended, is when reboot ends with a stalled/hung
 945          system.
 946
 947          Currently, the only fixup is for the Geode machines using
 948          CS5530A and CS5536 chipsets and the RDC R-321x SoC.
 949
 950          Say Y if you want to enable the fixup. Currently, it's safe to
 951          enable this option even if you don't need it.
 952          Say N otherwise.
 953
 954config MICROCODE
 955        tristate "/dev/cpu/microcode - microcode support"
 956        select FW_LOADER
 957        ---help---
 958          If you say Y here, you will be able to update the microcode on
 959          certain Intel and AMD processors. The Intel support is for the
 960          IA32 family, e.g. Pentium Pro, Pentium II, Pentium III,
 961          Pentium 4, Xeon etc. The AMD support is for family 0x10 and
 962          0x11 processors, e.g. Opteron, Phenom and Turion 64 Ultra.
 963          You will obviously need the actual microcode binary data itself
 964          which is not shipped with the Linux kernel.
 965
 966          This option selects the general module only, you need to select
 967          at least one vendor specific module as well.
 968
 969          To compile this driver as a module, choose M here: the
 970          module will be called microcode.
 971
 972config MICROCODE_INTEL
 973        bool "Intel microcode patch loading support"
 974        depends on MICROCODE
 975        default MICROCODE
 976        select FW_LOADER
 977        ---help---
 978          This options enables microcode patch loading support for Intel
 979          processors.
 980
 981          For latest news and information on obtaining all the required
 982          Intel ingredients for this driver, check:
 983          <http://www.urbanmyth.org/microcode/>.
 984
 985config MICROCODE_AMD
 986        bool "AMD microcode patch loading support"
 987        depends on MICROCODE
 988        select FW_LOADER
 989        ---help---
 990          If you select this option, microcode patch loading support for AMD
 991          processors will be enabled.
 992
 993config MICROCODE_OLD_INTERFACE
 994        def_bool y
 995        depends on MICROCODE
 996
 997config X86_MSR
 998        tristate "/dev/cpu/*/msr - Model-specific register support"
 999        ---help---
1000          This device gives privileged processes access to the x86
1001          Model-Specific Registers (MSRs).  It is a character device with
1002          major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
1003          MSR accesses are directed to a specific CPU on multi-processor
1004          systems.
1005
1006config X86_CPUID
1007        tristate "/dev/cpu/*/cpuid - CPU information support"
1008        ---help---
1009          This device gives processes access to the x86 CPUID instruction to
1010          be executed on a specific processor.  It is a character device
1011          with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
1012          /dev/cpu/31/cpuid.
1013
1014choice
1015        prompt "High Memory Support"
1016        default HIGHMEM64G if X86_NUMAQ
1017        default HIGHMEM4G
1018        depends on X86_32
1019
1020config NOHIGHMEM
1021        bool "off"
1022        depends on !X86_NUMAQ
1023        ---help---
1024          Linux can use up to 64 Gigabytes of physical memory on x86 systems.
1025          However, the address space of 32-bit x86 processors is only 4
1026          Gigabytes large. That means that, if you have a large amount of
1027          physical memory, not all of it can be "permanently mapped" by the
1028          kernel. The physical memory that's not permanently mapped is called
1029          "high memory".
1030
1031          If you are compiling a kernel which will never run on a machine with
1032          more than 1 Gigabyte total physical RAM, answer "off" here (default
1033          choice and suitable for most users). This will result in a "3GB/1GB"
1034          split: 3GB are mapped so that each process sees a 3GB virtual memory
1035          space and the remaining part of the 4GB virtual memory space is used
1036          by the kernel to permanently map as much physical memory as
1037          possible.
1038
1039          If the machine has between 1 and 4 Gigabytes physical RAM, then
1040          answer "4GB" here.
1041
1042          If more than 4 Gigabytes is used then answer "64GB" here. This
1043          selection turns Intel PAE (Physical Address Extension) mode on.
1044          PAE implements 3-level paging on IA32 processors. PAE is fully
1045          supported by Linux, PAE mode is implemented on all recent Intel
1046          processors (Pentium Pro and better). NOTE: If you say "64GB" here,
1047          then the kernel will not boot on CPUs that don't support PAE!
1048
1049          The actual amount of total physical memory will either be
1050          auto detected or can be forced by using a kernel command line option
1051          such as "mem=256M". (Try "man bootparam" or see the documentation of
1052          your boot loader (lilo or loadlin) about how to pass options to the
1053          kernel at boot time.)
1054
1055          If unsure, say "off".
1056
1057config HIGHMEM4G
1058        bool "4GB"
1059        depends on !X86_NUMAQ
1060        ---help---
1061          Select this if you have a 32-bit processor and between 1 and 4
1062          gigabytes of physical RAM.
1063
1064config HIGHMEM64G
1065        bool "64GB"
1066        depends on !M386 && !M486
1067        select X86_PAE
1068        ---help---
1069          Select this if you have a 32-bit processor and more than 4
1070          gigabytes of physical RAM.
1071
1072endchoice
1073
1074choice
1075        depends on EXPERIMENTAL
1076        prompt "Memory split" if EXPERT
1077        default VMSPLIT_3G
1078        depends on X86_32
1079        ---help---
1080          Select the desired split between kernel and user memory.
1081
1082          If the address range available to the kernel is less than the
1083          physical memory installed, the remaining memory will be available
1084          as "high memory". Accessing high memory is a little more costly
1085          than low memory, as it needs to be mapped into the kernel first.
1086          Note that increasing the kernel address space limits the range
1087          available to user programs, making the address space there
1088          tighter.  Selecting anything other than the default 3G/1G split
1089          will also likely make your kernel incompatible with binary-only
1090          kernel modules.
1091
1092          If you are not absolutely sure what you are doing, leave this
1093          option alone!
1094
1095        config VMSPLIT_3G
1096                bool "3G/1G user/kernel split"
1097        config VMSPLIT_3G_OPT
1098                depends on !X86_PAE
1099                bool "3G/1G user/kernel split (for full 1G low memory)"
1100        config VMSPLIT_2G
1101                bool "2G/2G user/kernel split"
1102        config VMSPLIT_2G_OPT
1103                depends on !X86_PAE
1104                bool "2G/2G user/kernel split (for full 2G low memory)"
1105        config VMSPLIT_1G
1106                bool "1G/3G user/kernel split"
1107endchoice
1108
1109config PAGE_OFFSET
1110        hex
1111        default 0xB0000000 if VMSPLIT_3G_OPT
1112        default 0x80000000 if VMSPLIT_2G
1113        default 0x78000000 if VMSPLIT_2G_OPT
1114        default 0x40000000 if VMSPLIT_1G
1115        default 0xC0000000
1116        depends on X86_32
1117
1118config HIGHMEM
1119        def_bool y
1120        depends on X86_32 && (HIGHMEM64G || HIGHMEM4G)
1121
1122config X86_PAE
1123        bool "PAE (Physical Address Extension) Support"
1124        depends on X86_32 && !HIGHMEM4G
1125        ---help---
1126          PAE is required for NX support, and furthermore enables
1127          larger swapspace support for non-overcommit purposes. It
1128          has the cost of more pagetable lookup overhead, and also
1129          consumes more pagetable space per process.
1130
1131config ARCH_PHYS_ADDR_T_64BIT
1132        def_bool X86_64 || X86_PAE
1133
1134config ARCH_DMA_ADDR_T_64BIT
1135        def_bool X86_64 || HIGHMEM64G
1136
1137config DIRECT_GBPAGES
1138        bool "Enable 1GB pages for kernel pagetables" if EXPERT
1139        default y
1140        depends on X86_64
1141        ---help---
1142          Allow the kernel linear mapping to use 1GB pages on CPUs that
1143          support it. This can improve the kernel's performance a tiny bit by
1144          reducing TLB pressure. If in doubt, say "Y".
1145
1146# Common NUMA Features
1147config NUMA
1148        bool "Numa Memory Allocation and Scheduler Support"
1149        depends on SMP
1150        depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL)
1151        default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP)
1152        ---help---
1153          Enable NUMA (Non Uniform Memory Access) support.
1154
1155          The kernel will try to allocate memory used by a CPU on the
1156          local memory controller of the CPU and add some more
1157          NUMA awareness to the kernel.
1158
1159          For 64-bit this is recommended if the system is Intel Core i7
1160          (or later), AMD Opteron, or EM64T NUMA.
1161
1162          For 32-bit this is only needed on (rare) 32-bit-only platforms
1163          that support NUMA topologies, such as NUMAQ / Summit, or if you
1164          boot a 32-bit kernel on a 64-bit NUMA platform.
1165
1166          Otherwise, you should say N.
1167
1168comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
1169        depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)
1170
1171config AMD_NUMA
1172        def_bool y
1173        prompt "Old style AMD Opteron NUMA detection"
1174        depends on X86_64 && NUMA && PCI
1175        ---help---
1176          Enable AMD NUMA node topology detection.  You should say Y here if
1177          you have a multi processor AMD system. This uses an old method to
1178          read the NUMA configuration directly from the builtin Northbridge
1179          of Opteron. It is recommended to use X86_64_ACPI_NUMA instead,
1180          which also takes priority if both are compiled in.
1181
1182config X86_64_ACPI_NUMA
1183        def_bool y
1184        prompt "ACPI NUMA detection"
1185        depends on X86_64 && NUMA && ACPI && PCI
1186        select ACPI_NUMA
1187        ---help---
1188          Enable ACPI SRAT based node topology detection.
1189
1190# Some NUMA nodes have memory ranges that span
1191# other nodes.  Even though a pfn is valid and
1192# between a node's start and end pfns, it may not
1193# reside on that node.  See memmap_init_zone()
1194# for details.
1195config NODES_SPAN_OTHER_NODES
1196        def_bool y
1197        depends on X86_64_ACPI_NUMA
1198
1199config NUMA_EMU
1200        bool "NUMA emulation"
1201        depends on X86_64 && NUMA
1202        ---help---
1203          Enable NUMA emulation. A flat machine will be split
1204          into virtual nodes when booted with "numa=fake=N", where N is the
1205          number of nodes. This is only useful for debugging.
1206
1207config NODES_SHIFT
1208        int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
1209        range 1 10
1210        default "10" if MAXSMP
1211        default "6" if X86_64
1212        default "4" if X86_NUMAQ
1213        default "3"
1214        depends on NEED_MULTIPLE_NODES
1215        ---help---
1216          Specify the maximum number of NUMA Nodes available on the target
1217          system.  Increases memory reserved to accommodate various tables.
1218
1219config HAVE_ARCH_BOOTMEM
1220        def_bool y
1221        depends on X86_32 && NUMA
1222
1223config ARCH_HAVE_MEMORY_PRESENT
1224        def_bool y
1225        depends on X86_32 && DISCONTIGMEM
1226
1227config NEED_NODE_MEMMAP_SIZE
1228        def_bool y
1229        depends on X86_32 && (DISCONTIGMEM || SPARSEMEM)
1230
1231config HAVE_ARCH_ALLOC_REMAP
1232        def_bool y
1233        depends on X86_32 && NUMA
1234
1235config ARCH_FLATMEM_ENABLE
1236        def_bool y
1237        depends on X86_32 && ARCH_SELECT_MEMORY_MODEL && !NUMA
1238
1239config ARCH_DISCONTIGMEM_ENABLE
1240        def_bool y
1241        depends on NUMA && X86_32
1242
1243config ARCH_DISCONTIGMEM_DEFAULT
1244        def_bool y
1245        depends on NUMA && X86_32
1246
1247config ARCH_PROC_KCORE_TEXT
1248        def_bool y
1249        depends on X86_64 && PROC_KCORE
1250
1251config ARCH_SPARSEMEM_DEFAULT
1252        def_bool y
1253        depends on X86_64
1254
1255config ARCH_SPARSEMEM_ENABLE
1256        def_bool y
1257        depends on X86_64 || NUMA || (EXPERIMENTAL && X86_32) || X86_32_NON_STANDARD
1258        select SPARSEMEM_STATIC if X86_32
1259        select SPARSEMEM_VMEMMAP_ENABLE if X86_64
1260
1261config ARCH_SELECT_MEMORY_MODEL
1262        def_bool y
1263        depends on ARCH_SPARSEMEM_ENABLE
1264
1265config ARCH_MEMORY_PROBE
1266        def_bool X86_64
1267        depends on MEMORY_HOTPLUG
1268
1269config ILLEGAL_POINTER_VALUE
1270       hex
1271       default 0 if X86_32
1272       default 0xdead000000000000 if X86_64
1273
1274source "mm/Kconfig"
1275
1276config HIGHPTE
1277        bool "Allocate 3rd-level pagetables from highmem"
1278        depends on HIGHMEM
1279        ---help---
1280          The VM uses one page table entry for each page of physical memory.
1281          For systems with a lot of RAM, this can be wasteful of precious
1282          low memory.  Setting this option will put user-space page table
1283          entries in high memory.
1284
1285config X86_CHECK_BIOS_CORRUPTION
1286        bool "Check for low memory corruption"
1287        ---help---
1288          Periodically check for memory corruption in low memory, which
1289          is suspected to be caused by BIOS.  Even when enabled in the
1290          configuration, it is disabled at runtime.  Enable it by
1291          setting "memory_corruption_check=1" on the kernel command
1292          line.  By default it scans the low 64k of memory every 60
1293          seconds; see the memory_corruption_check_size and
1294          memory_corruption_check_period parameters in
1295          Documentation/kernel-parameters.txt to adjust this.
1296
1297          When enabled with the default parameters, this option has
1298          almost no overhead, as it reserves a relatively small amount
1299          of memory and scans it infrequently.  It both detects corruption
1300          and prevents it from affecting the running system.
1301
1302          It is, however, intended as a diagnostic tool; if repeatable
1303          BIOS-originated corruption always affects the same memory,
1304          you can use memmap= to prevent the kernel from using that
1305          memory.
1306
1307config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
1308        bool "Set the default setting of memory_corruption_check"
1309        depends on X86_CHECK_BIOS_CORRUPTION
1310        default y
1311        ---help---
1312          Set whether the default state of memory_corruption_check is
1313          on or off.
1314
1315config X86_RESERVE_LOW
1316        int "Amount of low memory, in kilobytes, to reserve for the BIOS"
1317        default 64
1318        range 4 640
1319        ---help---
1320          Specify the amount of low memory to reserve for the BIOS.
1321
1322          The first page contains BIOS data structures that the kernel
1323          must not use, so that page must always be reserved.
1324
1325          By default we reserve the first 64K of physical RAM, as a
1326          number of BIOSes are known to corrupt that memory range
1327          during events such as suspend/resume or monitor cable
1328          insertion, so it must not be used by the kernel.
1329
1330          You can set this to 4 if you are absolutely sure that you
1331          trust the BIOS to get all its memory reservations and usages
1332          right.  If you know your BIOS have problems beyond the
1333          default 64K area, you can set this to 640 to avoid using the
1334          entire low memory range.
1335
1336          If you have doubts about the BIOS (e.g. suspend/resume does
1337          not work or there's kernel crashes after certain hardware
1338          hotplug events) then you might want to enable
1339          X86_CHECK_BIOS_CORRUPTION=y to allow the kernel to check
1340          typical corruption patterns.
1341
1342          Leave this to the default value of 64 if you are unsure.
1343
1344config MATH_EMULATION
1345        bool
1346        prompt "Math emulation" if X86_32
1347        ---help---
1348          Linux can emulate a math coprocessor (used for floating point
1349          operations) if you don't have one. 486DX and Pentium processors have
1350          a math coprocessor built in, 486SX and 386 do not, unless you added
1351          a 487DX or 387, respectively. (The messages during boot time can
1352          give you some hints here ["man dmesg"].) Everyone needs either a
1353          coprocessor or this emulation.
1354
1355          If you don't have a math coprocessor, you need to say Y here; if you
1356          say Y here even though you have a coprocessor, the coprocessor will
1357          be used nevertheless. (This behavior can be changed with the kernel
1358          command line option "no387", which comes handy if your coprocessor
1359          is broken. Try "man bootparam" or see the documentation of your boot
1360          loader (lilo or loadlin) about how to pass options to the kernel at
1361          boot time.) This means that it is a good idea to say Y here if you
1362          intend to use this kernel on different machines.
1363
1364          More information about the internals of the Linux math coprocessor
1365          emulation can be found in <file:arch/x86/math-emu/README>.
1366
1367          If you are not sure, say Y; apart from resulting in a 66 KB bigger
1368          kernel, it won't hurt.
1369
1370config MTRR
1371        def_bool y
1372        prompt "MTRR (Memory Type Range Register) support" if EXPERT
1373        ---help---
1374          On Intel P6 family processors (Pentium Pro, Pentium II and later)
1375          the Memory Type Range Registers (MTRRs) may be used to control
1376          processor access to memory ranges. This is most useful if you have
1377          a video (VGA) card on a PCI or AGP bus. Enabling write-combining
1378          allows bus write transfers to be combined into a larger transfer
1379          before bursting over the PCI/AGP bus. This can increase performance
1380          of image write operations 2.5 times or more. Saying Y here creates a
1381          /proc/mtrr file which may be used to manipulate your processor's
1382          MTRRs. Typically the X server should use this.
1383
1384          This code has a reasonably generic interface so that similar
1385          control registers on other processors can be easily supported
1386          as well:
1387
1388          The Cyrix 6x86, 6x86MX and M II processors have Address Range
1389          Registers (ARRs) which provide a similar functionality to MTRRs. For
1390          these, the ARRs are used to emulate the MTRRs.
1391          The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
1392          MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
1393          write-combining. All of these processors are supported by this code
1394          and it makes sense to say Y here if you have one of them.
1395
1396          Saying Y here also fixes a problem with buggy SMP BIOSes which only
1397          set the MTRRs for the boot CPU and not for the secondary CPUs. This
1398          can lead to all sorts of problems, so it's good to say Y here.
1399
1400          You can safely say Y even if your machine doesn't have MTRRs, you'll
1401          just add about 9 KB to your kernel.
1402
1403          See <file:Documentation/x86/mtrr.txt> for more information.
1404
1405config MTRR_SANITIZER
1406        def_bool y
1407        prompt "MTRR cleanup support"
1408        depends on MTRR
1409        ---help---
1410          Convert MTRR layout from continuous to discrete, so X drivers can
1411          add writeback entries.
1412
1413          Can be disabled with disable_mtrr_cleanup on the kernel command line.
1414          The largest mtrr entry size for a continuous block can be set with
1415          mtrr_chunk_size.
1416
1417          If unsure, say Y.
1418
1419config MTRR_SANITIZER_ENABLE_DEFAULT
1420        int "MTRR cleanup enable value (0-1)"
1421        range 0 1
1422        default "0"
1423        depends on MTRR_SANITIZER
1424        ---help---
1425          Enable mtrr cleanup default value
1426
1427config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
1428        int "MTRR cleanup spare reg num (0-7)"
1429        range 0 7
1430        default "1"
1431        depends on MTRR_SANITIZER
1432        ---help---
1433          mtrr cleanup spare entries default, it can be changed via
1434          mtrr_spare_reg_nr=N on the kernel command line.
1435
1436config X86_PAT
1437        def_bool y
1438        prompt "x86 PAT support" if EXPERT
1439        depends on MTRR
1440        ---help---
1441          Use PAT attributes to setup page level cache control.
1442
1443          PATs are the modern equivalents of MTRRs and are much more
1444          flexible than MTRRs.
1445
1446          Say N here if you see bootup problems (boot crash, boot hang,
1447          spontaneous reboots) or a non-working video driver.
1448
1449          If unsure, say Y.
1450
1451config ARCH_USES_PG_UNCACHED
1452        def_bool y
1453        depends on X86_PAT
1454
1455config EFI
1456        bool "EFI runtime service support"
1457        depends on ACPI
1458        ---help---
1459          This enables the kernel to use EFI runtime services that are
1460          available (such as the EFI variable services).
1461
1462          This option is only useful on systems that have EFI firmware.
1463          In addition, you should use the latest ELILO loader available
1464          at <http://elilo.sourceforge.net> in order to take advantage
1465          of EFI runtime services. However, even with this option, the
1466          resultant kernel should continue to boot on existing non-EFI
1467          platforms.
1468
1469config SECCOMP
1470        def_bool y
1471        prompt "Enable seccomp to safely compute untrusted bytecode"
1472        ---help---
1473          This kernel feature is useful for number crunching applications
1474          that may need to compute untrusted bytecode during their
1475          execution. By using pipes or other transports made available to
1476          the process as file descriptors supporting the read/write
1477          syscalls, it's possible to isolate those applications in
1478          their own address space using seccomp. Once seccomp is
1479          enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
1480          and the task is only allowed to execute a few safe syscalls
1481          defined by each seccomp mode.
1482
1483          If unsure, say Y. Only embedded should say N here.
1484
1485config CC_STACKPROTECTOR
1486        bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
1487        ---help---
1488          This option turns on the -fstack-protector GCC feature. This
1489          feature puts, at the beginning of functions, a canary value on
1490          the stack just before the return address, and validates
1491          the value just before actually returning.  Stack based buffer
1492          overflows (that need to overwrite this return address) now also
1493          overwrite the canary, which gets detected and the attack is then
1494          neutralized via a kernel panic.
1495
1496          This feature requires gcc version 4.2 or above, or a distribution
1497          gcc with the feature backported. Older versions are automatically
1498          detected and for those versions, this configuration option is
1499          ignored. (and a warning is printed during bootup)
1500
1501source kernel/Kconfig.hz
1502
1503config KEXEC
1504        bool "kexec system call"
1505        ---help---
1506          kexec is a system call that implements the ability to shutdown your
1507          current kernel, and to start another kernel.  It is like a reboot
1508          but it is independent of the system firmware.   And like a reboot
1509          you can start any kernel with it, not just Linux.
1510
1511          The name comes from the similarity to the exec system call.
1512
1513          It is an ongoing process to be certain the hardware in a machine
1514          is properly shutdown, so do not be surprised if this code does not
1515          initially work for you.  It may help to enable device hotplugging
1516          support.  As of this writing the exact hardware interface is
1517          strongly in flux, so no good recommendation can be made.
1518
1519config CRASH_DUMP
1520        bool "kernel crash dumps"
1521        depends on X86_64 || (X86_32 && HIGHMEM)
1522        ---help---
1523          Generate crash dump after being started by kexec.
1524          This should be normally only set in special crash dump kernels
1525          which are loaded in the main kernel with kexec-tools into
1526          a specially reserved region and then later executed after
1527          a crash by kdump/kexec. The crash dump kernel must be compiled
1528          to a memory address not used by the main kernel or BIOS using
1529          PHYSICAL_START, or it must be built as a relocatable image
1530          (CONFIG_RELOCATABLE=y).
1531          For more details see Documentation/kdump/kdump.txt
1532
1533config KEXEC_JUMP
1534        bool "kexec jump (EXPERIMENTAL)"
1535        depends on EXPERIMENTAL
1536        depends on KEXEC && HIBERNATION
1537        ---help---
1538          Jump between original kernel and kexeced kernel and invoke
1539          code in physical address mode via KEXEC
1540
1541config PHYSICAL_START
1542        hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
1543        default "0x1000000"
1544        ---help---
1545          This gives the physical address where the kernel is loaded.
1546
1547          If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
1548          bzImage will decompress itself to above physical address and
1549          run from there. Otherwise, bzImage will run from the address where
1550          it has been loaded by the boot loader and will ignore above physical
1551          address.
1552
1553          In normal kdump cases one does not have to set/change this option
1554          as now bzImage can be compiled as a completely relocatable image
1555          (CONFIG_RELOCATABLE=y) and be used to load and run from a different
1556          address. This option is mainly useful for the folks who don't want
1557          to use a bzImage for capturing the crash dump and want to use a
1558          vmlinux instead. vmlinux is not relocatable hence a kernel needs
1559          to be specifically compiled to run from a specific memory area
1560          (normally a reserved region) and this option comes handy.
1561
1562          So if you are using bzImage for capturing the crash dump,
1563          leave the value here unchanged to 0x1000000 and set
1564          CONFIG_RELOCATABLE=y.  Otherwise if you plan to use vmlinux
1565          for capturing the crash dump change this value to start of
1566          the reserved region.  In other words, it can be set based on
1567          the "X" value as specified in the "crashkernel=YM@XM"
1568          command line boot parameter passed to the panic-ed
1569          kernel. Please take a look at Documentation/kdump/kdump.txt
1570          for more details about crash dumps.
1571
1572          Usage of bzImage for capturing the crash dump is recommended as
1573          one does not have to build two kernels. Same kernel can be used
1574          as production kernel and capture kernel. Above option should have
1575          gone away after relocatable bzImage support is introduced. But it
1576          is present because there are users out there who continue to use
1577          vmlinux for dump capture. This option should go away down the
1578          line.
1579
1580          Don't change this unless you know what you are doing.
1581
1582config RELOCATABLE
1583        bool "Build a relocatable kernel"
1584        default y
1585        ---help---
1586          This builds a kernel image that retains relocation information
1587          so it can be loaded someplace besides the default 1MB.
1588          The relocations tend to make the kernel binary about 10% larger,
1589          but are discarded at runtime.
1590
1591          One use is for the kexec on panic case where the recovery kernel
1592          must live at a different physical address than the primary
1593          kernel.
1594
1595          Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
1596          it has been loaded at and the compile time physical address
1597          (CONFIG_PHYSICAL_START) is ignored.
1598
1599# Relocation on x86-32 needs some additional build support
1600config X86_NEED_RELOCS
1601        def_bool y
1602        depends on X86_32 && RELOCATABLE
1603
1604config PHYSICAL_ALIGN
1605        hex "Alignment value to which kernel should be aligned" if X86_32
1606        default "0x1000000"
1607        range 0x2000 0x1000000
1608        ---help---
1609          This value puts the alignment restrictions on physical address
1610          where kernel is loaded and run from. Kernel is compiled for an
1611          address which meets above alignment restriction.
1612
1613          If bootloader loads the kernel at a non-aligned address and
1614          CONFIG_RELOCATABLE is set, kernel will move itself to nearest
1615          address aligned to above value and run from there.
1616
1617          If bootloader loads the kernel at a non-aligned address and
1618          CONFIG_RELOCATABLE is not set, kernel will ignore the run time
1619          load address and decompress itself to the address it has been
1620          compiled for and run from there. The address for which kernel is
1621          compiled already meets above alignment restrictions. Hence the
1622          end result is that kernel runs from a physical address meeting
1623          above alignment restrictions.
1624
1625          Don't change this unless you know what you are doing.
1626
1627config HOTPLUG_CPU
1628        bool "Support for hot-pluggable CPUs"
1629        depends on SMP && HOTPLUG
1630        ---help---
1631          Say Y here to allow turning CPUs off and on. CPUs can be
1632          controlled through /sys/devices/system/cpu.
1633          ( Note: power management support will enable this option
1634            automatically on SMP systems. )
1635          Say N if you want to disable CPU hotplug.
1636
1637config COMPAT_VDSO
1638        def_bool y
1639        prompt "Compat VDSO support"
1640        depends on X86_32 || IA32_EMULATION
1641        ---help---
1642          Map the 32-bit VDSO to the predictable old-style address too.
1643
1644          Say N here if you are running a sufficiently recent glibc
1645          version (2.3.3 or later), to remove the high-mapped
1646          VDSO mapping and to exclusively use the randomized VDSO.
1647
1648          If unsure, say Y.
1649
1650config CMDLINE_BOOL
1651        bool "Built-in kernel command line"
1652        ---help---
1653          Allow for specifying boot arguments to the kernel at
1654          build time.  On some systems (e.g. embedded ones), it is
1655          necessary or convenient to provide some or all of the
1656          kernel boot arguments with the kernel itself (that is,
1657          to not rely on the boot loader to provide them.)
1658
1659          To compile command line arguments into the kernel,
1660          set this option to 'Y', then fill in the
1661          the boot arguments in CONFIG_CMDLINE.
1662
1663          Systems with fully functional boot loaders (i.e. non-embedded)
1664          should leave this option set to 'N'.
1665
1666config CMDLINE
1667        string "Built-in kernel command string"
1668        depends on CMDLINE_BOOL
1669        default ""
1670        ---help---
1671          Enter arguments here that should be compiled into the kernel
1672          image and used at boot time.  If the boot loader provides a
1673          command line at boot time, it is appended to this string to
1674          form the full kernel command line, when the system boots.
1675
1676          However, you can use the CONFIG_CMDLINE_OVERRIDE option to
1677          change this behavior.
1678
1679          In most cases, the command line (whether built-in or provided
1680          by the boot loader) should specify the device for the root
1681          file system.
1682
1683config CMDLINE_OVERRIDE
1684        bool "Built-in command line overrides boot loader arguments"
1685        depends on CMDLINE_BOOL
1686        ---help---
1687          Set this option to 'Y' to have the kernel ignore the boot loader
1688          command line, and use ONLY the built-in command line.
1689
1690          This is used to work around broken boot loaders.  This should
1691          be set to 'N' under normal conditions.
1692
1693endmenu
1694
1695config ARCH_ENABLE_MEMORY_HOTPLUG
1696        def_bool y
1697        depends on X86_64 || (X86_32 && HIGHMEM)
1698
1699config ARCH_ENABLE_MEMORY_HOTREMOVE
1700        def_bool y
1701        depends on MEMORY_HOTPLUG
1702
1703config HAVE_ARCH_EARLY_PFN_TO_NID
1704        def_bool X86_64
1705        depends on NUMA
1706
1707config USE_PERCPU_NUMA_NODE_ID
1708        def_bool X86_64
1709        depends on NUMA
1710
1711menu "Power management and ACPI options"
1712
1713config ARCH_HIBERNATION_HEADER
1714        def_bool y
1715        depends on X86_64 && HIBERNATION
1716
1717source "kernel/power/Kconfig"
1718
1719source "drivers/acpi/Kconfig"
1720
1721source "drivers/sfi/Kconfig"
1722
1723config X86_APM_BOOT
1724        def_bool y
1725        depends on APM || APM_MODULE
1726
1727menuconfig APM
1728        tristate "APM (Advanced Power Management) BIOS support"
1729        depends on X86_32 && PM_SLEEP
1730        ---help---
1731          APM is a BIOS specification for saving power using several different
1732          techniques. This is mostly useful for battery powered laptops with
1733          APM compliant BIOSes. If you say Y here, the system time will be
1734          reset after a RESUME operation, the /proc/apm device will provide
1735          battery status information, and user-space programs will receive
1736          notification of APM "events" (e.g. battery status change).
1737
1738          If you select "Y" here, you can disable actual use of the APM
1739          BIOS by passing the "apm=off" option to the kernel at boot time.
1740
1741          Note that the APM support is almost completely disabled for
1742          machines with more than one CPU.
1743
1744          In order to use APM, you will need supporting software. For location
1745          and more information, read <file:Documentation/power/pm.txt> and the
1746          Battery Powered Linux mini-HOWTO, available from
1747          <http://www.tldp.org/docs.html#howto>.
1748
1749          This driver does not spin down disk drives (see the hdparm(8)
1750          manpage ("man 8 hdparm") for that), and it doesn't turn off
1751          VESA-compliant "green" monitors.
1752
1753          This driver does not support the TI 4000M TravelMate and the ACER
1754          486/DX4/75 because they don't have compliant BIOSes. Many "green"
1755          desktop machines also don't have compliant BIOSes, and this driver
1756          may cause those machines to panic during the boot phase.
1757
1758          Generally, if you don't have a battery in your machine, there isn't
1759          much point in using this driver and you should say N. If you get
1760          random kernel OOPSes or reboots that don't seem to be related to
1761          anything, try disabling/enabling this option (or disabling/enabling
1762          APM in your BIOS).
1763
1764          Some other things you should try when experiencing seemingly random,
1765          "weird" problems:
1766
1767          1) make sure that you have enough swap space and that it is
1768          enabled.
1769          2) pass the "no-hlt" option to the kernel
1770          3) switch on floating point emulation in the kernel and pass
1771          the "no387" option to the kernel
1772          4) pass the "floppy=nodma" option to the kernel
1773          5) pass the "mem=4M" option to the kernel (thereby disabling
1774          all but the first 4 MB of RAM)
1775          6) make sure that the CPU is not over clocked.
1776          7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/>
1777          8) disable the cache from your BIOS settings
1778          9) install a fan for the video card or exchange video RAM
1779          10) install a better fan for the CPU
1780          11) exchange RAM chips
1781          12) exchange the motherboard.
1782
1783          To compile this driver as a module, choose M here: the
1784          module will be called apm.
1785
1786if APM
1787
1788config APM_IGNORE_USER_SUSPEND
1789        bool "Ignore USER SUSPEND"
1790        ---help---
1791          This option will ignore USER SUSPEND requests. On machines with a
1792          compliant APM BIOS, you want to say N. However, on the NEC Versa M
1793          series notebooks, it is necessary to say Y because of a BIOS bug.
1794
1795config APM_DO_ENABLE
1796        bool "Enable PM at boot time"
1797        ---help---
1798          Enable APM features at boot time. From page 36 of the APM BIOS
1799          specification: "When disabled, the APM BIOS does not automatically
1800          power manage devices, enter the Standby State, enter the Suspend
1801          State, or take power saving steps in response to CPU Idle calls."
1802          This driver will make CPU Idle calls when Linux is idle (unless this
1803          feature is turned off -- see "Do CPU IDLE calls", below). This
1804          should always save battery power, but more complicated APM features
1805          will be dependent on your BIOS implementation. You may need to turn
1806          this option off if your computer hangs at boot time when using APM
1807          support, or if it beeps continuously instead of suspending. Turn
1808          this off if you have a NEC UltraLite Versa 33/C or a Toshiba
1809          T400CDT. This is off by default since most machines do fine without
1810          this feature.
1811
1812config APM_CPU_IDLE
1813        bool "Make CPU Idle calls when idle"
1814        ---help---
1815          Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
1816          On some machines, this can activate improved power savings, such as
1817          a slowed CPU clock rate, when the machine is idle. These idle calls
1818          are made after the idle loop has run for some length of time (e.g.,
1819          333 mS). On some machines, this will cause a hang at boot time or
1820          whenever the CPU becomes idle. (On machines with more than one CPU,
1821          this option does nothing.)
1822
1823config APM_DISPLAY_BLANK
1824        bool "Enable console blanking using APM"
1825        ---help---
1826          Enable console blanking using the APM. Some laptops can use this to
1827          turn off the LCD backlight when the screen blanker of the Linux
1828          virtual console blanks the screen. Note that this is only used by
1829          the virtual console screen blanker, and won't turn off the backlight
1830          when using the X Window system. This also doesn't have anything to
1831          do with your VESA-compliant power-saving monitor. Further, this
1832          option doesn't work for all laptops -- it might not turn off your
1833          backlight at all, or it might print a lot of errors to the console,
1834          especially if you are using gpm.
1835
1836config APM_ALLOW_INTS
1837        bool "Allow interrupts during APM BIOS calls"
1838        ---help---
1839          Normally we disable external interrupts while we are making calls to
1840          the APM BIOS as a measure to lessen the effects of a badly behaving
1841          BIOS implementation.  The BIOS should reenable interrupts if it
1842          needs to.  Unfortunately, some BIOSes do not -- especially those in
1843          many of the newer IBM Thinkpads.  If you experience hangs when you
1844          suspend, try setting this to Y.  Otherwise, say N.
1845
1846endif # APM
1847
1848source "arch/x86/kernel/cpu/cpufreq/Kconfig"
1849
1850source "drivers/cpuidle/Kconfig"
1851
1852source "drivers/idle/Kconfig"
1853
1854endmenu
1855
1856
1857menu "Bus options (PCI etc.)"
1858
1859config PCI
1860        bool "PCI support"
1861        default y
1862        select ARCH_SUPPORTS_MSI if (X86_LOCAL_APIC && X86_IO_APIC)
1863        ---help---
1864          Find out whether you have a PCI motherboard. PCI is the name of a
1865          bus system, i.e. the way the CPU talks to the other stuff inside
1866          your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
1867          VESA. If you have PCI, say Y, otherwise N.
1868
1869choice
1870        prompt "PCI access mode"
1871        depends on X86_32 && PCI
1872        default PCI_GOANY
1873        ---help---
1874          On PCI systems, the BIOS can be used to detect the PCI devices and
1875          determine their configuration. However, some old PCI motherboards
1876          have BIOS bugs and may crash if this is done. Also, some embedded
1877          PCI-based systems don't have any BIOS at all. Linux can also try to
1878          detect the PCI hardware directly without using the BIOS.
1879
1880          With this option, you can specify how Linux should detect the
1881          PCI devices. If you choose "BIOS", the BIOS will be used,
1882          if you choose "Direct", the BIOS won't be used, and if you
1883          choose "MMConfig", then PCI Express MMCONFIG will be used.
1884          If you choose "Any", the kernel will try MMCONFIG, then the
1885          direct access method and falls back to the BIOS if that doesn't
1886          work. If unsure, go with the default, which is "Any".
1887
1888config PCI_GOBIOS
1889        bool "BIOS"
1890
1891config PCI_GOMMCONFIG
1892        bool "MMConfig"
1893
1894config PCI_GODIRECT
1895        bool "Direct"
1896
1897config PCI_GOOLPC
1898        bool "OLPC XO-1"
1899        depends on OLPC
1900
1901config PCI_GOANY
1902        bool "Any"
1903
1904endchoice
1905
1906config PCI_BIOS
1907        def_bool y
1908        depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY)
1909
1910# x86-64 doesn't support PCI BIOS access from long mode so always go direct.
1911config PCI_DIRECT
1912        def_bool y
1913        depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC))
1914
1915config PCI_MMCONFIG
1916        def_bool y
1917        depends on X86_32 && PCI && (ACPI || SFI) && (PCI_GOMMCONFIG || PCI_GOANY)
1918
1919config PCI_OLPC
1920        def_bool y
1921        depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
1922
1923config PCI_XEN
1924        def_bool y
1925        depends on PCI && XEN
1926        select SWIOTLB_XEN
1927
1928config PCI_DOMAINS
1929        def_bool y
1930        depends on PCI
1931
1932config PCI_MMCONFIG
1933        bool "Support mmconfig PCI config space access"
1934        depends on X86_64 && PCI && ACPI
1935
1936config PCI_CNB20LE_QUIRK
1937        bool "Read CNB20LE Host Bridge Windows" if EXPERT
1938        default n
1939        depends on PCI && EXPERIMENTAL
1940        help
1941          Read the PCI windows out of the CNB20LE host bridge. This allows
1942          PCI hotplug to work on systems with the CNB20LE chipset which do
1943          not have ACPI.
1944
1945          There's no public spec for this chipset, and this functionality
1946          is known to be incomplete.
1947
1948          You should say N unless you know you need this.
1949
1950config DMAR
1951        bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
1952        depends on PCI_MSI && ACPI && EXPERIMENTAL
1953        help
1954          DMA remapping (DMAR) devices support enables independent address
1955          translations for Direct Memory Access (DMA) from devices.
1956          These DMA remapping devices are reported via ACPI tables
1957          and include PCI device scope covered by these DMA
1958          remapping devices.
1959
1960config DMAR_DEFAULT_ON
1961        def_bool y
1962        prompt "Enable DMA Remapping Devices by default"
1963        depends on DMAR
1964        help
1965          Selecting this option will enable a DMAR device at boot time if
1966          one is found. If this option is not selected, DMAR support can
1967          be enabled by passing intel_iommu=on to the kernel. It is
1968          recommended you say N here while the DMAR code remains
1969          experimental.
1970
1971config DMAR_BROKEN_GFX_WA
1972        bool "Workaround broken graphics drivers (going away soon)"
1973        depends on DMAR && BROKEN
1974        ---help---
1975          Current Graphics drivers tend to use physical address
1976          for DMA and avoid using DMA APIs. Setting this config
1977          option permits the IOMMU driver to set a unity map for
1978          all the OS-visible memory. Hence the driver can continue
1979          to use physical addresses for DMA, at least until this
1980          option is removed in the 2.6.32 kernel.
1981
1982config DMAR_FLOPPY_WA
1983        def_bool y
1984        depends on DMAR
1985        ---help---
1986          Floppy disk drivers are known to bypass DMA API calls
1987          thereby failing to work when IOMMU is enabled. This
1988          workaround will setup a 1:1 mapping for the first
1989          16MiB to make floppy (an ISA device) work.
1990
1991config INTR_REMAP
1992        bool "Support for Interrupt Remapping (EXPERIMENTAL)"
1993        depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI && EXPERIMENTAL
1994        ---help---
1995          Supports Interrupt remapping for IO-APIC and MSI devices.
1996          To use x2apic mode in the CPU's which support x2APIC enhancements or
1997          to support platforms with CPU's having > 8 bit APIC ID, say Y.
1998
1999source "drivers/pci/pcie/Kconfig"
2000
2001source "drivers/pci/Kconfig"
2002
2003# x86_64 have no ISA slots, but do have ISA-style DMA.
2004config ISA_DMA_API
2005        def_bool y
2006
2007if X86_32
2008
2009config ISA
2010        bool "ISA support"
2011        ---help---
2012          Find out whether you have ISA slots on your motherboard.  ISA is the
2013          name of a bus system, i.e. the way the CPU talks to the other stuff
2014          inside your box.  Other bus systems are PCI, EISA, MicroChannel
2015          (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
2016          newer boards don't support it.  If you have ISA, say Y, otherwise N.
2017
2018config EISA
2019        bool "EISA support"
2020        depends on ISA
2021        ---help---
2022          The Extended Industry Standard Architecture (EISA) bus was
2023          developed as an open alternative to the IBM MicroChannel bus.
2024
2025          The EISA bus provided some of the features of the IBM MicroChannel
2026          bus while maintaining backward compatibility with cards made for
2027          the older ISA bus.  The EISA bus saw limited use between 1988 and
2028          1995 when it was made obsolete by the PCI bus.
2029
2030          Say Y here if you are building a kernel for an EISA-based machine.
2031
2032          Otherwise, say N.
2033
2034source "drivers/eisa/Kconfig"
2035
2036config MCA
2037        bool "MCA support"
2038        ---help---
2039          MicroChannel Architecture is found in some IBM PS/2 machines and
2040          laptops.  It is a bus system similar to PCI or ISA. See
2041          <file:Documentation/mca.txt> (and especially the web page given
2042          there) before attempting to build an MCA bus kernel.
2043
2044source "drivers/mca/Kconfig"
2045
2046config SCx200
2047        tristate "NatSemi SCx200 support"
2048        ---help---
2049          This provides basic support for National Semiconductor's
2050          (now AMD's) Geode processors.  The driver probes for the
2051          PCI-IDs of several on-chip devices, so its a good dependency
2052          for other scx200_* drivers.
2053
2054          If compiled as a module, the driver is named scx200.
2055
2056config SCx200HR_TIMER
2057        tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
2058        depends on SCx200
2059        default y
2060        ---help---
2061          This driver provides a clocksource built upon the on-chip
2062          27MHz high-resolution timer.  Its also a workaround for
2063          NSC Geode SC-1100's buggy TSC, which loses time when the
2064          processor goes idle (as is done by the scheduler).  The
2065          other workaround is idle=poll boot option.
2066
2067config OLPC
2068        bool "One Laptop Per Child support"
2069        select GPIOLIB
2070        select OLPC_OPENFIRMWARE
2071        depends on !X86_64 && !X86_PAE
2072        ---help---
2073          Add support for detecting the unique features of the OLPC
2074          XO hardware.
2075
2076config OLPC_XO1
2077        tristate "OLPC XO-1 support"
2078        depends on OLPC && MFD_CS5535
2079        ---help---
2080          Add support for non-essential features of the OLPC XO-1 laptop.
2081
2082config OLPC_OPENFIRMWARE
2083        bool "Support for OLPC's Open Firmware"
2084        depends on !X86_64 && !X86_PAE
2085        default n
2086        select OF
2087        help
2088          This option adds support for the implementation of Open Firmware
2089          that is used on the OLPC XO-1 Children's Machine.
2090          If unsure, say N here.
2091
2092config OLPC_OPENFIRMWARE_DT
2093        bool
2094        default y if OLPC_OPENFIRMWARE && PROC_DEVICETREE
2095        select OF_PROMTREE
2096
2097endif # X86_32
2098
2099config AMD_NB
2100        def_bool y
2101        depends on CPU_SUP_AMD && PCI
2102
2103source "drivers/pcmcia/Kconfig"
2104
2105source "drivers/pci/hotplug/Kconfig"
2106
2107endmenu
2108
2109
2110menu "Executable file formats / Emulations"
2111
2112source "fs/Kconfig.binfmt"
2113
2114config IA32_EMULATION
2115        bool "IA32 Emulation"
2116        depends on X86_64
2117        select COMPAT_BINFMT_ELF
2118        ---help---
2119          Include code to run 32-bit programs under a 64-bit kernel. You should
2120          likely turn this on, unless you're 100% sure that you don't have any
2121          32-bit programs left.
2122
2123config IA32_AOUT
2124        tristate "IA32 a.out support"
2125        depends on IA32_EMULATION
2126        ---help---
2127          Support old a.out binaries in the 32bit emulation.
2128
2129config COMPAT
2130        def_bool y
2131        depends on IA32_EMULATION
2132
2133config COMPAT_FOR_U64_ALIGNMENT
2134        def_bool COMPAT
2135        depends on X86_64
2136
2137config SYSVIPC_COMPAT
2138        def_bool y
2139        depends on COMPAT && SYSVIPC
2140
2141endmenu
2142
2143
2144config HAVE_ATOMIC_IOMAP
2145        def_bool y
2146        depends on X86_32
2147
2148config HAVE_TEXT_POKE_SMP
2149        bool
2150        select STOP_MACHINE if SMP
2151
2152source "net/Kconfig"
2153
2154source "drivers/Kconfig"
2155
2156source "drivers/firmware/Kconfig"
2157
2158source "fs/Kconfig"
2159
2160source "arch/x86/Kconfig.debug"
2161
2162source "security/Kconfig"
2163
2164source "crypto/Kconfig"
2165
2166source "arch/x86/kvm/Kconfig"
2167
2168source "lib/Kconfig"
2169