How to configure the Linux kernel/arch/x86 64

Howto configure the Linux kernel / arch / x86_64


 * For a description of the syntax of this configuration file,
 * see Documentation/kbuild/kconfig-language.txt.
 * Note: ISA is disabled and will hopefully never be enabled.
 * If you managed to buy an ISA x86-64 box you'll have to fix all the
 * ISA drivers you need yourself.
 * If you managed to buy an ISA x86-64 box you'll have to fix all the
 * ISA drivers you need yourself.

"Linux Kernel Configuration"


 * Option: X86_64
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y
 * Port to the x86-64 architecture. x86-64 is a 64-bit extension to the classical 32-bit x86 architecture. For details see .

_bool y
 * Option: 64BIT
 * Kernel Versions: 2.6.15.6 ...


 * Option: X86
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: SEMAPHORE_SLEEPERS
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: MMU
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: ISA
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)


 * Option: SBUS
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)


 * Option: RWSEM_GENERIC_SPINLOCK
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: RWSEM_XCHGADD_ALGORITHM
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)


 * Option: GENERIC_CALIBRATE_DELAY
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: X86_CMPXCHG
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: EARLY_PRINTK
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: GENERIC_ISA_DMA
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: GENERIC_IOMAP
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: ARCH_MAY_HAVE_PC_FDC
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: Howto configure the Linux kernel/init

