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