Linux 4.6-rc6
[linux/fpc-iii.git] / arch / x86 / Kconfig.cpu
blob3ba5ff2f2d082b3653477141ebbb4409c119f54f
1 # Put here option for CPU selection and depending optimization
2 choice
3         prompt "Processor family"
4         default M686 if X86_32
5         default GENERIC_CPU if X86_64
6         ---help---
7           This is the processor type of your CPU. This information is
8           used for optimizing purposes. In order to compile a kernel
9           that can run on all supported x86 CPU types (albeit not
10           optimally fast), you can specify "486" here.
12           Note that the 386 is no longer supported, this includes
13           AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI 486DLC/DLC2,
14           UMC 486SX-S and the NexGen Nx586.
16           The kernel will not necessarily run on earlier architectures than
17           the one you have chosen, e.g. a Pentium optimized kernel will run on
18           a PPro, but not necessarily on a i486.
20           Here are the settings recommended for greatest speed:
21           - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
22             SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
23           - "586" for generic Pentium CPUs lacking the TSC
24             (time stamp counter) register.
25           - "Pentium-Classic" for the Intel Pentium.
26           - "Pentium-MMX" for the Intel Pentium MMX.
27           - "Pentium-Pro" for the Intel Pentium Pro.
28           - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron.
29           - "Pentium-III" for the Intel Pentium III or Coppermine Celeron.
30           - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
31           - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
32           - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
33           - "Opteron/Athlon64/Hammer/K8" for all K8 and newer AMD CPUs.
34           - "Crusoe" for the Transmeta Crusoe series.
35           - "Efficeon" for the Transmeta Efficeon series.
36           - "Winchip-C6" for original IDT Winchip.
37           - "Winchip-2" for IDT Winchips with 3dNow! capabilities.
38           - "AMD Elan" for the 32-bit AMD Elan embedded CPU.
39           - "GeodeGX1" for Geode GX1 (Cyrix MediaGX).
40           - "Geode GX/LX" For AMD Geode GX and LX processors.
41           - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
42           - "VIA C3-2" for VIA C3-2 "Nehemiah" (model 9 and above).
43           - "VIA C7" for VIA C7.
44           - "Intel P4" for the Pentium 4/Netburst microarchitecture.
45           - "Core 2/newer Xeon" for all core2 and newer Intel CPUs.
46           - "Intel Atom" for the Atom-microarchitecture CPUs.
47           - "Generic-x86-64" for a kernel which runs on any x86-64 CPU.
49           See each option's help text for additional details. If you don't know
50           what to do, choose "486".
52 config M486
53         bool "486"
54         depends on X86_32
55         ---help---
56           Select this for an 486-class CPU such as AMD/Cyrix/IBM/Intel
57           486DX/DX2/DX4 or SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
59 config M586
60         bool "586/K5/5x86/6x86/6x86MX"
61         depends on X86_32
62         ---help---
63           Select this for an 586 or 686 series processor such as the AMD K5,
64           the Cyrix 5x86, 6x86 and 6x86MX.  This choice does not
65           assume the RDTSC (Read Time Stamp Counter) instruction.
67 config M586TSC
68         bool "Pentium-Classic"
69         depends on X86_32
70         ---help---
71           Select this for a Pentium Classic processor with the RDTSC (Read
72           Time Stamp Counter) instruction for benchmarking.
74 config M586MMX
75         bool "Pentium-MMX"
76         depends on X86_32
77         ---help---
78           Select this for a Pentium with the MMX graphics/multimedia
79           extended instructions.
81 config M686
82         bool "Pentium-Pro"
83         depends on X86_32
84         ---help---
85           Select this for Intel Pentium Pro chips.  This enables the use of
86           Pentium Pro extended instructions, and disables the init-time guard
87           against the f00f bug found in earlier Pentiums.
89 config MPENTIUMII
90         bool "Pentium-II/Celeron(pre-Coppermine)"
91         depends on X86_32
92         ---help---
93           Select this for Intel chips based on the Pentium-II and
94           pre-Coppermine Celeron core.  This option enables an unaligned
95           copy optimization, compiles the kernel with optimization flags
96           tailored for the chip, and applies any applicable Pentium Pro
97           optimizations.
99 config MPENTIUMIII
100         bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
101         depends on X86_32
102         ---help---
103           Select this for Intel chips based on the Pentium-III and
104           Celeron-Coppermine core.  This option enables use of some
105           extended prefetch instructions in addition to the Pentium II
106           extensions.
108 config MPENTIUMM
109         bool "Pentium M"
110         depends on X86_32
111         ---help---
112           Select this for Intel Pentium M (not Pentium-4 M)
113           notebook chips.
115 config MPENTIUM4
116         bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon"
117         depends on X86_32
118         ---help---
119           Select this for Intel Pentium 4 chips.  This includes the
120           Pentium 4, Pentium D, P4-based Celeron and Xeon, and
121           Pentium-4 M (not Pentium M) chips.  This option enables compile
122           flags optimized for the chip, uses the correct cache line size, and
123           applies any applicable optimizations.
125           CPUIDs: F[0-6][1-A] (in /proc/cpuinfo show = cpu family : 15 )
127           Select this for:
128             Pentiums (Pentium 4, Pentium D, Celeron, Celeron D) corename:
129                 -Willamette
130                 -Northwood
131                 -Mobile Pentium 4
132                 -Mobile Pentium 4 M
133                 -Extreme Edition (Gallatin)
134                 -Prescott
135                 -Prescott 2M
136                 -Cedar Mill
137                 -Presler
138                 -Smithfiled
139             Xeons (Intel Xeon, Xeon MP, Xeon LV, Xeon MV) corename:
140                 -Foster
141                 -Prestonia
142                 -Gallatin
143                 -Nocona
144                 -Irwindale
145                 -Cranford
146                 -Potomac
147                 -Paxville
148                 -Dempsey
151 config MK6
152         bool "K6/K6-II/K6-III"
153         depends on X86_32
154         ---help---
155           Select this for an AMD K6-family processor.  Enables use of
156           some extended instructions, and passes appropriate optimization
157           flags to GCC.
159 config MK7
160         bool "Athlon/Duron/K7"
161         depends on X86_32
162         ---help---
163           Select this for an AMD Athlon K7-family processor.  Enables use of
164           some extended instructions, and passes appropriate optimization
165           flags to GCC.
167 config MK8
168         bool "Opteron/Athlon64/Hammer/K8"
169         ---help---
170           Select this for an AMD Opteron or Athlon64 Hammer-family processor.
171           Enables use of some extended instructions, and passes appropriate
172           optimization flags to GCC.
174 config MCRUSOE
175         bool "Crusoe"
176         depends on X86_32
177         ---help---
178           Select this for a Transmeta Crusoe processor.  Treats the processor
179           like a 586 with TSC, and sets some GCC optimization flags (like a
180           Pentium Pro with no alignment requirements).
182 config MEFFICEON
183         bool "Efficeon"
184         depends on X86_32
185         ---help---
186           Select this for a Transmeta Efficeon processor.
188 config MWINCHIPC6
189         bool "Winchip-C6"
190         depends on X86_32
191         ---help---
192           Select this for an IDT Winchip C6 chip.  Linux and GCC
193           treat this chip as a 586TSC with some extended instructions
194           and alignment requirements.
196 config MWINCHIP3D
197         bool "Winchip-2/Winchip-2A/Winchip-3"
198         depends on X86_32
199         ---help---
200           Select this for an IDT Winchip-2, 2A or 3.  Linux and GCC
201           treat this chip as a 586TSC with some extended instructions
202           and alignment requirements.  Also enable out of order memory
203           stores for this CPU, which can increase performance of some
204           operations.
206 config MELAN
207         bool "AMD Elan"
208         depends on X86_32
209         ---help---
210           Select this for an AMD Elan processor.
212           Do not use this option for K6/Athlon/Opteron processors!
214 config MGEODEGX1
215         bool "GeodeGX1"
216         depends on X86_32
217         ---help---
218           Select this for a Geode GX1 (Cyrix MediaGX) chip.
220 config MGEODE_LX
221         bool "Geode GX/LX"
222         depends on X86_32
223         ---help---
224           Select this for AMD Geode GX and LX processors.
226 config MCYRIXIII
227         bool "CyrixIII/VIA-C3"
228         depends on X86_32
229         ---help---
230           Select this for a Cyrix III or C3 chip.  Presently Linux and GCC
231           treat this chip as a generic 586. Whilst the CPU is 686 class,
232           it lacks the cmov extension which gcc assumes is present when
233           generating 686 code.
234           Note that Nehemiah (Model 9) and above will not boot with this
235           kernel due to them lacking the 3DNow! instructions used in earlier
236           incarnations of the CPU.
238 config MVIAC3_2
239         bool "VIA C3-2 (Nehemiah)"
240         depends on X86_32
241         ---help---
242           Select this for a VIA C3 "Nehemiah". Selecting this enables usage
243           of SSE and tells gcc to treat the CPU as a 686.
244           Note, this kernel will not boot on older (pre model 9) C3s.
246 config MVIAC7
247         bool "VIA C7"
248         depends on X86_32
249         ---help---
250           Select this for a VIA C7.  Selecting this uses the correct cache
251           shift and tells gcc to treat the CPU as a 686.
253 config MPSC
254         bool "Intel P4 / older Netburst based Xeon"
255         depends on X86_64
256         ---help---
257           Optimize for Intel Pentium 4, Pentium D and older Nocona/Dempsey
258           Xeon CPUs with Intel 64bit which is compatible with x86-64.
259           Note that the latest Xeons (Xeon 51xx and 53xx) are not based on the
260           Netburst core and shouldn't use this option. You can distinguish them
261           using the cpu family field
262           in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one.
264 config MCORE2
265         bool "Core 2/newer Xeon"
266         ---help---
268           Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
269           53xx) CPUs. You can distinguish newer from older Xeons by the CPU
270           family in /proc/cpuinfo. Newer ones have 6 and older ones 15
271           (not a typo)
273 config MATOM
274         bool "Intel Atom"
275         ---help---
277           Select this for the Intel Atom platform. Intel Atom CPUs have an
278           in-order pipelining architecture and thus can benefit from
279           accordingly optimized code. Use a recent GCC with specific Atom
280           support in order to fully benefit from selecting this option.
282 config GENERIC_CPU
283         bool "Generic-x86-64"
284         depends on X86_64
285         ---help---
286           Generic x86-64 CPU.
287           Run equally well on all x86-64 CPUs.
289 endchoice
291 config X86_GENERIC
292         bool "Generic x86 support"
293         depends on X86_32
294         ---help---
295           Instead of just including optimizations for the selected
296           x86 variant (e.g. PII, Crusoe or Athlon), include some more
297           generic optimizations as well. This will make the kernel
298           perform better on x86 CPUs other than that selected.
300           This is really intended for distributors who need more
301           generic optimizations.
304 # Define implied options from the CPU selection here
305 config X86_INTERNODE_CACHE_SHIFT
306         int
307         default "12" if X86_VSMP
308         default X86_L1_CACHE_SHIFT
310 config X86_L1_CACHE_SHIFT
311         int
312         default "7" if MPENTIUM4 || MPSC
313         default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
314         default "4" if MELAN || M486 || MGEODEGX1
315         default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
317 config X86_PPRO_FENCE
318         bool "PentiumPro memory ordering errata workaround"
319         depends on M686 || M586MMX || M586TSC || M586 || M486 || MGEODEGX1
320         ---help---
321           Old PentiumPro multiprocessor systems had errata that could cause
322           memory operations to violate the x86 ordering standard in rare cases.
323           Enabling this option will attempt to work around some (but not all)
324           occurrences of this problem, at the cost of much heavier spinlock and
325           memory barrier operations.
327           If unsure, say n here. Even distro kernels should think twice before
328           enabling this: there are few systems, and an unlikely bug.
330 config X86_F00F_BUG
331         def_bool y
332         depends on M586MMX || M586TSC || M586 || M486
334 config X86_INVD_BUG
335         def_bool y
336         depends on M486
338 config X86_ALIGNMENT_16
339         def_bool y
340         depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
342 config X86_INTEL_USERCOPY
343         def_bool y
344         depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2
346 config X86_USE_PPRO_CHECKSUM
347         def_bool y
348         depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM
350 config X86_USE_3DNOW
351         def_bool y
352         depends on (MCYRIXIII || MK7 || MGEODE_LX) && !UML
355 # P6_NOPs are a relatively minor optimization that require a family >=
356 # 6 processor, except that it is broken on certain VIA chips.
357 # Furthermore, AMD chips prefer a totally different sequence of NOPs
358 # (which work on all CPUs).  In addition, it looks like Virtual PC
359 # does not understand them.
361 # As a result, disallow these if we're not compiling for X86_64 (these
362 # NOPs do work on all x86-64 capable chips); the list of processors in
363 # the right-hand clause are the cores that benefit from this optimization.
365 config X86_P6_NOP
366         def_bool y
367         depends on X86_64
368         depends on (MCORE2 || MPENTIUM4 || MPSC)
370 config X86_TSC
371         def_bool y
372         depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64
374 config X86_CMPXCHG64
375         def_bool y
376         depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM
378 # this should be set for all -march=.. options where the compiler
379 # generates cmov.
380 config X86_CMOV
381         def_bool y
382         depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
384 config X86_MINIMUM_CPU_FAMILY
385         int
386         default "64" if X86_64
387         default "6" if X86_32 && X86_P6_NOP
388         default "5" if X86_32 && X86_CMPXCHG64
389         default "4"
391 config X86_DEBUGCTLMSR
392         def_bool y
393         depends on !(MK6 || MWINCHIPC6 || MWINCHIP3D || MCYRIXIII || M586MMX || M586TSC || M586 || M486) && !UML
395 menuconfig PROCESSOR_SELECT
396         bool "Supported processor vendors" if EXPERT
397         ---help---
398           This lets you choose what x86 vendor support code your kernel
399           will include.
401 config CPU_SUP_INTEL
402         default y
403         bool "Support Intel processors" if PROCESSOR_SELECT
404         ---help---
405           This enables detection, tunings and quirks for Intel processors
407           You need this enabled if you want your kernel to run on an
408           Intel CPU. Disabling this option on other types of CPUs
409           makes the kernel a tiny bit smaller. Disabling it on an Intel
410           CPU might render the kernel unbootable.
412           If unsure, say N.
414 config CPU_SUP_CYRIX_32
415         default y
416         bool "Support Cyrix processors" if PROCESSOR_SELECT
417         depends on M486 || M586 || M586TSC || M586MMX || (EXPERT && !64BIT)
418         ---help---
419           This enables detection, tunings and quirks for Cyrix processors
421           You need this enabled if you want your kernel to run on a
422           Cyrix CPU. Disabling this option on other types of CPUs
423           makes the kernel a tiny bit smaller. Disabling it on a Cyrix
424           CPU might render the kernel unbootable.
426           If unsure, say N.
428 config CPU_SUP_AMD
429         default y
430         bool "Support AMD processors" if PROCESSOR_SELECT
431         ---help---
432           This enables detection, tunings and quirks for AMD processors
434           You need this enabled if you want your kernel to run on an
435           AMD CPU. Disabling this option on other types of CPUs
436           makes the kernel a tiny bit smaller. Disabling it on an AMD
437           CPU might render the kernel unbootable.
439           If unsure, say N.
441 config CPU_SUP_CENTAUR
442         default y
443         bool "Support Centaur processors" if PROCESSOR_SELECT
444         ---help---
445           This enables detection, tunings and quirks for Centaur processors
447           You need this enabled if you want your kernel to run on a
448           Centaur CPU. Disabling this option on other types of CPUs
449           makes the kernel a tiny bit smaller. Disabling it on a Centaur
450           CPU might render the kernel unbootable.
452           If unsure, say N.
454 config CPU_SUP_TRANSMETA_32
455         default y
456         bool "Support Transmeta processors" if PROCESSOR_SELECT
457         depends on !64BIT
458         ---help---
459           This enables detection, tunings and quirks for Transmeta processors
461           You need this enabled if you want your kernel to run on a
462           Transmeta CPU. Disabling this option on other types of CPUs
463           makes the kernel a tiny bit smaller. Disabling it on a Transmeta
464           CPU might render the kernel unbootable.
466           If unsure, say N.
468 config CPU_SUP_UMC_32
469         default y
470         bool "Support UMC processors" if PROCESSOR_SELECT
471         depends on M486 || (EXPERT && !64BIT)
472         ---help---
473           This enables detection, tunings and quirks for UMC processors
475           You need this enabled if you want your kernel to run on a
476           UMC CPU. Disabling this option on other types of CPUs
477           makes the kernel a tiny bit smaller. Disabling it on a UMC
478           CPU might render the kernel unbootable.
480           If unsure, say N.