Processor type and features
"Processor family"
 * default MK8


 * Option: MK8
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) AMD-Opteron/Athlon64
 * Optimize for AMD Opteron/Athlon64/Hammer/K8 CPUs.


 * Option: MPSC
 * Kernel Versions: 2.6.15.6 ...     bool Intel EM64T      help Optimize for Intel Pentium 4 and Xeon CPUs with Intel Extended Memory 64 Technology(EM64T). For details see .


 * Option: GENERIC_CPU
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Generic-x86-64
 * Generic x86-64 CPU.


 * Define implied options from the CPU selection here
 * Define implied options from the CPU selection here


 * Option: X86_L1_CACHE_BYTES
 * Kernel Versions: 2.6.15.6 ...


 * default "128" if GENERIC_CPU || MPSC
 * default "64" if MK8


 * Option: X86_L1_CACHE_SHIFT
 * Kernel Versions: 2.6.15.6 ...


 * default "7" if GENERIC_CPU || MPSC
 * default "6" if MK8


 * Option: X86_TSC
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: X86_GOOD_APIC
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: MICROCODE
 * Kernel Versions: 2.6.15.6 ...
 * (on/off/module) /dev/cpu/microcode - Intel CPU microcode support
 * If you say Y here the 'File systems' section, you will be able to update the microcode on Intel processors. You will obviously need the actual microcode binary data itself which is not shipped with the Linux kernel.
 * For latest news and information on obtaining all the required ingredients for this driver, check: .
 * To compile this driver as a module, choose M here: the module will be called microcode. If you use modprobe or kmod you may also want to add the line 'alias char-major-10-184 microcode' to your /etc/modules.conf file.


 * Option: X86_MSR
 * Kernel Versions: 2.6.15.6 ...
 * (on/off/module) /dev/cpu/*/msr - Model-specific register support
 * This device gives privileged processes access to the x86 Model-Specific Registers (MSRs). It is a character device with major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr. MSR accesses are directed to a specific CPU on multi-processor systems.


 * Option: X86_CPUID
 * Kernel Versions: 2.6.15.6 ...
 * (on/off/module) /dev/cpu/*/cpuid - CPU information support
 * This device gives processes access to the x86 CPUID instruction to be executed on a specific processor. It is a character device with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to /dev/cpu/31/cpuid.


 * Option: X86_HT
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * depends on SMP && !MK8
 * default y


 * Option: MATH_EMULATION
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)


 * Option: MCA
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)


 * Option: EISA
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)


 * Option: X86_IO_APIC
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: X86_LOCAL_APIC
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: MTRR
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) MTRR (Memory Type Range Register) support
 * On Intel P6 family processors (Pentium Pro, Pentium II and later) the Memory Type Range Registers (MTRRs) may be used to control processor access to memory ranges. This is most useful if you have a video (VGA) card on a PCI or AGP bus. Enabling write-combining allows bus write transfers to be combined into a larger transfer before bursting over the PCI/AGP bus. This can increase performance of image write operations 2.5 times or more. Saying Y here creates a /proc/mtrr file which may be used to manipulate your processor's MTRRs. Typically the X server should use this.
 * This code has a reasonably generic interface so that similar control registers on other processors can be easily supported as well.
 * Saying Y here also fixes a problem with buggy SMP BIOSes which only set the MTRRs for the boot CPU and not for the secondary CPUs. This can lead to all sorts of problems, so it's good to say Y here.
 * Just say Y here, all x86-64 machines support MTRRs.
 * See  for more information.


 * Option: SMP
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Symmetric multi-processing support
 * This enables support for systems with more than one CPU. If you have a system with only one CPU, like most personal computers, say N. If you have a system with more than one CPU, say Y.
 * If you say N here, the kernel will run on single and multiprocessor machines, but will use only one CPU of a multiprocessor machine. If you say Y here, the kernel will run on many, but not all, singleprocessor machines. On a singleprocessor machine, the kernel will run faster if you say N here.
 * If you don't know what to do here, say N.


 * Option: SCHED_SMT
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) SMT (Hyperthreading) scheduler support
 * depends on SMP
 * default n
 * SMT scheduler support improves the CPU scheduler's decision making when dealing with Intel Pentium 4 chips with HyperThreading at a cost of slightly increased overhead in some places. If unsure say N here.


 * Option: Howto configure the Linux kernel/kernel.preempt"


 * Option: NUMA
 * Kernel Versions: 2.6.15.6 ...     bool Non Uniform Memory Access (NUMA) Support      depends on SMP      helpEnable NUMA (Non Uniform Memory Access) support. The kernel will try to allocate memory used by a CPU on the local memory controller of the CPU and add some more NUMA awareness to the kernel.This code is recommended on all multiprocessor Opteron systems.If the system is EM64T, you should say N unless your system is EM64T NUMA.


 * Option: K8_NUMA
 * Kernel Versions: 2.6.15.6 ...     bool Old style AMD Opteron NUMA detection      depends on NUMA      default y      helpEnable K8 NUMA node topology detection.  You should say Y here ifyou have a multi processor AMD K8 system. This uses an oldmethod to read the NUMA configurtion directly from the builtinNorthbridge of Opteron. It is recommended to use X86_64_ACPI_NUMAinstead, which also takes priority if both are compiled in.


 * Dummy CONFIG option to select ACPI_NUMA from drivers/acpi]].


 * Option: X86_64_ACPI_NUMA
 * Kernel Versions: 2.6.15.6 ...     bool ACPI NUMA detection      depends on NUMA      select ACPI       select ACPI_NUMA      default y      helpEnable ACPI SRAT based node topology detection.


 * Option: NUMA_EMU
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) NUMA emulation
 * depends on NUMA
 * Enable NUMA emulation. A flat machine will be split into virtual nodes when booted with "numa=fake=N", where N is the number of nodes. This is only useful for debugging.


 * Option: ARCH_DISCONTIGMEM_ENABLE
 * Kernel Versions: 2.6.15.6 ...     bool      depends on NUMA      default y

_bool y
 * Option: ARCH_DISCONTIGMEM_ENABLE
 * Kernel Versions: 2.6.15.6 ...
 * depends on NUMA

_bool y
 * Option: ARCH_DISCONTIGMEM_DEFAULT
 * Kernel Versions: 2.6.15.6 ...
 * depends on NUMA

_bool y
 * Option: ARCH_SPARSEMEM_ENABLE
 * Kernel Versions: 2.6.15.6 ...
 * depends on NUMA

_bool y
 * Option: ARCH_FLATMEM_ENABLE
 * Kernel Versions: 2.6.15.6 ...
 * depends on !NUMA


 * Option: Howto configure the Linux kernel/mm

_bool y
 * Option: HAVE_ARCH_EARLY_PFN_TO_NID
 * Kernel Versions: 2.6.15.6 ...

