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