Kconfig.x86_64 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  1. #
  2. # For a description of the syntax of this configuration file,
  3. # see Documentation/kbuild/kconfig-language.txt.
  4. #
  5. # Note: ISA is disabled and will hopefully never be enabled.
  6. # If you managed to buy an ISA x86-64 box you'll have to fix all the
  7. # ISA drivers you need yourself.
  8. #
  9. mainmenu "Linux Kernel Configuration"
  10. config X86_64
  11. bool
  12. default y
  13. help
  14. Port to the x86-64 architecture. x86-64 is a 64-bit extension to the
  15. classical 32-bit x86 architecture. For details see
  16. <http://www.x86-64.org/>.
  17. config 64BIT
  18. def_bool X86_64
  19. config X86
  20. bool
  21. default y
  22. config GENERIC_TIME
  23. bool
  24. default y
  25. config GENERIC_TIME_VSYSCALL
  26. bool
  27. default y
  28. config GENERIC_CMOS_UPDATE
  29. bool
  30. default y
  31. config CLOCKSOURCE_WATCHDOG
  32. bool
  33. default y
  34. config GENERIC_CLOCKEVENTS
  35. bool
  36. default y
  37. config GENERIC_CLOCKEVENTS_BROADCAST
  38. bool
  39. default y
  40. config ZONE_DMA32
  41. bool
  42. default y
  43. config LOCKDEP_SUPPORT
  44. bool
  45. default y
  46. config STACKTRACE_SUPPORT
  47. bool
  48. default y
  49. config SEMAPHORE_SLEEPERS
  50. bool
  51. default y
  52. config MMU
  53. bool
  54. default y
  55. config ZONE_DMA
  56. bool
  57. default y
  58. config ISA
  59. bool
  60. config SBUS
  61. bool
  62. config GENERIC_HWEIGHT
  63. bool
  64. default y
  65. config GENERIC_ISA_DMA
  66. bool
  67. default y
  68. config GENERIC_IOMAP
  69. bool
  70. default y
  71. config ARCH_MAY_HAVE_PC_FDC
  72. bool
  73. default y
  74. config ARCH_POPULATES_NODE_MAP
  75. def_bool y
  76. config DMI
  77. bool
  78. default y
  79. config AUDIT_ARCH
  80. bool
  81. default y
  82. config GENERIC_BUG
  83. bool
  84. default y
  85. depends on BUG
  86. source "init/Kconfig"
  87. menu "Processor type and features"
  88. source "kernel/time/Kconfig"
  89. choice
  90. prompt "Subarchitecture Type"
  91. default X86_PC
  92. config X86_PC
  93. bool "PC-compatible"
  94. help
  95. Choose this option if your computer is a standard PC or compatible.
  96. config X86_VSMP
  97. bool "Support for ScaleMP vSMP"
  98. depends on X86_64 && PCI
  99. help
  100. Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is
  101. supposed to run on these EM64T-based machines. Only choose this option
  102. if you have one of these machines.
  103. endchoice
  104. source "arch/x86/Kconfig.cpu"
  105. config MICROCODE
  106. tristate "/dev/cpu/microcode - Intel CPU microcode support"
  107. select FW_LOADER
  108. ---help---
  109. If you say Y here the 'File systems' section, you will be
  110. able to update the microcode on Intel processors. You will
  111. obviously need the actual microcode binary data itself which is
  112. not shipped with the Linux kernel.
  113. For latest news and information on obtaining all the required
  114. ingredients for this driver, check:
  115. <http://www.urbanmyth.org/microcode/>.
  116. To compile this driver as a module, choose M here: the
  117. module will be called microcode.
  118. If you use modprobe or kmod you may also want to add the line
  119. 'alias char-major-10-184 microcode' to your /etc/modules.conf file.
  120. config MICROCODE_OLD_INTERFACE
  121. bool
  122. depends on MICROCODE
  123. default y
  124. config X86_MSR
  125. tristate "/dev/cpu/*/msr - Model-specific register support"
  126. help
  127. This device gives privileged processes access to the x86
  128. Model-Specific Registers (MSRs). It is a character device with
  129. major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
  130. MSR accesses are directed to a specific CPU on multi-processor
  131. systems.
  132. config X86_CPUID
  133. tristate "/dev/cpu/*/cpuid - CPU information support"
  134. help
  135. This device gives processes access to the x86 CPUID instruction to
  136. be executed on a specific processor. It is a character device
  137. with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
  138. /dev/cpu/31/cpuid.
  139. config X86_HT
  140. bool
  141. depends on SMP && !MK8
  142. default y
  143. config MATH_EMULATION
  144. bool
  145. config MCA
  146. bool
  147. config EISA
  148. bool
  149. config X86_IO_APIC
  150. bool
  151. default y
  152. config X86_LOCAL_APIC
  153. bool
  154. default y
  155. config MTRR
  156. bool "MTRR (Memory Type Range Register) support"
  157. ---help---
  158. On Intel P6 family processors (Pentium Pro, Pentium II and later)
  159. the Memory Type Range Registers (MTRRs) may be used to control
  160. processor access to memory ranges. This is most useful if you have
  161. a video (VGA) card on a PCI or AGP bus. Enabling write-combining
  162. allows bus write transfers to be combined into a larger transfer
  163. before bursting over the PCI/AGP bus. This can increase performance
  164. of image write operations 2.5 times or more. Saying Y here creates a
  165. /proc/mtrr file which may be used to manipulate your processor's
  166. MTRRs. Typically the X server should use this.
  167. This code has a reasonably generic interface so that similar
  168. control registers on other processors can be easily supported
  169. as well.
  170. Saying Y here also fixes a problem with buggy SMP BIOSes which only
  171. set the MTRRs for the boot CPU and not for the secondary CPUs. This
  172. can lead to all sorts of problems, so it's good to say Y here.
  173. Just say Y here, all x86-64 machines support MTRRs.
  174. See <file:Documentation/mtrr.txt> for more information.
  175. config SMP
  176. bool "Symmetric multi-processing support"
  177. ---help---
  178. This enables support for systems with more than one CPU. If you have
  179. a system with only one CPU, like most personal computers, say N. If
  180. you have a system with more than one CPU, say Y.
  181. If you say N here, the kernel will run on single and multiprocessor
  182. machines, but will use only one CPU of a multiprocessor machine. If
  183. you say Y here, the kernel will run on many, but not all,
  184. singleprocessor machines. On a singleprocessor machine, the kernel
  185. will run faster if you say N here.
  186. If you don't know what to do here, say N.
  187. config SCHED_SMT
  188. bool "SMT (Hyperthreading) scheduler support"
  189. depends on SMP
  190. default n
  191. help
  192. SMT scheduler support improves the CPU scheduler's decision making
  193. when dealing with Intel Pentium 4 chips with HyperThreading at a
  194. cost of slightly increased overhead in some places. If unsure say
  195. N here.
  196. config SCHED_MC
  197. bool "Multi-core scheduler support"
  198. depends on SMP
  199. default y
  200. help
  201. Multi-core scheduler support improves the CPU scheduler's decision
  202. making when dealing with multi-core CPU chips at a cost of slightly
  203. increased overhead in some places. If unsure say N here.
  204. source "kernel/Kconfig.preempt"
  205. config NUMA
  206. bool "Non Uniform Memory Access (NUMA) Support"
  207. depends on SMP
  208. help
  209. Enable NUMA (Non Uniform Memory Access) support. The kernel
  210. will try to allocate memory used by a CPU on the local memory
  211. controller of the CPU and add some more NUMA awareness to the kernel.
  212. This code is recommended on all multiprocessor Opteron systems.
  213. If the system is EM64T, you should say N unless your system is EM64T
  214. NUMA.
  215. config K8_NUMA
  216. bool "Old style AMD Opteron NUMA detection"
  217. depends on X86_64 && NUMA && PCI
  218. default y
  219. help
  220. Enable K8 NUMA node topology detection. You should say Y here if
  221. you have a multi processor AMD K8 system. This uses an old
  222. method to read the NUMA configuration directly from the builtin
  223. Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA
  224. instead, which also takes priority if both are compiled in.
  225. config NODES_SHIFT
  226. int
  227. default "6" if X86_64
  228. depends on NEED_MULTIPLE_NODES
  229. # Dummy CONFIG option to select ACPI_NUMA from drivers/acpi/Kconfig.
  230. config X86_64_ACPI_NUMA
  231. bool "ACPI NUMA detection"
  232. depends on X86_64 && NUMA
  233. select ACPI
  234. select PCI
  235. select ACPI_NUMA
  236. default y
  237. help
  238. Enable ACPI SRAT based node topology detection.
  239. config NUMA_EMU
  240. bool "NUMA emulation"
  241. depends on X86_64 && NUMA
  242. help
  243. Enable NUMA emulation. A flat machine will be split
  244. into virtual nodes when booted with "numa=fake=N", where N is the
  245. number of nodes. This is only useful for debugging.
  246. config ARCH_DISCONTIGMEM_ENABLE
  247. bool
  248. depends on NUMA
  249. default y
  250. config ARCH_DISCONTIGMEM_DEFAULT
  251. def_bool y
  252. depends on NUMA
  253. config ARCH_SPARSEMEM_ENABLE
  254. def_bool y
  255. depends on (NUMA || EXPERIMENTAL)
  256. select SPARSEMEM_VMEMMAP_ENABLE
  257. config ARCH_MEMORY_PROBE
  258. def_bool X86_64
  259. depends on MEMORY_HOTPLUG
  260. config ARCH_FLATMEM_ENABLE
  261. def_bool y
  262. depends on !NUMA
  263. source "mm/Kconfig"
  264. config MEMORY_HOTPLUG_RESERVE
  265. def_bool X86_64
  266. depends on (MEMORY_HOTPLUG && DISCONTIGMEM)
  267. config HAVE_ARCH_EARLY_PFN_TO_NID
  268. def_bool X86_64
  269. depends on NUMA
  270. config OUT_OF_LINE_PFN_TO_PAGE
  271. def_bool X86_64
  272. depends on DISCONTIGMEM
  273. config NR_CPUS
  274. int "Maximum number of CPUs (2-255)"
  275. range 2 255
  276. depends on SMP
  277. default "8"
  278. help
  279. This allows you to specify the maximum number of CPUs which this
  280. kernel will support. Current maximum is 255 CPUs due to
  281. APIC addressing limits. Less depending on the hardware.
  282. This is purely to save memory - each supported CPU requires
  283. memory in the static kernel configuration.
  284. config PHYSICAL_ALIGN
  285. hex
  286. default "0x200000" if X86_64
  287. config HOTPLUG_CPU
  288. bool "Support for suspend on SMP and hot-pluggable CPUs (EXPERIMENTAL)"
  289. depends on SMP && HOTPLUG && EXPERIMENTAL
  290. help
  291. Say Y here to experiment with turning CPUs off and on. CPUs
  292. can be controlled through /sys/devices/system/cpu/cpu#.
  293. This is also required for suspend/hibernation on SMP systems.
  294. Say N if you want to disable CPU hotplug and don't need to
  295. suspend.
  296. config ARCH_ENABLE_MEMORY_HOTPLUG
  297. def_bool y
  298. config HPET_TIMER
  299. bool
  300. default y
  301. help
  302. Use the IA-PC HPET (High Precision Event Timer) to manage
  303. time in preference to the PIT and RTC, if a HPET is
  304. present. The HPET provides a stable time base on SMP
  305. systems, unlike the TSC, but it is more expensive to access,
  306. as it is off-chip. You can find the HPET spec at
  307. <http://www.intel.com/hardwaredesign/hpetspec.htm>.
  308. config HPET_EMULATE_RTC
  309. bool
  310. depends on HPET_TIMER && RTC=y
  311. default y
  312. # Mark as embedded because too many people got it wrong.
  313. # The code disables itself when not needed.
  314. config GART_IOMMU
  315. bool "GART IOMMU support" if EMBEDDED
  316. default y
  317. select SWIOTLB
  318. select AGP
  319. depends on X86_64 && PCI
  320. help
  321. Support for full DMA access of devices with 32bit memory access only
  322. on systems with more than 3GB. This is usually needed for USB,
  323. sound, many IDE/SATA chipsets and some other devices.
  324. Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
  325. based hardware IOMMU and a software bounce buffer based IOMMU used
  326. on Intel systems and as fallback.
  327. The code is only active when needed (enough memory and limited
  328. device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
  329. too.
  330. config CALGARY_IOMMU
  331. bool "IBM Calgary IOMMU support"
  332. select SWIOTLB
  333. depends on X86_64 && PCI && EXPERIMENTAL
  334. help
  335. Support for hardware IOMMUs in IBM's xSeries x366 and x460
  336. systems. Needed to run systems with more than 3GB of memory
  337. properly with 32-bit PCI devices that do not support DAC
  338. (Double Address Cycle). Calgary also supports bus level
  339. isolation, where all DMAs pass through the IOMMU. This
  340. prevents them from going anywhere except their intended
  341. destination. This catches hard-to-find kernel bugs and
  342. mis-behaving drivers and devices that do not use the DMA-API
  343. properly to set up their DMA buffers. The IOMMU can be
  344. turned off at boot time with the iommu=off parameter.
  345. Normally the kernel will make the right choice by itself.
  346. If unsure, say Y.
  347. config CALGARY_IOMMU_ENABLED_BY_DEFAULT
  348. bool "Should Calgary be enabled by default?"
  349. default y
  350. depends on CALGARY_IOMMU
  351. help
  352. Should Calgary be enabled by default? if you choose 'y', Calgary
  353. will be used (if it exists). If you choose 'n', Calgary will not be
  354. used even if it exists. If you choose 'n' and would like to use
  355. Calgary anyway, pass 'iommu=calgary' on the kernel command line.
  356. If unsure, say Y.
  357. # need this always selected by IOMMU for the VIA workaround
  358. config SWIOTLB
  359. bool
  360. help
  361. Support for software bounce buffers used on x86-64 systems
  362. which don't have a hardware IOMMU (e.g. the current generation
  363. of Intel's x86-64 CPUs). Using this PCI devices which can only
  364. access 32-bits of memory can be used on systems with more than
  365. 3 GB of memory. If unsure, say Y.
  366. config X86_MCE
  367. bool "Machine check support" if EMBEDDED
  368. default y
  369. help
  370. Include a machine check error handler to report hardware errors.
  371. This version will require the mcelog utility to decode some
  372. machine check error logs. See
  373. ftp://ftp.x86-64.org/pub/linux/tools/mcelog
  374. config X86_MCE_INTEL
  375. bool "Intel MCE features"
  376. depends on X86_64 && X86_MCE && X86_LOCAL_APIC
  377. default y
  378. help
  379. Additional support for intel specific MCE features such as
  380. the thermal monitor.
  381. config X86_MCE_AMD
  382. bool "AMD MCE features"
  383. depends on X86_64 && X86_MCE && X86_LOCAL_APIC
  384. default y
  385. help
  386. Additional support for AMD specific MCE features such as
  387. the DRAM Error Threshold.
  388. config KEXEC
  389. bool "kexec system call"
  390. help
  391. kexec is a system call that implements the ability to shutdown your
  392. current kernel, and to start another kernel. It is like a reboot
  393. but it is independent of the system firmware. And like a reboot
  394. you can start any kernel with it, not just Linux.
  395. The name comes from the similarity to the exec system call.
  396. It is an ongoing process to be certain the hardware in a machine
  397. is properly shutdown, so do not be surprised if this code does not
  398. initially work for you. It may help to enable device hotplugging
  399. support. As of this writing the exact hardware interface is
  400. strongly in flux, so no good recommendation can be made.
  401. config CRASH_DUMP
  402. bool "kernel crash dumps (EXPERIMENTAL)"
  403. depends on EXPERIMENTAL
  404. help
  405. Generate crash dump after being started by kexec.
  406. This should be normally only set in special crash dump kernels
  407. which are loaded in the main kernel with kexec-tools into
  408. a specially reserved region and then later executed after
  409. a crash by kdump/kexec. The crash dump kernel must be compiled
  410. to a memory address not used by the main kernel or BIOS using
  411. PHYSICAL_START, or it must be built as a relocatable image
  412. (CONFIG_RELOCATABLE=y).
  413. For more details see Documentation/kdump/kdump.txt
  414. config RELOCATABLE
  415. bool "Build a relocatable kernel (EXPERIMENTAL)"
  416. depends on EXPERIMENTAL
  417. help
  418. Builds a relocatable kernel. This enables loading and running
  419. a kernel binary from a different physical address than it has
  420. been compiled for.
  421. One use is for the kexec on panic case where the recovery kernel
  422. must live at a different physical address than the primary
  423. kernel.
  424. Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
  425. it has been loaded at and the compile time physical address
  426. (CONFIG_PHYSICAL_START) is ignored.
  427. config PHYSICAL_START
  428. hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
  429. default "0x200000"
  430. help
  431. This gives the physical address where the kernel is loaded. It
  432. should be aligned to 2MB boundary.
  433. If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
  434. bzImage will decompress itself to above physical address and
  435. run from there. Otherwise, bzImage will run from the address where
  436. it has been loaded by the boot loader and will ignore above physical
  437. address.
  438. In normal kdump cases one does not have to set/change this option
  439. as now bzImage can be compiled as a completely relocatable image
  440. (CONFIG_RELOCATABLE=y) and be used to load and run from a different
  441. address. This option is mainly useful for the folks who don't want
  442. to use a bzImage for capturing the crash dump and want to use a
  443. vmlinux instead.
  444. So if you are using bzImage for capturing the crash dump, leave
  445. the value here unchanged to 0x200000 and set CONFIG_RELOCATABLE=y.
  446. Otherwise if you plan to use vmlinux for capturing the crash dump
  447. change this value to start of the reserved region (Typically 16MB
  448. 0x1000000). In other words, it can be set based on the "X" value as
  449. specified in the "crashkernel=YM@XM" command line boot parameter
  450. passed to the panic-ed kernel. Typically this parameter is set as
  451. crashkernel=64M@16M. Please take a look at
  452. Documentation/kdump/kdump.txt for more details about crash dumps.
  453. Usage of bzImage for capturing the crash dump is advantageous as
  454. one does not have to build two kernels. Same kernel can be used
  455. as production kernel and capture kernel.
  456. Don't change this unless you know what you are doing.
  457. config SECCOMP
  458. bool "Enable seccomp to safely compute untrusted bytecode"
  459. depends on PROC_FS
  460. default y
  461. help
  462. This kernel feature is useful for number crunching applications
  463. that may need to compute untrusted bytecode during their
  464. execution. By using pipes or other transports made available to
  465. the process as file descriptors supporting the read/write
  466. syscalls, it's possible to isolate those applications in
  467. their own address space using seccomp. Once seccomp is
  468. enabled via /proc/<pid>/seccomp, it cannot be disabled
  469. and the task is only allowed to execute a few safe syscalls
  470. defined by each seccomp mode.
  471. If unsure, say Y. Only embedded should say N here.
  472. config CC_STACKPROTECTOR
  473. bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
  474. depends on X86_64 && EXPERIMENTAL
  475. help
  476. This option turns on the -fstack-protector GCC feature. This
  477. feature puts, at the beginning of critical functions, a canary
  478. value on the stack just before the return address, and validates
  479. the value just before actually returning. Stack based buffer
  480. overflows (that need to overwrite this return address) now also
  481. overwrite the canary, which gets detected and the attack is then
  482. neutralized via a kernel panic.
  483. This feature requires gcc version 4.2 or above, or a distribution
  484. gcc with the feature backported. Older versions are automatically
  485. detected and for those versions, this configuration option is ignored.
  486. config CC_STACKPROTECTOR_ALL
  487. bool "Use stack-protector for all functions"
  488. depends on CC_STACKPROTECTOR
  489. help
  490. Normally, GCC only inserts the canary value protection for
  491. functions that use large-ish on-stack buffers. By enabling
  492. this option, GCC will be asked to do this for ALL functions.
  493. source kernel/Kconfig.hz
  494. config K8_NB
  495. def_bool X86_64
  496. depends on AGP_AMD64 || GART_IOMMU || (PCI && NUMA)
  497. endmenu
  498. #
  499. # Use the generic interrupt handling code in kernel/irq/:
  500. #
  501. config GENERIC_HARDIRQS
  502. bool
  503. default y
  504. config GENERIC_IRQ_PROBE
  505. bool
  506. default y
  507. config GENERIC_PENDING_IRQ
  508. bool
  509. depends on GENERIC_HARDIRQS && SMP
  510. default y
  511. source "arch/x86/Kconfig"