"Maximum number of CPUs (2-256)" 2 256
 * Option: NR_CPUS
 * Kernel Versions: 2.6.15.6 ...
 * depends on SMP
 * default "8"
 * This allows you to specify the maximum number of CPUs which this kernel will support. Current maximum is 256 CPUs due to APIC addressing limits. Less depending on the hardware.
 * This is purely to save memory - each supported CPU requires memory in the static kernel configuration.

Y here to experiment with turning CPUs off and on. CPUs be controlled through /sys/devices/system/cpu/cpu#. N if you want to disable CPU hotplug.
 * Option: HOTPLUG_CPU
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Support for hot-pluggable CPUs (EXPERIMENTAL)
 * depends on SMP && HOTPLUG && EXPERIMENTAL


 * Option: HPET_TIMER
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y
 * Use the IA-PC HPET (High Precision Event Timer) to manage time in preference to the PIT and RTC, if a HPET is present. The HPET provides a stable time base on SMP systems, unlike the TSC, but it is more expensive to access, as it is off-chip.  You can find the HPET spec at .


 * Option: X86_PM_TIMER
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) PM timer
 * depends on ACPI
 * default y
 * Support the ACPI PM timer for time keeping. This is slow, but is useful on some chipsets without HPET on systems with more than one CPU. On a single processor or single socket multi core system it is normally not required. When the PM timer is active 64bit vsyscalls are disabled and should not be enabled (/proc/sys/kernel/vsyscall64 should not be changed). The kernel selects the PM timer only as a last resort, so it is useful to enable just in case.


 * Option: HPET_EMULATE_RTC
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Provide RTC interrupt
 * depends on HPET_TIMER && RTC=y


 * Option: GART_IOMMU
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) IOMMU support
 * default y
 * depends on PCI
 * Support the IOMMU. Needed to run systems with more than 3GB of memory properly with 32-bit PCI devices that do not support DAC (Double Address Cycle). The IOMMU can be turned off at runtime with the iommu=off parameter. Normally the kernel will take the right choice by itself. This option includes a driver for the AMD Opteron/Athlon64 IOMMU and a software emulation used on some other systems. If unsure, say Y.


 * need this always enabled with GART_IOMMU for the VIA workaround


 * Option: SWIOTLB
 * Kernel Versions: 2.6.15.6 ...     bool      depends on GART_IOMMU      default y


 * Option: DUMMY_IOMMU
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * depends on !GART_IOMMU && !SWIOTLB
 * default y
 * Don't use IOMMU code. This will cause problems when you have more than 4GB of memory and any 32-bit devices. Don't turn on unless you know what you are doing.


 * Option: X86_MCE
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Machine check support if EMBEDDED
 * default y
 * Include a machine check error handler to report hardware errors. This version will require the mcelog utility to decode some  machine check error logs. See  ftp://ftp.x86-64.org/pub/linux/tools/mcelog


 * Option: X86_MCE_INTEL
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Intel MCE features
 * depends on X86_MCE && X86_LOCAL_APIC
 * default y
 * Additional support for intel specific MCE features such as the thermal monitor.


 * Option: X86_MCE_AMD
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) AMD MCE features
 * depends on X86_MCE && X86_LOCAL_APIC
 * default y
 * Additional support for AMD specific MCE features such as the DRAM Error Threshold.

