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