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