"Physical address where the kernel is loaded" if EMBEDDED
 * Option: PHYSICAL_START
 * Kernel Versions: 2.6.15.6 ...
 * default "0x100000"
 * This gives the physical address where the kernel is loaded. Primarily used in the case of kexec on panic where the fail safe kernel needs to run at a different address than the panic-ed kernel.
 * Don't change this unless you know what you are doing.


 * Option: KEXEC
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) kexec system call (EXPERIMENTAL)
 * depends on EXPERIMENTAL
 * kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot but it is indepedent of the system firmware.   And like a reboot you can start any kernel with it, not just Linux.
 * The name comes from the similarity to the exec system call.
 * It is an ongoing process to be certain the hardware in a machine is properly shutdown, so do not be surprised if this code does not initially work for you. It may help to enable device hotplugging support.  As of this writing the exact hardware interface is strongly in flux, so no good recommendation can be made.


 * Option: SECCOMP
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Enable seccomp to safely compute untrusted bytecode
 * depends on PROC_FS
 * default y
 * This kernel feature is useful for number crunching applications that may need to compute untrusted bytecode during their execution. By using pipes or other transports made available to the process as file descriptors supporting the read/write syscalls, it's possible to isolate those applications in their own address space using seccomp. Once seccomp is enabled via /proc/ /seccomp, it cannot be disabled and the task is only allowed to execute a few safe syscalls defined by each seccomp mode.
 * If unsure, say Y. Only embedded should say N here.


 * Option: Howto configure the Linux kernel/kernel.hz


 * Use the generic interrupt handling code in kernel/irq/:
 * Use the generic interrupt handling code in kernel/irq/:


 * Option: GENERIC_HARDIRQS
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: GENERIC_IRQ_PROBE
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * we have no ISA slots, but we do have ISA-style DMA.


 * Option: ISA_DMA_API
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * default y


 * Option: GENERIC_PENDING_IRQ
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * depends on GENERIC_HARDIRQS && SMP
 * default y

Power management options

 * Option: Howto configure the Linux kernel/kernel/power


 * Option: Howto configure the Linux kernel/drivers/acpi


 * Option: Howto configure the Linux kernel/arch/x86 64/kernel/cpufreq

Bus options (PCI etc.)

 * Option: PCI
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) PCI support


 * x86-64 doesn't support PCI BIOS access from long mode so always go direct.


 * Option: PCI_DIRECT
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * depends on PCI
 * default y


 * Option: PCI_MMCONFIG
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Support mmconfig PCI config space access
 * depends on PCI && ACPI


 * Option: UNORDERED_IO
 * Kernel Versions: 2.6.15.6 ...     bool Unordered IO mapping access      depends on EXPERIMENTAL      help        Use unordered stores to access IO memory mappings in device drivers.Still very experimental. When a driver works on IA64/ppc64/pa-risc it shouldwork with this option, but it makes the drivers behave differentlyfrom i386. Requires that the driver writer used memory barriersproperly.


 * Option: Howto configure the Linux kernel/drivers/pci/pcie


 * Option: Howto configure the Linux kernel/drivers/pci


 * Option: Howto configure the Linux kernel/drivers/pcmcia


 * Option: Howto configure the Linux kernel/drivers/pci/hotplug

Executable file formats / Emulations

 * Option: Howto configure the Linux kernel/fs.binfmt"


 * Option: IA32_EMULATION
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) IA32 Emulation
 * Include code to run 32-bit programs under a 64-bit kernel. You should likely turn this on, unless you're 100% sure that you don't have any 32-bit programs left.


 * Option: IA32_AOUT
 * Kernel Versions: 2.6.15.6 ...     tristate IA32 a.out support      depends on IA32_EMULATION      help        Support old a.out binaries in the 32bit emulation.


 * Option: COMPAT
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * depends on IA32_EMULATION
 * default y


 * Option: SYSVIPC_COMPAT
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * depends on COMPAT && SYSVIPC
 * default y


 * Option: UID16
 * Kernel Versions: 2.6.15.6 ...
 * (on/off)
 * depends on IA32_EMULATION
 * default y


 * Option: Howto configure the Linux kernel/net


 * Option: Howto configure the Linux kernel/drivers


 * Option: Howto configure the Linux kernel/drivers/firmware


 * Option: Howto configure the Linux kernel/fs

Instrumentation Support
depends on EXPERIMENTAL


 * Option: Howto configure the Linux kernel/arch/x86 64/oprofile


 * Option: KPROBES
 * Kernel Versions: 2.6.15.6 ...
 * (on/off) Kprobes (EXPERIMENTAL)
 * Kprobes allows you to trap at almost any kernel address and execute a callback function. register_kprobe establishes a probepoint and specifies the callback.  Kprobes is useful for kernel debugging, non-intrusive instrumentation and testing. If in doubt, say "N".


 * Option: Howto configure the Linux kernel/arch/x86 64.debug"


 * Option: Howto configure the Linux kernel/security


 * Option: Howto configure the Linux kernel/crypto


 * Option: Howto configure the Linux kernel/lib

Linux Kernel Configuration