1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun# Select 32 or 64 bit 3*4882a593Smuzhiyunconfig 64BIT 4*4882a593Smuzhiyun bool "64-bit kernel" if "$(ARCH)" = "x86" 5*4882a593Smuzhiyun default "$(ARCH)" != "i386" 6*4882a593Smuzhiyun help 7*4882a593Smuzhiyun Say yes to build a 64-bit kernel - formerly known as x86_64 8*4882a593Smuzhiyun Say no to build a 32-bit kernel - formerly known as i386 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunconfig X86_32 11*4882a593Smuzhiyun def_bool y 12*4882a593Smuzhiyun depends on !64BIT 13*4882a593Smuzhiyun # Options that are inherently 32-bit kernel only: 14*4882a593Smuzhiyun select ARCH_WANT_IPC_PARSE_VERSION 15*4882a593Smuzhiyun select CLKSRC_I8253 16*4882a593Smuzhiyun select CLONE_BACKWARDS 17*4882a593Smuzhiyun select HAVE_DEBUG_STACKOVERFLOW 18*4882a593Smuzhiyun select MODULES_USE_ELF_REL 19*4882a593Smuzhiyun select OLD_SIGACTION 20*4882a593Smuzhiyun select GENERIC_VDSO_32 21*4882a593Smuzhiyun select ARCH_SPLIT_ARG64 22*4882a593Smuzhiyun 23*4882a593Smuzhiyunconfig X86_64 24*4882a593Smuzhiyun def_bool y 25*4882a593Smuzhiyun depends on 64BIT 26*4882a593Smuzhiyun # Options that are inherently 64-bit kernel only: 27*4882a593Smuzhiyun select ARCH_HAS_GIGANTIC_PAGE 28*4882a593Smuzhiyun select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 29*4882a593Smuzhiyun select ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT 30*4882a593Smuzhiyun select ARCH_USE_CMPXCHG_LOCKREF 31*4882a593Smuzhiyun select HAVE_ARCH_SOFT_DIRTY 32*4882a593Smuzhiyun select MODULES_USE_ELF_RELA 33*4882a593Smuzhiyun select NEED_DMA_MAP_STATE 34*4882a593Smuzhiyun select SWIOTLB 35*4882a593Smuzhiyun 36*4882a593Smuzhiyunconfig FORCE_DYNAMIC_FTRACE 37*4882a593Smuzhiyun def_bool y 38*4882a593Smuzhiyun depends on X86_32 39*4882a593Smuzhiyun depends on FUNCTION_TRACER 40*4882a593Smuzhiyun select DYNAMIC_FTRACE 41*4882a593Smuzhiyun help 42*4882a593Smuzhiyun We keep the static function tracing (!DYNAMIC_FTRACE) around 43*4882a593Smuzhiyun in order to test the non static function tracing in the 44*4882a593Smuzhiyun generic code, as other architectures still use it. But we 45*4882a593Smuzhiyun only need to keep it around for x86_64. No need to keep it 46*4882a593Smuzhiyun for x86_32. For x86_32, force DYNAMIC_FTRACE. 47*4882a593Smuzhiyun# 48*4882a593Smuzhiyun# Arch settings 49*4882a593Smuzhiyun# 50*4882a593Smuzhiyun# ( Note that options that are marked 'if X86_64' could in principle be 51*4882a593Smuzhiyun# ported to 32-bit as well. ) 52*4882a593Smuzhiyun# 53*4882a593Smuzhiyunconfig X86 54*4882a593Smuzhiyun def_bool y 55*4882a593Smuzhiyun # 56*4882a593Smuzhiyun # Note: keep this list sorted alphabetically 57*4882a593Smuzhiyun # 58*4882a593Smuzhiyun select ACPI_LEGACY_TABLES_LOOKUP if ACPI 59*4882a593Smuzhiyun select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI 60*4882a593Smuzhiyun select ARCH_32BIT_OFF_T if X86_32 61*4882a593Smuzhiyun select ARCH_CLOCKSOURCE_INIT 62*4882a593Smuzhiyun select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI 63*4882a593Smuzhiyun select ARCH_HAS_DEBUG_VIRTUAL 64*4882a593Smuzhiyun select ARCH_HAS_DEBUG_VM_PGTABLE if !X86_PAE 65*4882a593Smuzhiyun select ARCH_HAS_DEVMEM_IS_ALLOWED 66*4882a593Smuzhiyun select ARCH_HAS_EARLY_DEBUG if KGDB 67*4882a593Smuzhiyun select ARCH_HAS_ELF_RANDOMIZE 68*4882a593Smuzhiyun select ARCH_HAS_FAST_MULTIPLIER 69*4882a593Smuzhiyun select ARCH_HAS_FILTER_PGPROT 70*4882a593Smuzhiyun select ARCH_HAS_FORTIFY_SOURCE 71*4882a593Smuzhiyun select ARCH_HAS_GCOV_PROFILE_ALL 72*4882a593Smuzhiyun select ARCH_HAS_KCOV if X86_64 && STACK_VALIDATION 73*4882a593Smuzhiyun select ARCH_HAS_MEM_ENCRYPT 74*4882a593Smuzhiyun select ARCH_HAS_MEMBARRIER_SYNC_CORE 75*4882a593Smuzhiyun select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 76*4882a593Smuzhiyun select ARCH_HAS_PMEM_API if X86_64 77*4882a593Smuzhiyun select ARCH_HAS_PTE_DEVMAP if X86_64 78*4882a593Smuzhiyun select ARCH_HAS_PTE_SPECIAL 79*4882a593Smuzhiyun select ARCH_HAS_UACCESS_FLUSHCACHE if X86_64 80*4882a593Smuzhiyun select ARCH_HAS_COPY_MC if X86_64 81*4882a593Smuzhiyun select ARCH_HAS_SET_MEMORY 82*4882a593Smuzhiyun select ARCH_HAS_SET_DIRECT_MAP 83*4882a593Smuzhiyun select ARCH_HAS_STRICT_KERNEL_RWX 84*4882a593Smuzhiyun select ARCH_HAS_STRICT_MODULE_RWX 85*4882a593Smuzhiyun select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 86*4882a593Smuzhiyun select ARCH_HAS_SYSCALL_WRAPPER 87*4882a593Smuzhiyun select ARCH_HAS_UBSAN_SANITIZE_ALL 88*4882a593Smuzhiyun select ARCH_HAS_DEBUG_WX 89*4882a593Smuzhiyun select ARCH_HAVE_NMI_SAFE_CMPXCHG 90*4882a593Smuzhiyun select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI 91*4882a593Smuzhiyun select ARCH_MIGHT_HAVE_PC_PARPORT 92*4882a593Smuzhiyun select ARCH_MIGHT_HAVE_PC_SERIO 93*4882a593Smuzhiyun select ARCH_STACKWALK 94*4882a593Smuzhiyun select ARCH_SUPPORTS_ACPI 95*4882a593Smuzhiyun select ARCH_SUPPORTS_ATOMIC_RMW 96*4882a593Smuzhiyun select ARCH_SUPPORTS_NUMA_BALANCING if X86_64 97*4882a593Smuzhiyun select ARCH_SUPPORTS_LTO_CLANG if X86_64 98*4882a593Smuzhiyun select ARCH_SUPPORTS_LTO_CLANG_THIN if X86_64 99*4882a593Smuzhiyun select ARCH_USE_BUILTIN_BSWAP 100*4882a593Smuzhiyun select ARCH_USE_QUEUED_RWLOCKS 101*4882a593Smuzhiyun select ARCH_USE_QUEUED_SPINLOCKS 102*4882a593Smuzhiyun select ARCH_USE_SYM_ANNOTATIONS 103*4882a593Smuzhiyun select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 104*4882a593Smuzhiyun select ARCH_WANT_DEFAULT_BPF_JIT if X86_64 105*4882a593Smuzhiyun select ARCH_WANTS_DYNAMIC_TASK_STRUCT 106*4882a593Smuzhiyun select ARCH_WANT_HUGE_PMD_SHARE 107*4882a593Smuzhiyun select ARCH_WANT_LD_ORPHAN_WARN 108*4882a593Smuzhiyun select ARCH_WANTS_THP_SWAP if X86_64 109*4882a593Smuzhiyun select BUILDTIME_TABLE_SORT 110*4882a593Smuzhiyun select CLKEVT_I8253 111*4882a593Smuzhiyun select CLOCKSOURCE_VALIDATE_LAST_CYCLE 112*4882a593Smuzhiyun select CLOCKSOURCE_WATCHDOG 113*4882a593Smuzhiyun select DCACHE_WORD_ACCESS 114*4882a593Smuzhiyun select EDAC_ATOMIC_SCRUB 115*4882a593Smuzhiyun select EDAC_SUPPORT 116*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 117*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC) 118*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS_MIN_ADJUST 119*4882a593Smuzhiyun select GENERIC_CMOS_UPDATE 120*4882a593Smuzhiyun select GENERIC_CPU_AUTOPROBE 121*4882a593Smuzhiyun select GENERIC_CPU_VULNERABILITIES 122*4882a593Smuzhiyun select GENERIC_EARLY_IOREMAP 123*4882a593Smuzhiyun select GENERIC_ENTRY 124*4882a593Smuzhiyun select GENERIC_FIND_FIRST_BIT 125*4882a593Smuzhiyun select GENERIC_IOMAP 126*4882a593Smuzhiyun select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP 127*4882a593Smuzhiyun select GENERIC_IRQ_MATRIX_ALLOCATOR if X86_LOCAL_APIC 128*4882a593Smuzhiyun select GENERIC_IRQ_MIGRATION if SMP 129*4882a593Smuzhiyun select GENERIC_IRQ_PROBE 130*4882a593Smuzhiyun select GENERIC_IRQ_RESERVATION_MODE 131*4882a593Smuzhiyun select GENERIC_IRQ_SHOW 132*4882a593Smuzhiyun select GENERIC_PENDING_IRQ if SMP 133*4882a593Smuzhiyun select GENERIC_PTDUMP 134*4882a593Smuzhiyun select GENERIC_SMP_IDLE_THREAD 135*4882a593Smuzhiyun select GENERIC_STRNCPY_FROM_USER 136*4882a593Smuzhiyun select GENERIC_STRNLEN_USER 137*4882a593Smuzhiyun select GENERIC_TIME_VSYSCALL 138*4882a593Smuzhiyun select GENERIC_GETTIMEOFDAY 139*4882a593Smuzhiyun select GENERIC_VDSO_TIME_NS 140*4882a593Smuzhiyun select GUP_GET_PTE_LOW_HIGH if X86_PAE 141*4882a593Smuzhiyun select HARDIRQS_SW_RESEND 142*4882a593Smuzhiyun select HARDLOCKUP_CHECK_TIMESTAMP if X86_64 143*4882a593Smuzhiyun select HAVE_ACPI_APEI if ACPI 144*4882a593Smuzhiyun select HAVE_ACPI_APEI_NMI if ACPI 145*4882a593Smuzhiyun select HAVE_ALIGNED_STRUCT_PAGE if SLUB 146*4882a593Smuzhiyun select HAVE_ARCH_AUDITSYSCALL 147*4882a593Smuzhiyun select HAVE_ARCH_HUGE_VMAP if X86_64 || X86_PAE 148*4882a593Smuzhiyun select HAVE_ARCH_JUMP_LABEL 149*4882a593Smuzhiyun select HAVE_ARCH_JUMP_LABEL_RELATIVE 150*4882a593Smuzhiyun select HAVE_ARCH_KASAN if X86_64 151*4882a593Smuzhiyun select HAVE_ARCH_KASAN_VMALLOC if X86_64 152*4882a593Smuzhiyun select HAVE_ARCH_KFENCE 153*4882a593Smuzhiyun select HAVE_ARCH_KGDB 154*4882a593Smuzhiyun select HAVE_ARCH_MMAP_RND_BITS if MMU 155*4882a593Smuzhiyun select HAVE_ARCH_MMAP_RND_COMPAT_BITS if MMU && COMPAT 156*4882a593Smuzhiyun select HAVE_ARCH_COMPAT_MMAP_BASES if MMU && COMPAT 157*4882a593Smuzhiyun select HAVE_ARCH_PREL32_RELOCATIONS 158*4882a593Smuzhiyun select HAVE_ARCH_SECCOMP_FILTER 159*4882a593Smuzhiyun select HAVE_ARCH_THREAD_STRUCT_WHITELIST 160*4882a593Smuzhiyun select HAVE_ARCH_STACKLEAK 161*4882a593Smuzhiyun select HAVE_ARCH_TRACEHOOK 162*4882a593Smuzhiyun select HAVE_ARCH_TRANSPARENT_HUGEPAGE 163*4882a593Smuzhiyun select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64 164*4882a593Smuzhiyun select HAVE_ARCH_USERFAULTFD_WP if X86_64 && USERFAULTFD 165*4882a593Smuzhiyun select HAVE_ARCH_USERFAULTFD_MINOR if X86_64 && USERFAULTFD 166*4882a593Smuzhiyun select HAVE_ARCH_VMAP_STACK if X86_64 167*4882a593Smuzhiyun select HAVE_ARCH_WITHIN_STACK_FRAMES 168*4882a593Smuzhiyun select HAVE_ASM_MODVERSIONS 169*4882a593Smuzhiyun select HAVE_CMPXCHG_DOUBLE 170*4882a593Smuzhiyun select HAVE_CMPXCHG_LOCAL 171*4882a593Smuzhiyun select HAVE_CONTEXT_TRACKING if X86_64 172*4882a593Smuzhiyun select HAVE_C_RECORDMCOUNT 173*4882a593Smuzhiyun select HAVE_OBJTOOL_MCOUNT if STACK_VALIDATION 174*4882a593Smuzhiyun select HAVE_DEBUG_KMEMLEAK 175*4882a593Smuzhiyun select HAVE_DMA_CONTIGUOUS 176*4882a593Smuzhiyun select HAVE_DYNAMIC_FTRACE 177*4882a593Smuzhiyun select HAVE_DYNAMIC_FTRACE_WITH_REGS 178*4882a593Smuzhiyun select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS 179*4882a593Smuzhiyun select HAVE_EBPF_JIT 180*4882a593Smuzhiyun select HAVE_EFFICIENT_UNALIGNED_ACCESS 181*4882a593Smuzhiyun select HAVE_EISA 182*4882a593Smuzhiyun select HAVE_EXIT_THREAD 183*4882a593Smuzhiyun select HAVE_FAST_GUP 184*4882a593Smuzhiyun select HAVE_FENTRY if X86_64 || DYNAMIC_FTRACE 185*4882a593Smuzhiyun select HAVE_FTRACE_MCOUNT_RECORD 186*4882a593Smuzhiyun select HAVE_FUNCTION_GRAPH_TRACER 187*4882a593Smuzhiyun select HAVE_FUNCTION_TRACER 188*4882a593Smuzhiyun select HAVE_GCC_PLUGINS 189*4882a593Smuzhiyun select HAVE_HW_BREAKPOINT 190*4882a593Smuzhiyun select HAVE_IDE 191*4882a593Smuzhiyun select HAVE_IOREMAP_PROT 192*4882a593Smuzhiyun select HAVE_IRQ_TIME_ACCOUNTING 193*4882a593Smuzhiyun select HAVE_KERNEL_BZIP2 194*4882a593Smuzhiyun select HAVE_KERNEL_GZIP 195*4882a593Smuzhiyun select HAVE_KERNEL_LZ4 196*4882a593Smuzhiyun select HAVE_KERNEL_LZMA 197*4882a593Smuzhiyun select HAVE_KERNEL_LZO 198*4882a593Smuzhiyun select HAVE_KERNEL_XZ 199*4882a593Smuzhiyun select HAVE_KERNEL_ZSTD 200*4882a593Smuzhiyun select HAVE_KPROBES 201*4882a593Smuzhiyun select HAVE_KPROBES_ON_FTRACE 202*4882a593Smuzhiyun select HAVE_FUNCTION_ERROR_INJECTION 203*4882a593Smuzhiyun select HAVE_KRETPROBES 204*4882a593Smuzhiyun select HAVE_KVM 205*4882a593Smuzhiyun select HAVE_LIVEPATCH if X86_64 206*4882a593Smuzhiyun select HAVE_MIXED_BREAKPOINTS_REGS 207*4882a593Smuzhiyun select HAVE_MOD_ARCH_SPECIFIC 208*4882a593Smuzhiyun select HAVE_MOVE_PMD 209*4882a593Smuzhiyun select HAVE_MOVE_PUD 210*4882a593Smuzhiyun select HAVE_NMI 211*4882a593Smuzhiyun select HAVE_OPROFILE 212*4882a593Smuzhiyun select HAVE_OPTPROBES 213*4882a593Smuzhiyun select HAVE_PCSPKR_PLATFORM 214*4882a593Smuzhiyun select HAVE_PERF_EVENTS 215*4882a593Smuzhiyun select HAVE_PERF_EVENTS_NMI 216*4882a593Smuzhiyun select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI 217*4882a593Smuzhiyun select HAVE_PCI 218*4882a593Smuzhiyun select HAVE_PERF_REGS 219*4882a593Smuzhiyun select HAVE_PERF_USER_STACK_DUMP 220*4882a593Smuzhiyun select MMU_GATHER_RCU_TABLE_FREE if PARAVIRT 221*4882a593Smuzhiyun select HAVE_POSIX_CPU_TIMERS_TASK_WORK 222*4882a593Smuzhiyun select HAVE_REGS_AND_STACK_ACCESS_API 223*4882a593Smuzhiyun select HAVE_RELIABLE_STACKTRACE if X86_64 && (UNWINDER_FRAME_POINTER || UNWINDER_ORC) && STACK_VALIDATION 224*4882a593Smuzhiyun select HAVE_FUNCTION_ARG_ACCESS_API 225*4882a593Smuzhiyun select HAVE_STACKPROTECTOR if CC_HAS_SANE_STACKPROTECTOR 226*4882a593Smuzhiyun select HAVE_STACK_VALIDATION if X86_64 227*4882a593Smuzhiyun select HAVE_STATIC_CALL 228*4882a593Smuzhiyun select HAVE_STATIC_CALL_INLINE if HAVE_STACK_VALIDATION 229*4882a593Smuzhiyun select HAVE_RSEQ 230*4882a593Smuzhiyun select HAVE_SYSCALL_TRACEPOINTS 231*4882a593Smuzhiyun select HAVE_UNSTABLE_SCHED_CLOCK 232*4882a593Smuzhiyun select HAVE_USER_RETURN_NOTIFIER 233*4882a593Smuzhiyun select HAVE_GENERIC_VDSO 234*4882a593Smuzhiyun select HOTPLUG_SMT if SMP 235*4882a593Smuzhiyun select IRQ_FORCED_THREADING 236*4882a593Smuzhiyun select NEED_SG_DMA_LENGTH 237*4882a593Smuzhiyun select PCI_DOMAINS if PCI 238*4882a593Smuzhiyun select PCI_LOCKLESS_CONFIG if PCI 239*4882a593Smuzhiyun select PERF_EVENTS 240*4882a593Smuzhiyun select RTC_LIB 241*4882a593Smuzhiyun select RTC_MC146818_LIB 242*4882a593Smuzhiyun select SPARSE_IRQ 243*4882a593Smuzhiyun select SRCU 244*4882a593Smuzhiyun select STACK_VALIDATION if HAVE_STACK_VALIDATION && (HAVE_STATIC_CALL_INLINE || RETPOLINE) 245*4882a593Smuzhiyun select SYSCTL_EXCEPTION_TRACE 246*4882a593Smuzhiyun select THREAD_INFO_IN_TASK 247*4882a593Smuzhiyun select USER_STACKTRACE_SUPPORT 248*4882a593Smuzhiyun select VIRT_TO_BUS 249*4882a593Smuzhiyun select HAVE_ARCH_KCSAN if X86_64 250*4882a593Smuzhiyun select X86_FEATURE_NAMES if PROC_FS 251*4882a593Smuzhiyun select PROC_PID_ARCH_STATUS if PROC_FS 252*4882a593Smuzhiyun imply IMA_SECURE_AND_OR_TRUSTED_BOOT if EFI 253*4882a593Smuzhiyun 254*4882a593Smuzhiyunconfig INSTRUCTION_DECODER 255*4882a593Smuzhiyun def_bool y 256*4882a593Smuzhiyun depends on KPROBES || PERF_EVENTS || UPROBES 257*4882a593Smuzhiyun 258*4882a593Smuzhiyunconfig OUTPUT_FORMAT 259*4882a593Smuzhiyun string 260*4882a593Smuzhiyun default "elf32-i386" if X86_32 261*4882a593Smuzhiyun default "elf64-x86-64" if X86_64 262*4882a593Smuzhiyun 263*4882a593Smuzhiyunconfig LOCKDEP_SUPPORT 264*4882a593Smuzhiyun def_bool y 265*4882a593Smuzhiyun 266*4882a593Smuzhiyunconfig STACKTRACE_SUPPORT 267*4882a593Smuzhiyun def_bool y 268*4882a593Smuzhiyun 269*4882a593Smuzhiyunconfig MMU 270*4882a593Smuzhiyun def_bool y 271*4882a593Smuzhiyun 272*4882a593Smuzhiyunconfig ARCH_MMAP_RND_BITS_MIN 273*4882a593Smuzhiyun default 28 if 64BIT 274*4882a593Smuzhiyun default 8 275*4882a593Smuzhiyun 276*4882a593Smuzhiyunconfig ARCH_MMAP_RND_BITS_MAX 277*4882a593Smuzhiyun default 32 if 64BIT 278*4882a593Smuzhiyun default 16 279*4882a593Smuzhiyun 280*4882a593Smuzhiyunconfig ARCH_MMAP_RND_COMPAT_BITS_MIN 281*4882a593Smuzhiyun default 8 282*4882a593Smuzhiyun 283*4882a593Smuzhiyunconfig ARCH_MMAP_RND_COMPAT_BITS_MAX 284*4882a593Smuzhiyun default 16 285*4882a593Smuzhiyun 286*4882a593Smuzhiyunconfig SBUS 287*4882a593Smuzhiyun bool 288*4882a593Smuzhiyun 289*4882a593Smuzhiyunconfig GENERIC_ISA_DMA 290*4882a593Smuzhiyun def_bool y 291*4882a593Smuzhiyun depends on ISA_DMA_API 292*4882a593Smuzhiyun 293*4882a593Smuzhiyunconfig GENERIC_BUG 294*4882a593Smuzhiyun def_bool y 295*4882a593Smuzhiyun depends on BUG 296*4882a593Smuzhiyun select GENERIC_BUG_RELATIVE_POINTERS if X86_64 297*4882a593Smuzhiyun 298*4882a593Smuzhiyunconfig GENERIC_BUG_RELATIVE_POINTERS 299*4882a593Smuzhiyun bool 300*4882a593Smuzhiyun 301*4882a593Smuzhiyunconfig ARCH_MAY_HAVE_PC_FDC 302*4882a593Smuzhiyun def_bool y 303*4882a593Smuzhiyun depends on ISA_DMA_API 304*4882a593Smuzhiyun 305*4882a593Smuzhiyunconfig GENERIC_CALIBRATE_DELAY 306*4882a593Smuzhiyun def_bool y 307*4882a593Smuzhiyun 308*4882a593Smuzhiyunconfig ARCH_HAS_CPU_RELAX 309*4882a593Smuzhiyun def_bool y 310*4882a593Smuzhiyun 311*4882a593Smuzhiyunconfig ARCH_HAS_CACHE_LINE_SIZE 312*4882a593Smuzhiyun def_bool y 313*4882a593Smuzhiyun 314*4882a593Smuzhiyunconfig ARCH_HAS_FILTER_PGPROT 315*4882a593Smuzhiyun def_bool y 316*4882a593Smuzhiyun 317*4882a593Smuzhiyunconfig HAVE_SETUP_PER_CPU_AREA 318*4882a593Smuzhiyun def_bool y 319*4882a593Smuzhiyun 320*4882a593Smuzhiyunconfig NEED_PER_CPU_EMBED_FIRST_CHUNK 321*4882a593Smuzhiyun def_bool y 322*4882a593Smuzhiyun 323*4882a593Smuzhiyunconfig NEED_PER_CPU_PAGE_FIRST_CHUNK 324*4882a593Smuzhiyun def_bool y 325*4882a593Smuzhiyun 326*4882a593Smuzhiyunconfig ARCH_HIBERNATION_POSSIBLE 327*4882a593Smuzhiyun def_bool y 328*4882a593Smuzhiyun 329*4882a593Smuzhiyunconfig ARCH_SUSPEND_POSSIBLE 330*4882a593Smuzhiyun def_bool y 331*4882a593Smuzhiyun 332*4882a593Smuzhiyunconfig ARCH_WANT_GENERAL_HUGETLB 333*4882a593Smuzhiyun def_bool y 334*4882a593Smuzhiyun 335*4882a593Smuzhiyunconfig ZONE_DMA32 336*4882a593Smuzhiyun def_bool y if X86_64 337*4882a593Smuzhiyun 338*4882a593Smuzhiyunconfig AUDIT_ARCH 339*4882a593Smuzhiyun def_bool y if X86_64 340*4882a593Smuzhiyun 341*4882a593Smuzhiyunconfig ARCH_SUPPORTS_DEBUG_PAGEALLOC 342*4882a593Smuzhiyun def_bool y 343*4882a593Smuzhiyun 344*4882a593Smuzhiyunconfig KASAN_SHADOW_OFFSET 345*4882a593Smuzhiyun hex 346*4882a593Smuzhiyun depends on KASAN 347*4882a593Smuzhiyun default 0xdffffc0000000000 348*4882a593Smuzhiyun 349*4882a593Smuzhiyunconfig HAVE_INTEL_TXT 350*4882a593Smuzhiyun def_bool y 351*4882a593Smuzhiyun depends on INTEL_IOMMU && ACPI 352*4882a593Smuzhiyun 353*4882a593Smuzhiyunconfig X86_32_SMP 354*4882a593Smuzhiyun def_bool y 355*4882a593Smuzhiyun depends on X86_32 && SMP 356*4882a593Smuzhiyun 357*4882a593Smuzhiyunconfig X86_64_SMP 358*4882a593Smuzhiyun def_bool y 359*4882a593Smuzhiyun depends on X86_64 && SMP 360*4882a593Smuzhiyun 361*4882a593Smuzhiyunconfig X86_32_LAZY_GS 362*4882a593Smuzhiyun def_bool y 363*4882a593Smuzhiyun depends on X86_32 && !STACKPROTECTOR 364*4882a593Smuzhiyun 365*4882a593Smuzhiyunconfig ARCH_SUPPORTS_UPROBES 366*4882a593Smuzhiyun def_bool y 367*4882a593Smuzhiyun 368*4882a593Smuzhiyunconfig FIX_EARLYCON_MEM 369*4882a593Smuzhiyun def_bool y 370*4882a593Smuzhiyun 371*4882a593Smuzhiyunconfig DYNAMIC_PHYSICAL_MASK 372*4882a593Smuzhiyun bool 373*4882a593Smuzhiyun 374*4882a593Smuzhiyunconfig PGTABLE_LEVELS 375*4882a593Smuzhiyun int 376*4882a593Smuzhiyun default 5 if X86_5LEVEL 377*4882a593Smuzhiyun default 4 if X86_64 378*4882a593Smuzhiyun default 3 if X86_PAE 379*4882a593Smuzhiyun default 2 380*4882a593Smuzhiyun 381*4882a593Smuzhiyunconfig CC_HAS_SANE_STACKPROTECTOR 382*4882a593Smuzhiyun bool 383*4882a593Smuzhiyun default $(success,$(srctree)/scripts/gcc-x86_64-has-stack-protector.sh $(CC)) if 64BIT 384*4882a593Smuzhiyun default $(success,$(srctree)/scripts/gcc-x86_32-has-stack-protector.sh $(CC)) 385*4882a593Smuzhiyun help 386*4882a593Smuzhiyun We have to make sure stack protector is unconditionally disabled if 387*4882a593Smuzhiyun the compiler produces broken code. 388*4882a593Smuzhiyun 389*4882a593Smuzhiyunmenu "Processor type and features" 390*4882a593Smuzhiyun 391*4882a593Smuzhiyunconfig ZONE_DMA 392*4882a593Smuzhiyun bool "DMA memory allocation support" if EXPERT 393*4882a593Smuzhiyun default y 394*4882a593Smuzhiyun help 395*4882a593Smuzhiyun DMA memory allocation support allows devices with less than 32-bit 396*4882a593Smuzhiyun addressing to allocate within the first 16MB of address space. 397*4882a593Smuzhiyun Disable if no such devices will be used. 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun If unsure, say Y. 400*4882a593Smuzhiyun 401*4882a593Smuzhiyunconfig SMP 402*4882a593Smuzhiyun bool "Symmetric multi-processing support" 403*4882a593Smuzhiyun help 404*4882a593Smuzhiyun This enables support for systems with more than one CPU. If you have 405*4882a593Smuzhiyun a system with only one CPU, say N. If you have a system with more 406*4882a593Smuzhiyun than one CPU, say Y. 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun If you say N here, the kernel will run on uni- and multiprocessor 409*4882a593Smuzhiyun machines, but will use only one CPU of a multiprocessor machine. If 410*4882a593Smuzhiyun you say Y here, the kernel will run on many, but not all, 411*4882a593Smuzhiyun uniprocessor machines. On a uniprocessor machine, the kernel 412*4882a593Smuzhiyun will run faster if you say N here. 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun Note that if you say Y here and choose architecture "586" or 415*4882a593Smuzhiyun "Pentium" under "Processor family", the kernel will not work on 486 416*4882a593Smuzhiyun architectures. Similarly, multiprocessor kernels for the "PPro" 417*4882a593Smuzhiyun architecture may not work on all Pentium based boards. 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun People using multiprocessor machines who say Y here should also say 420*4882a593Smuzhiyun Y to "Enhanced Real Time Clock Support", below. The "Advanced Power 421*4882a593Smuzhiyun Management" code will be disabled if you say Y here. 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun See also <file:Documentation/x86/i386/IO-APIC.rst>, 424*4882a593Smuzhiyun <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO available at 425*4882a593Smuzhiyun <http://www.tldp.org/docs.html#howto>. 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun If you don't know what to do here, say N. 428*4882a593Smuzhiyun 429*4882a593Smuzhiyunconfig X86_FEATURE_NAMES 430*4882a593Smuzhiyun bool "Processor feature human-readable names" if EMBEDDED 431*4882a593Smuzhiyun default y 432*4882a593Smuzhiyun help 433*4882a593Smuzhiyun This option compiles in a table of x86 feature bits and corresponding 434*4882a593Smuzhiyun names. This is required to support /proc/cpuinfo and a few kernel 435*4882a593Smuzhiyun messages. You can disable this to save space, at the expense of 436*4882a593Smuzhiyun making those few kernel messages show numeric feature bits instead. 437*4882a593Smuzhiyun 438*4882a593Smuzhiyun If in doubt, say Y. 439*4882a593Smuzhiyun 440*4882a593Smuzhiyunconfig X86_X2APIC 441*4882a593Smuzhiyun bool "Support x2apic" 442*4882a593Smuzhiyun depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST) 443*4882a593Smuzhiyun help 444*4882a593Smuzhiyun This enables x2apic support on CPUs that have this feature. 445*4882a593Smuzhiyun 446*4882a593Smuzhiyun This allows 32-bit apic IDs (so it can support very large systems), 447*4882a593Smuzhiyun and accesses the local apic via MSRs not via mmio. 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun If you don't know what to do here, say N. 450*4882a593Smuzhiyun 451*4882a593Smuzhiyunconfig X86_MPPARSE 452*4882a593Smuzhiyun bool "Enable MPS table" if ACPI || SFI 453*4882a593Smuzhiyun default y 454*4882a593Smuzhiyun depends on X86_LOCAL_APIC 455*4882a593Smuzhiyun help 456*4882a593Smuzhiyun For old smp systems that do not have proper acpi support. Newer systems 457*4882a593Smuzhiyun (esp with 64bit cpus) with acpi support, MADT and DSDT will override it 458*4882a593Smuzhiyun 459*4882a593Smuzhiyunconfig GOLDFISH 460*4882a593Smuzhiyun def_bool y 461*4882a593Smuzhiyun depends on X86_GOLDFISH 462*4882a593Smuzhiyun 463*4882a593Smuzhiyunconfig X86_CPU_RESCTRL 464*4882a593Smuzhiyun bool "x86 CPU resource control support" 465*4882a593Smuzhiyun depends on X86 && (CPU_SUP_INTEL || CPU_SUP_AMD) 466*4882a593Smuzhiyun select KERNFS 467*4882a593Smuzhiyun select PROC_CPU_RESCTRL if PROC_FS 468*4882a593Smuzhiyun help 469*4882a593Smuzhiyun Enable x86 CPU resource control support. 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun Provide support for the allocation and monitoring of system resources 472*4882a593Smuzhiyun usage by the CPU. 473*4882a593Smuzhiyun 474*4882a593Smuzhiyun Intel calls this Intel Resource Director Technology 475*4882a593Smuzhiyun (Intel(R) RDT). More information about RDT can be found in the 476*4882a593Smuzhiyun Intel x86 Architecture Software Developer Manual. 477*4882a593Smuzhiyun 478*4882a593Smuzhiyun AMD calls this AMD Platform Quality of Service (AMD QoS). 479*4882a593Smuzhiyun More information about AMD QoS can be found in the AMD64 Technology 480*4882a593Smuzhiyun Platform Quality of Service Extensions manual. 481*4882a593Smuzhiyun 482*4882a593Smuzhiyun Say N if unsure. 483*4882a593Smuzhiyun 484*4882a593Smuzhiyunif X86_32 485*4882a593Smuzhiyunconfig X86_BIGSMP 486*4882a593Smuzhiyun bool "Support for big SMP systems with more than 8 CPUs" 487*4882a593Smuzhiyun depends on SMP 488*4882a593Smuzhiyun help 489*4882a593Smuzhiyun This option is needed for the systems that have more than 8 CPUs. 490*4882a593Smuzhiyun 491*4882a593Smuzhiyunconfig X86_EXTENDED_PLATFORM 492*4882a593Smuzhiyun bool "Support for extended (non-PC) x86 platforms" 493*4882a593Smuzhiyun default y 494*4882a593Smuzhiyun help 495*4882a593Smuzhiyun If you disable this option then the kernel will only support 496*4882a593Smuzhiyun standard PC platforms. (which covers the vast majority of 497*4882a593Smuzhiyun systems out there.) 498*4882a593Smuzhiyun 499*4882a593Smuzhiyun If you enable this option then you'll be able to select support 500*4882a593Smuzhiyun for the following (non-PC) 32 bit x86 platforms: 501*4882a593Smuzhiyun Goldfish (Android emulator) 502*4882a593Smuzhiyun AMD Elan 503*4882a593Smuzhiyun RDC R-321x SoC 504*4882a593Smuzhiyun SGI 320/540 (Visual Workstation) 505*4882a593Smuzhiyun STA2X11-based (e.g. Northville) 506*4882a593Smuzhiyun Moorestown MID devices 507*4882a593Smuzhiyun 508*4882a593Smuzhiyun If you have one of these systems, or if you want to build a 509*4882a593Smuzhiyun generic distribution kernel, say Y here - otherwise say N. 510*4882a593Smuzhiyunendif 511*4882a593Smuzhiyun 512*4882a593Smuzhiyunif X86_64 513*4882a593Smuzhiyunconfig X86_EXTENDED_PLATFORM 514*4882a593Smuzhiyun bool "Support for extended (non-PC) x86 platforms" 515*4882a593Smuzhiyun default y 516*4882a593Smuzhiyun help 517*4882a593Smuzhiyun If you disable this option then the kernel will only support 518*4882a593Smuzhiyun standard PC platforms. (which covers the vast majority of 519*4882a593Smuzhiyun systems out there.) 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun If you enable this option then you'll be able to select support 522*4882a593Smuzhiyun for the following (non-PC) 64 bit x86 platforms: 523*4882a593Smuzhiyun Numascale NumaChip 524*4882a593Smuzhiyun ScaleMP vSMP 525*4882a593Smuzhiyun SGI Ultraviolet 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun If you have one of these systems, or if you want to build a 528*4882a593Smuzhiyun generic distribution kernel, say Y here - otherwise say N. 529*4882a593Smuzhiyunendif 530*4882a593Smuzhiyun# This is an alphabetically sorted list of 64 bit extended platforms 531*4882a593Smuzhiyun# Please maintain the alphabetic order if and when there are additions 532*4882a593Smuzhiyunconfig X86_NUMACHIP 533*4882a593Smuzhiyun bool "Numascale NumaChip" 534*4882a593Smuzhiyun depends on X86_64 535*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 536*4882a593Smuzhiyun depends on NUMA 537*4882a593Smuzhiyun depends on SMP 538*4882a593Smuzhiyun depends on X86_X2APIC 539*4882a593Smuzhiyun depends on PCI_MMCONFIG 540*4882a593Smuzhiyun help 541*4882a593Smuzhiyun Adds support for Numascale NumaChip large-SMP systems. Needed to 542*4882a593Smuzhiyun enable more than ~168 cores. 543*4882a593Smuzhiyun If you don't have one of these, you should say N here. 544*4882a593Smuzhiyun 545*4882a593Smuzhiyunconfig X86_VSMP 546*4882a593Smuzhiyun bool "ScaleMP vSMP" 547*4882a593Smuzhiyun select HYPERVISOR_GUEST 548*4882a593Smuzhiyun select PARAVIRT 549*4882a593Smuzhiyun depends on X86_64 && PCI 550*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 551*4882a593Smuzhiyun depends on SMP 552*4882a593Smuzhiyun help 553*4882a593Smuzhiyun Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is 554*4882a593Smuzhiyun supposed to run on these EM64T-based machines. Only choose this option 555*4882a593Smuzhiyun if you have one of these machines. 556*4882a593Smuzhiyun 557*4882a593Smuzhiyunconfig X86_UV 558*4882a593Smuzhiyun bool "SGI Ultraviolet" 559*4882a593Smuzhiyun depends on X86_64 560*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 561*4882a593Smuzhiyun depends on NUMA 562*4882a593Smuzhiyun depends on EFI 563*4882a593Smuzhiyun depends on KEXEC_CORE 564*4882a593Smuzhiyun depends on X86_X2APIC 565*4882a593Smuzhiyun depends on PCI 566*4882a593Smuzhiyun help 567*4882a593Smuzhiyun This option is needed in order to support SGI Ultraviolet systems. 568*4882a593Smuzhiyun If you don't have one of these, you should say N here. 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun# Following is an alphabetically sorted list of 32 bit extended platforms 571*4882a593Smuzhiyun# Please maintain the alphabetic order if and when there are additions 572*4882a593Smuzhiyun 573*4882a593Smuzhiyunconfig X86_GOLDFISH 574*4882a593Smuzhiyun bool "Goldfish (Virtual Platform)" 575*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 576*4882a593Smuzhiyun help 577*4882a593Smuzhiyun Enable support for the Goldfish virtual platform used primarily 578*4882a593Smuzhiyun for Android development. Unless you are building for the Android 579*4882a593Smuzhiyun Goldfish emulator say N here. 580*4882a593Smuzhiyun 581*4882a593Smuzhiyunconfig X86_INTEL_CE 582*4882a593Smuzhiyun bool "CE4100 TV platform" 583*4882a593Smuzhiyun depends on PCI 584*4882a593Smuzhiyun depends on PCI_GODIRECT 585*4882a593Smuzhiyun depends on X86_IO_APIC 586*4882a593Smuzhiyun depends on X86_32 587*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 588*4882a593Smuzhiyun select X86_REBOOTFIXUPS 589*4882a593Smuzhiyun select OF 590*4882a593Smuzhiyun select OF_EARLY_FLATTREE 591*4882a593Smuzhiyun help 592*4882a593Smuzhiyun Select for the Intel CE media processor (CE4100) SOC. 593*4882a593Smuzhiyun This option compiles in support for the CE4100 SOC for settop 594*4882a593Smuzhiyun boxes and media devices. 595*4882a593Smuzhiyun 596*4882a593Smuzhiyunconfig X86_INTEL_MID 597*4882a593Smuzhiyun bool "Intel MID platform support" 598*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 599*4882a593Smuzhiyun depends on X86_PLATFORM_DEVICES 600*4882a593Smuzhiyun depends on PCI 601*4882a593Smuzhiyun depends on X86_64 || (PCI_GOANY && X86_32) 602*4882a593Smuzhiyun depends on X86_IO_APIC 603*4882a593Smuzhiyun select SFI 604*4882a593Smuzhiyun select I2C 605*4882a593Smuzhiyun select DW_APB_TIMER 606*4882a593Smuzhiyun select APB_TIMER 607*4882a593Smuzhiyun select INTEL_SCU_PCI 608*4882a593Smuzhiyun select MFD_INTEL_MSIC 609*4882a593Smuzhiyun help 610*4882a593Smuzhiyun Select to build a kernel capable of supporting Intel MID (Mobile 611*4882a593Smuzhiyun Internet Device) platform systems which do not have the PCI legacy 612*4882a593Smuzhiyun interfaces. If you are building for a PC class system say N here. 613*4882a593Smuzhiyun 614*4882a593Smuzhiyun Intel MID platforms are based on an Intel processor and chipset which 615*4882a593Smuzhiyun consume less power than most of the x86 derivatives. 616*4882a593Smuzhiyun 617*4882a593Smuzhiyunconfig X86_INTEL_QUARK 618*4882a593Smuzhiyun bool "Intel Quark platform support" 619*4882a593Smuzhiyun depends on X86_32 620*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 621*4882a593Smuzhiyun depends on X86_PLATFORM_DEVICES 622*4882a593Smuzhiyun depends on X86_TSC 623*4882a593Smuzhiyun depends on PCI 624*4882a593Smuzhiyun depends on PCI_GOANY 625*4882a593Smuzhiyun depends on X86_IO_APIC 626*4882a593Smuzhiyun select IOSF_MBI 627*4882a593Smuzhiyun select INTEL_IMR 628*4882a593Smuzhiyun select COMMON_CLK 629*4882a593Smuzhiyun help 630*4882a593Smuzhiyun Select to include support for Quark X1000 SoC. 631*4882a593Smuzhiyun Say Y here if you have a Quark based system such as the Arduino 632*4882a593Smuzhiyun compatible Intel Galileo. 633*4882a593Smuzhiyun 634*4882a593Smuzhiyunconfig X86_INTEL_LPSS 635*4882a593Smuzhiyun bool "Intel Low Power Subsystem Support" 636*4882a593Smuzhiyun depends on X86 && ACPI && PCI 637*4882a593Smuzhiyun select COMMON_CLK 638*4882a593Smuzhiyun select PINCTRL 639*4882a593Smuzhiyun select IOSF_MBI 640*4882a593Smuzhiyun help 641*4882a593Smuzhiyun Select to build support for Intel Low Power Subsystem such as 642*4882a593Smuzhiyun found on Intel Lynxpoint PCH. Selecting this option enables 643*4882a593Smuzhiyun things like clock tree (common clock framework) and pincontrol 644*4882a593Smuzhiyun which are needed by the LPSS peripheral drivers. 645*4882a593Smuzhiyun 646*4882a593Smuzhiyunconfig X86_AMD_PLATFORM_DEVICE 647*4882a593Smuzhiyun bool "AMD ACPI2Platform devices support" 648*4882a593Smuzhiyun depends on ACPI 649*4882a593Smuzhiyun select COMMON_CLK 650*4882a593Smuzhiyun select PINCTRL 651*4882a593Smuzhiyun help 652*4882a593Smuzhiyun Select to interpret AMD specific ACPI device to platform device 653*4882a593Smuzhiyun such as I2C, UART, GPIO found on AMD Carrizo and later chipsets. 654*4882a593Smuzhiyun I2C and UART depend on COMMON_CLK to set clock. GPIO driver is 655*4882a593Smuzhiyun implemented under PINCTRL subsystem. 656*4882a593Smuzhiyun 657*4882a593Smuzhiyunconfig IOSF_MBI 658*4882a593Smuzhiyun tristate "Intel SoC IOSF Sideband support for SoC platforms" 659*4882a593Smuzhiyun depends on PCI 660*4882a593Smuzhiyun help 661*4882a593Smuzhiyun This option enables sideband register access support for Intel SoC 662*4882a593Smuzhiyun platforms. On these platforms the IOSF sideband is used in lieu of 663*4882a593Smuzhiyun MSR's for some register accesses, mostly but not limited to thermal 664*4882a593Smuzhiyun and power. Drivers may query the availability of this device to 665*4882a593Smuzhiyun determine if they need the sideband in order to work on these 666*4882a593Smuzhiyun platforms. The sideband is available on the following SoC products. 667*4882a593Smuzhiyun This list is not meant to be exclusive. 668*4882a593Smuzhiyun - BayTrail 669*4882a593Smuzhiyun - Braswell 670*4882a593Smuzhiyun - Quark 671*4882a593Smuzhiyun 672*4882a593Smuzhiyun You should say Y if you are running a kernel on one of these SoC's. 673*4882a593Smuzhiyun 674*4882a593Smuzhiyunconfig IOSF_MBI_DEBUG 675*4882a593Smuzhiyun bool "Enable IOSF sideband access through debugfs" 676*4882a593Smuzhiyun depends on IOSF_MBI && DEBUG_FS 677*4882a593Smuzhiyun help 678*4882a593Smuzhiyun Select this option to expose the IOSF sideband access registers (MCR, 679*4882a593Smuzhiyun MDR, MCRX) through debugfs to write and read register information from 680*4882a593Smuzhiyun different units on the SoC. This is most useful for obtaining device 681*4882a593Smuzhiyun state information for debug and analysis. As this is a general access 682*4882a593Smuzhiyun mechanism, users of this option would have specific knowledge of the 683*4882a593Smuzhiyun device they want to access. 684*4882a593Smuzhiyun 685*4882a593Smuzhiyun If you don't require the option or are in doubt, say N. 686*4882a593Smuzhiyun 687*4882a593Smuzhiyunconfig X86_RDC321X 688*4882a593Smuzhiyun bool "RDC R-321x SoC" 689*4882a593Smuzhiyun depends on X86_32 690*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 691*4882a593Smuzhiyun select M486 692*4882a593Smuzhiyun select X86_REBOOTFIXUPS 693*4882a593Smuzhiyun help 694*4882a593Smuzhiyun This option is needed for RDC R-321x system-on-chip, also known 695*4882a593Smuzhiyun as R-8610-(G). 696*4882a593Smuzhiyun If you don't have one of these chips, you should say N here. 697*4882a593Smuzhiyun 698*4882a593Smuzhiyunconfig X86_32_NON_STANDARD 699*4882a593Smuzhiyun bool "Support non-standard 32-bit SMP architectures" 700*4882a593Smuzhiyun depends on X86_32 && SMP 701*4882a593Smuzhiyun depends on X86_EXTENDED_PLATFORM 702*4882a593Smuzhiyun help 703*4882a593Smuzhiyun This option compiles in the bigsmp and STA2X11 default 704*4882a593Smuzhiyun subarchitectures. It is intended for a generic binary 705*4882a593Smuzhiyun kernel. If you select them all, kernel will probe it one by 706*4882a593Smuzhiyun one and will fallback to default. 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun# Alphabetically sorted list of Non standard 32 bit platforms 709*4882a593Smuzhiyun 710*4882a593Smuzhiyunconfig X86_SUPPORTS_MEMORY_FAILURE 711*4882a593Smuzhiyun def_bool y 712*4882a593Smuzhiyun # MCE code calls memory_failure(): 713*4882a593Smuzhiyun depends on X86_MCE 714*4882a593Smuzhiyun # On 32-bit this adds too big of NODES_SHIFT and we run out of page flags: 715*4882a593Smuzhiyun # On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH: 716*4882a593Smuzhiyun depends on X86_64 || !SPARSEMEM 717*4882a593Smuzhiyun select ARCH_SUPPORTS_MEMORY_FAILURE 718*4882a593Smuzhiyun 719*4882a593Smuzhiyunconfig STA2X11 720*4882a593Smuzhiyun bool "STA2X11 Companion Chip Support" 721*4882a593Smuzhiyun depends on X86_32_NON_STANDARD && PCI 722*4882a593Smuzhiyun select SWIOTLB 723*4882a593Smuzhiyun select MFD_STA2X11 724*4882a593Smuzhiyun select GPIOLIB 725*4882a593Smuzhiyun help 726*4882a593Smuzhiyun This adds support for boards based on the STA2X11 IO-Hub, 727*4882a593Smuzhiyun a.k.a. "ConneXt". The chip is used in place of the standard 728*4882a593Smuzhiyun PC chipset, so all "standard" peripherals are missing. If this 729*4882a593Smuzhiyun option is selected the kernel will still be able to boot on 730*4882a593Smuzhiyun standard PC machines. 731*4882a593Smuzhiyun 732*4882a593Smuzhiyunconfig X86_32_IRIS 733*4882a593Smuzhiyun tristate "Eurobraille/Iris poweroff module" 734*4882a593Smuzhiyun depends on X86_32 735*4882a593Smuzhiyun help 736*4882a593Smuzhiyun The Iris machines from EuroBraille do not have APM or ACPI support 737*4882a593Smuzhiyun to shut themselves down properly. A special I/O sequence is 738*4882a593Smuzhiyun needed to do so, which is what this module does at 739*4882a593Smuzhiyun kernel shutdown. 740*4882a593Smuzhiyun 741*4882a593Smuzhiyun This is only for Iris machines from EuroBraille. 742*4882a593Smuzhiyun 743*4882a593Smuzhiyun If unused, say N. 744*4882a593Smuzhiyun 745*4882a593Smuzhiyunconfig SCHED_OMIT_FRAME_POINTER 746*4882a593Smuzhiyun def_bool y 747*4882a593Smuzhiyun prompt "Single-depth WCHAN output" 748*4882a593Smuzhiyun depends on X86 749*4882a593Smuzhiyun help 750*4882a593Smuzhiyun Calculate simpler /proc/<PID>/wchan values. If this option 751*4882a593Smuzhiyun is disabled then wchan values will recurse back to the 752*4882a593Smuzhiyun caller function. This provides more accurate wchan values, 753*4882a593Smuzhiyun at the expense of slightly more scheduling overhead. 754*4882a593Smuzhiyun 755*4882a593Smuzhiyun If in doubt, say "Y". 756*4882a593Smuzhiyun 757*4882a593Smuzhiyunmenuconfig HYPERVISOR_GUEST 758*4882a593Smuzhiyun bool "Linux guest support" 759*4882a593Smuzhiyun help 760*4882a593Smuzhiyun Say Y here to enable options for running Linux under various hyper- 761*4882a593Smuzhiyun visors. This option enables basic hypervisor detection and platform 762*4882a593Smuzhiyun setup. 763*4882a593Smuzhiyun 764*4882a593Smuzhiyun If you say N, all options in this submenu will be skipped and 765*4882a593Smuzhiyun disabled, and Linux guest support won't be built in. 766*4882a593Smuzhiyun 767*4882a593Smuzhiyunif HYPERVISOR_GUEST 768*4882a593Smuzhiyun 769*4882a593Smuzhiyunconfig PARAVIRT 770*4882a593Smuzhiyun bool "Enable paravirtualization code" 771*4882a593Smuzhiyun help 772*4882a593Smuzhiyun This changes the kernel so it can modify itself when it is run 773*4882a593Smuzhiyun under a hypervisor, potentially improving performance significantly 774*4882a593Smuzhiyun over full virtualization. However, when run without a hypervisor 775*4882a593Smuzhiyun the kernel is theoretically slower and slightly larger. 776*4882a593Smuzhiyun 777*4882a593Smuzhiyunconfig PARAVIRT_XXL 778*4882a593Smuzhiyun bool 779*4882a593Smuzhiyun 780*4882a593Smuzhiyunconfig PARAVIRT_DEBUG 781*4882a593Smuzhiyun bool "paravirt-ops debugging" 782*4882a593Smuzhiyun depends on PARAVIRT && DEBUG_KERNEL 783*4882a593Smuzhiyun help 784*4882a593Smuzhiyun Enable to debug paravirt_ops internals. Specifically, BUG if 785*4882a593Smuzhiyun a paravirt_op is missing when it is called. 786*4882a593Smuzhiyun 787*4882a593Smuzhiyunconfig PARAVIRT_SPINLOCKS 788*4882a593Smuzhiyun bool "Paravirtualization layer for spinlocks" 789*4882a593Smuzhiyun depends on PARAVIRT && SMP 790*4882a593Smuzhiyun help 791*4882a593Smuzhiyun Paravirtualized spinlocks allow a pvops backend to replace the 792*4882a593Smuzhiyun spinlock implementation with something virtualization-friendly 793*4882a593Smuzhiyun (for example, block the virtual CPU rather than spinning). 794*4882a593Smuzhiyun 795*4882a593Smuzhiyun It has a minimal impact on native kernels and gives a nice performance 796*4882a593Smuzhiyun benefit on paravirtualized KVM / Xen kernels. 797*4882a593Smuzhiyun 798*4882a593Smuzhiyun If you are unsure how to answer this question, answer Y. 799*4882a593Smuzhiyun 800*4882a593Smuzhiyunconfig X86_HV_CALLBACK_VECTOR 801*4882a593Smuzhiyun def_bool n 802*4882a593Smuzhiyun 803*4882a593Smuzhiyunsource "arch/x86/xen/Kconfig" 804*4882a593Smuzhiyun 805*4882a593Smuzhiyunconfig KVM_GUEST 806*4882a593Smuzhiyun bool "KVM Guest support (including kvmclock)" 807*4882a593Smuzhiyun depends on PARAVIRT 808*4882a593Smuzhiyun select PARAVIRT_CLOCK 809*4882a593Smuzhiyun select ARCH_CPUIDLE_HALTPOLL 810*4882a593Smuzhiyun select X86_HV_CALLBACK_VECTOR 811*4882a593Smuzhiyun default y 812*4882a593Smuzhiyun help 813*4882a593Smuzhiyun This option enables various optimizations for running under the KVM 814*4882a593Smuzhiyun hypervisor. It includes a paravirtualized clock, so that instead 815*4882a593Smuzhiyun of relying on a PIT (or probably other) emulation by the 816*4882a593Smuzhiyun underlying device model, the host provides the guest with 817*4882a593Smuzhiyun timing infrastructure such as time of day, and system time 818*4882a593Smuzhiyun 819*4882a593Smuzhiyunconfig ARCH_CPUIDLE_HALTPOLL 820*4882a593Smuzhiyun def_bool n 821*4882a593Smuzhiyun prompt "Disable host haltpoll when loading haltpoll driver" 822*4882a593Smuzhiyun help 823*4882a593Smuzhiyun If virtualized under KVM, disable host haltpoll. 824*4882a593Smuzhiyun 825*4882a593Smuzhiyunconfig PVH 826*4882a593Smuzhiyun bool "Support for running PVH guests" 827*4882a593Smuzhiyun help 828*4882a593Smuzhiyun This option enables the PVH entry point for guest virtual machines 829*4882a593Smuzhiyun as specified in the x86/HVM direct boot ABI. 830*4882a593Smuzhiyun 831*4882a593Smuzhiyunconfig PARAVIRT_TIME_ACCOUNTING 832*4882a593Smuzhiyun bool "Paravirtual steal time accounting" 833*4882a593Smuzhiyun depends on PARAVIRT 834*4882a593Smuzhiyun help 835*4882a593Smuzhiyun Select this option to enable fine granularity task steal time 836*4882a593Smuzhiyun accounting. Time spent executing other tasks in parallel with 837*4882a593Smuzhiyun the current vCPU is discounted from the vCPU power. To account for 838*4882a593Smuzhiyun that, there can be a small performance impact. 839*4882a593Smuzhiyun 840*4882a593Smuzhiyun If in doubt, say N here. 841*4882a593Smuzhiyun 842*4882a593Smuzhiyunconfig PARAVIRT_CLOCK 843*4882a593Smuzhiyun bool 844*4882a593Smuzhiyun 845*4882a593Smuzhiyunconfig JAILHOUSE_GUEST 846*4882a593Smuzhiyun bool "Jailhouse non-root cell support" 847*4882a593Smuzhiyun depends on X86_64 && PCI 848*4882a593Smuzhiyun select X86_PM_TIMER 849*4882a593Smuzhiyun help 850*4882a593Smuzhiyun This option allows to run Linux as guest in a Jailhouse non-root 851*4882a593Smuzhiyun cell. You can leave this option disabled if you only want to start 852*4882a593Smuzhiyun Jailhouse and run Linux afterwards in the root cell. 853*4882a593Smuzhiyun 854*4882a593Smuzhiyunconfig ACRN_GUEST 855*4882a593Smuzhiyun bool "ACRN Guest support" 856*4882a593Smuzhiyun depends on X86_64 857*4882a593Smuzhiyun select X86_HV_CALLBACK_VECTOR 858*4882a593Smuzhiyun help 859*4882a593Smuzhiyun This option allows to run Linux as guest in the ACRN hypervisor. ACRN is 860*4882a593Smuzhiyun a flexible, lightweight reference open-source hypervisor, built with 861*4882a593Smuzhiyun real-time and safety-criticality in mind. It is built for embedded 862*4882a593Smuzhiyun IOT with small footprint and real-time features. More details can be 863*4882a593Smuzhiyun found in https://projectacrn.org/. 864*4882a593Smuzhiyun 865*4882a593Smuzhiyunendif #HYPERVISOR_GUEST 866*4882a593Smuzhiyun 867*4882a593Smuzhiyunsource "arch/x86/Kconfig.cpu" 868*4882a593Smuzhiyun 869*4882a593Smuzhiyunconfig HPET_TIMER 870*4882a593Smuzhiyun def_bool X86_64 871*4882a593Smuzhiyun prompt "HPET Timer Support" if X86_32 872*4882a593Smuzhiyun help 873*4882a593Smuzhiyun Use the IA-PC HPET (High Precision Event Timer) to manage 874*4882a593Smuzhiyun time in preference to the PIT and RTC, if a HPET is 875*4882a593Smuzhiyun present. 876*4882a593Smuzhiyun HPET is the next generation timer replacing legacy 8254s. 877*4882a593Smuzhiyun The HPET provides a stable time base on SMP 878*4882a593Smuzhiyun systems, unlike the TSC, but it is more expensive to access, 879*4882a593Smuzhiyun as it is off-chip. The interface used is documented 880*4882a593Smuzhiyun in the HPET spec, revision 1. 881*4882a593Smuzhiyun 882*4882a593Smuzhiyun You can safely choose Y here. However, HPET will only be 883*4882a593Smuzhiyun activated if the platform and the BIOS support this feature. 884*4882a593Smuzhiyun Otherwise the 8254 will be used for timing services. 885*4882a593Smuzhiyun 886*4882a593Smuzhiyun Choose N to continue using the legacy 8254 timer. 887*4882a593Smuzhiyun 888*4882a593Smuzhiyunconfig HPET_EMULATE_RTC 889*4882a593Smuzhiyun def_bool y 890*4882a593Smuzhiyun depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y) 891*4882a593Smuzhiyun 892*4882a593Smuzhiyunconfig APB_TIMER 893*4882a593Smuzhiyun def_bool y if X86_INTEL_MID 894*4882a593Smuzhiyun prompt "Intel MID APB Timer Support" if X86_INTEL_MID 895*4882a593Smuzhiyun select DW_APB_TIMER 896*4882a593Smuzhiyun depends on X86_INTEL_MID && SFI 897*4882a593Smuzhiyun help 898*4882a593Smuzhiyun APB timer is the replacement for 8254, HPET on X86 MID platforms. 899*4882a593Smuzhiyun The APBT provides a stable time base on SMP 900*4882a593Smuzhiyun systems, unlike the TSC, but it is more expensive to access, 901*4882a593Smuzhiyun as it is off-chip. APB timers are always running regardless of CPU 902*4882a593Smuzhiyun C states, they are used as per CPU clockevent device when possible. 903*4882a593Smuzhiyun 904*4882a593Smuzhiyun# Mark as expert because too many people got it wrong. 905*4882a593Smuzhiyun# The code disables itself when not needed. 906*4882a593Smuzhiyunconfig DMI 907*4882a593Smuzhiyun default y 908*4882a593Smuzhiyun select DMI_SCAN_MACHINE_NON_EFI_FALLBACK 909*4882a593Smuzhiyun bool "Enable DMI scanning" if EXPERT 910*4882a593Smuzhiyun help 911*4882a593Smuzhiyun Enabled scanning of DMI to identify machine quirks. Say Y 912*4882a593Smuzhiyun here unless you have verified that your setup is not 913*4882a593Smuzhiyun affected by entries in the DMI blacklist. Required by PNP 914*4882a593Smuzhiyun BIOS code. 915*4882a593Smuzhiyun 916*4882a593Smuzhiyunconfig GART_IOMMU 917*4882a593Smuzhiyun bool "Old AMD GART IOMMU support" 918*4882a593Smuzhiyun select DMA_OPS 919*4882a593Smuzhiyun select IOMMU_HELPER 920*4882a593Smuzhiyun select SWIOTLB 921*4882a593Smuzhiyun depends on X86_64 && PCI && AMD_NB 922*4882a593Smuzhiyun help 923*4882a593Smuzhiyun Provides a driver for older AMD Athlon64/Opteron/Turion/Sempron 924*4882a593Smuzhiyun GART based hardware IOMMUs. 925*4882a593Smuzhiyun 926*4882a593Smuzhiyun The GART supports full DMA access for devices with 32-bit access 927*4882a593Smuzhiyun limitations, on systems with more than 3 GB. This is usually needed 928*4882a593Smuzhiyun for USB, sound, many IDE/SATA chipsets and some other devices. 929*4882a593Smuzhiyun 930*4882a593Smuzhiyun Newer systems typically have a modern AMD IOMMU, supported via 931*4882a593Smuzhiyun the CONFIG_AMD_IOMMU=y config option. 932*4882a593Smuzhiyun 933*4882a593Smuzhiyun In normal configurations this driver is only active when needed: 934*4882a593Smuzhiyun there's more than 3 GB of memory and the system contains a 935*4882a593Smuzhiyun 32-bit limited device. 936*4882a593Smuzhiyun 937*4882a593Smuzhiyun If unsure, say Y. 938*4882a593Smuzhiyun 939*4882a593Smuzhiyunconfig MAXSMP 940*4882a593Smuzhiyun bool "Enable Maximum number of SMP Processors and NUMA Nodes" 941*4882a593Smuzhiyun depends on X86_64 && SMP && DEBUG_KERNEL 942*4882a593Smuzhiyun select CPUMASK_OFFSTACK 943*4882a593Smuzhiyun help 944*4882a593Smuzhiyun Enable maximum number of CPUS and NUMA Nodes for this architecture. 945*4882a593Smuzhiyun If unsure, say N. 946*4882a593Smuzhiyun 947*4882a593Smuzhiyun# 948*4882a593Smuzhiyun# The maximum number of CPUs supported: 949*4882a593Smuzhiyun# 950*4882a593Smuzhiyun# The main config value is NR_CPUS, which defaults to NR_CPUS_DEFAULT, 951*4882a593Smuzhiyun# and which can be configured interactively in the 952*4882a593Smuzhiyun# [NR_CPUS_RANGE_BEGIN ... NR_CPUS_RANGE_END] range. 953*4882a593Smuzhiyun# 954*4882a593Smuzhiyun# The ranges are different on 32-bit and 64-bit kernels, depending on 955*4882a593Smuzhiyun# hardware capabilities and scalability features of the kernel. 956*4882a593Smuzhiyun# 957*4882a593Smuzhiyun# ( If MAXSMP is enabled we just use the highest possible value and disable 958*4882a593Smuzhiyun# interactive configuration. ) 959*4882a593Smuzhiyun# 960*4882a593Smuzhiyun 961*4882a593Smuzhiyunconfig NR_CPUS_RANGE_BEGIN 962*4882a593Smuzhiyun int 963*4882a593Smuzhiyun default NR_CPUS_RANGE_END if MAXSMP 964*4882a593Smuzhiyun default 1 if !SMP 965*4882a593Smuzhiyun default 2 966*4882a593Smuzhiyun 967*4882a593Smuzhiyunconfig NR_CPUS_RANGE_END 968*4882a593Smuzhiyun int 969*4882a593Smuzhiyun depends on X86_32 970*4882a593Smuzhiyun default 64 if SMP && X86_BIGSMP 971*4882a593Smuzhiyun default 8 if SMP && !X86_BIGSMP 972*4882a593Smuzhiyun default 1 if !SMP 973*4882a593Smuzhiyun 974*4882a593Smuzhiyunconfig NR_CPUS_RANGE_END 975*4882a593Smuzhiyun int 976*4882a593Smuzhiyun depends on X86_64 977*4882a593Smuzhiyun default 8192 if SMP && CPUMASK_OFFSTACK 978*4882a593Smuzhiyun default 512 if SMP && !CPUMASK_OFFSTACK 979*4882a593Smuzhiyun default 1 if !SMP 980*4882a593Smuzhiyun 981*4882a593Smuzhiyunconfig NR_CPUS_DEFAULT 982*4882a593Smuzhiyun int 983*4882a593Smuzhiyun depends on X86_32 984*4882a593Smuzhiyun default 32 if X86_BIGSMP 985*4882a593Smuzhiyun default 8 if SMP 986*4882a593Smuzhiyun default 1 if !SMP 987*4882a593Smuzhiyun 988*4882a593Smuzhiyunconfig NR_CPUS_DEFAULT 989*4882a593Smuzhiyun int 990*4882a593Smuzhiyun depends on X86_64 991*4882a593Smuzhiyun default 8192 if MAXSMP 992*4882a593Smuzhiyun default 64 if SMP 993*4882a593Smuzhiyun default 1 if !SMP 994*4882a593Smuzhiyun 995*4882a593Smuzhiyunconfig NR_CPUS 996*4882a593Smuzhiyun int "Maximum number of CPUs" if SMP && !MAXSMP 997*4882a593Smuzhiyun range NR_CPUS_RANGE_BEGIN NR_CPUS_RANGE_END 998*4882a593Smuzhiyun default NR_CPUS_DEFAULT 999*4882a593Smuzhiyun help 1000*4882a593Smuzhiyun This allows you to specify the maximum number of CPUs which this 1001*4882a593Smuzhiyun kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum 1002*4882a593Smuzhiyun supported value is 8192, otherwise the maximum value is 512. The 1003*4882a593Smuzhiyun minimum value which makes sense is 2. 1004*4882a593Smuzhiyun 1005*4882a593Smuzhiyun This is purely to save memory: each supported CPU adds about 8KB 1006*4882a593Smuzhiyun to the kernel image. 1007*4882a593Smuzhiyun 1008*4882a593Smuzhiyunconfig SCHED_SMT 1009*4882a593Smuzhiyun def_bool y if SMP 1010*4882a593Smuzhiyun 1011*4882a593Smuzhiyunconfig SCHED_MC 1012*4882a593Smuzhiyun def_bool y 1013*4882a593Smuzhiyun prompt "Multi-core scheduler support" 1014*4882a593Smuzhiyun depends on SMP 1015*4882a593Smuzhiyun help 1016*4882a593Smuzhiyun Multi-core scheduler support improves the CPU scheduler's decision 1017*4882a593Smuzhiyun making when dealing with multi-core CPU chips at a cost of slightly 1018*4882a593Smuzhiyun increased overhead in some places. If unsure say N here. 1019*4882a593Smuzhiyun 1020*4882a593Smuzhiyunconfig SCHED_MC_PRIO 1021*4882a593Smuzhiyun bool "CPU core priorities scheduler support" 1022*4882a593Smuzhiyun depends on SCHED_MC && CPU_SUP_INTEL 1023*4882a593Smuzhiyun select X86_INTEL_PSTATE 1024*4882a593Smuzhiyun select CPU_FREQ 1025*4882a593Smuzhiyun default y 1026*4882a593Smuzhiyun help 1027*4882a593Smuzhiyun Intel Turbo Boost Max Technology 3.0 enabled CPUs have a 1028*4882a593Smuzhiyun core ordering determined at manufacturing time, which allows 1029*4882a593Smuzhiyun certain cores to reach higher turbo frequencies (when running 1030*4882a593Smuzhiyun single threaded workloads) than others. 1031*4882a593Smuzhiyun 1032*4882a593Smuzhiyun Enabling this kernel feature teaches the scheduler about 1033*4882a593Smuzhiyun the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the 1034*4882a593Smuzhiyun scheduler's CPU selection logic accordingly, so that higher 1035*4882a593Smuzhiyun overall system performance can be achieved. 1036*4882a593Smuzhiyun 1037*4882a593Smuzhiyun This feature will have no effect on CPUs without this feature. 1038*4882a593Smuzhiyun 1039*4882a593Smuzhiyun If unsure say Y here. 1040*4882a593Smuzhiyun 1041*4882a593Smuzhiyunconfig UP_LATE_INIT 1042*4882a593Smuzhiyun def_bool y 1043*4882a593Smuzhiyun depends on !SMP && X86_LOCAL_APIC 1044*4882a593Smuzhiyun 1045*4882a593Smuzhiyunconfig X86_UP_APIC 1046*4882a593Smuzhiyun bool "Local APIC support on uniprocessors" if !PCI_MSI 1047*4882a593Smuzhiyun default PCI_MSI 1048*4882a593Smuzhiyun depends on X86_32 && !SMP && !X86_32_NON_STANDARD 1049*4882a593Smuzhiyun help 1050*4882a593Smuzhiyun A local APIC (Advanced Programmable Interrupt Controller) is an 1051*4882a593Smuzhiyun integrated interrupt controller in the CPU. If you have a single-CPU 1052*4882a593Smuzhiyun system which has a processor with a local APIC, you can say Y here to 1053*4882a593Smuzhiyun enable and use it. If you say Y here even though your machine doesn't 1054*4882a593Smuzhiyun have a local APIC, then the kernel will still run with no slowdown at 1055*4882a593Smuzhiyun all. The local APIC supports CPU-generated self-interrupts (timer, 1056*4882a593Smuzhiyun performance counters), and the NMI watchdog which detects hard 1057*4882a593Smuzhiyun lockups. 1058*4882a593Smuzhiyun 1059*4882a593Smuzhiyunconfig X86_UP_IOAPIC 1060*4882a593Smuzhiyun bool "IO-APIC support on uniprocessors" 1061*4882a593Smuzhiyun depends on X86_UP_APIC 1062*4882a593Smuzhiyun help 1063*4882a593Smuzhiyun An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an 1064*4882a593Smuzhiyun SMP-capable replacement for PC-style interrupt controllers. Most 1065*4882a593Smuzhiyun SMP systems and many recent uniprocessor systems have one. 1066*4882a593Smuzhiyun 1067*4882a593Smuzhiyun If you have a single-CPU system with an IO-APIC, you can say Y here 1068*4882a593Smuzhiyun to use it. If you say Y here even though your machine doesn't have 1069*4882a593Smuzhiyun an IO-APIC, then the kernel will still run with no slowdown at all. 1070*4882a593Smuzhiyun 1071*4882a593Smuzhiyunconfig X86_LOCAL_APIC 1072*4882a593Smuzhiyun def_bool y 1073*4882a593Smuzhiyun depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI 1074*4882a593Smuzhiyun select IRQ_DOMAIN_HIERARCHY 1075*4882a593Smuzhiyun select PCI_MSI_IRQ_DOMAIN if PCI_MSI 1076*4882a593Smuzhiyun 1077*4882a593Smuzhiyunconfig X86_IO_APIC 1078*4882a593Smuzhiyun def_bool y 1079*4882a593Smuzhiyun depends on X86_LOCAL_APIC || X86_UP_IOAPIC 1080*4882a593Smuzhiyun 1081*4882a593Smuzhiyunconfig X86_REROUTE_FOR_BROKEN_BOOT_IRQS 1082*4882a593Smuzhiyun bool "Reroute for broken boot IRQs" 1083*4882a593Smuzhiyun depends on X86_IO_APIC 1084*4882a593Smuzhiyun help 1085*4882a593Smuzhiyun This option enables a workaround that fixes a source of 1086*4882a593Smuzhiyun spurious interrupts. This is recommended when threaded 1087*4882a593Smuzhiyun interrupt handling is used on systems where the generation of 1088*4882a593Smuzhiyun superfluous "boot interrupts" cannot be disabled. 1089*4882a593Smuzhiyun 1090*4882a593Smuzhiyun Some chipsets generate a legacy INTx "boot IRQ" when the IRQ 1091*4882a593Smuzhiyun entry in the chipset's IO-APIC is masked (as, e.g. the RT 1092*4882a593Smuzhiyun kernel does during interrupt handling). On chipsets where this 1093*4882a593Smuzhiyun boot IRQ generation cannot be disabled, this workaround keeps 1094*4882a593Smuzhiyun the original IRQ line masked so that only the equivalent "boot 1095*4882a593Smuzhiyun IRQ" is delivered to the CPUs. The workaround also tells the 1096*4882a593Smuzhiyun kernel to set up the IRQ handler on the boot IRQ line. In this 1097*4882a593Smuzhiyun way only one interrupt is delivered to the kernel. Otherwise 1098*4882a593Smuzhiyun the spurious second interrupt may cause the kernel to bring 1099*4882a593Smuzhiyun down (vital) interrupt lines. 1100*4882a593Smuzhiyun 1101*4882a593Smuzhiyun Only affects "broken" chipsets. Interrupt sharing may be 1102*4882a593Smuzhiyun increased on these systems. 1103*4882a593Smuzhiyun 1104*4882a593Smuzhiyunconfig X86_MCE 1105*4882a593Smuzhiyun bool "Machine Check / overheating reporting" 1106*4882a593Smuzhiyun select GENERIC_ALLOCATOR 1107*4882a593Smuzhiyun default y 1108*4882a593Smuzhiyun help 1109*4882a593Smuzhiyun Machine Check support allows the processor to notify the 1110*4882a593Smuzhiyun kernel if it detects a problem (e.g. overheating, data corruption). 1111*4882a593Smuzhiyun The action the kernel takes depends on the severity of the problem, 1112*4882a593Smuzhiyun ranging from warning messages to halting the machine. 1113*4882a593Smuzhiyun 1114*4882a593Smuzhiyunconfig X86_MCELOG_LEGACY 1115*4882a593Smuzhiyun bool "Support for deprecated /dev/mcelog character device" 1116*4882a593Smuzhiyun depends on X86_MCE 1117*4882a593Smuzhiyun help 1118*4882a593Smuzhiyun Enable support for /dev/mcelog which is needed by the old mcelog 1119*4882a593Smuzhiyun userspace logging daemon. Consider switching to the new generation 1120*4882a593Smuzhiyun rasdaemon solution. 1121*4882a593Smuzhiyun 1122*4882a593Smuzhiyunconfig X86_MCE_INTEL 1123*4882a593Smuzhiyun def_bool y 1124*4882a593Smuzhiyun prompt "Intel MCE features" 1125*4882a593Smuzhiyun depends on X86_MCE && X86_LOCAL_APIC 1126*4882a593Smuzhiyun help 1127*4882a593Smuzhiyun Additional support for intel specific MCE features such as 1128*4882a593Smuzhiyun the thermal monitor. 1129*4882a593Smuzhiyun 1130*4882a593Smuzhiyunconfig X86_MCE_AMD 1131*4882a593Smuzhiyun def_bool y 1132*4882a593Smuzhiyun prompt "AMD MCE features" 1133*4882a593Smuzhiyun depends on X86_MCE && X86_LOCAL_APIC && AMD_NB 1134*4882a593Smuzhiyun help 1135*4882a593Smuzhiyun Additional support for AMD specific MCE features such as 1136*4882a593Smuzhiyun the DRAM Error Threshold. 1137*4882a593Smuzhiyun 1138*4882a593Smuzhiyunconfig X86_ANCIENT_MCE 1139*4882a593Smuzhiyun bool "Support for old Pentium 5 / WinChip machine checks" 1140*4882a593Smuzhiyun depends on X86_32 && X86_MCE 1141*4882a593Smuzhiyun help 1142*4882a593Smuzhiyun Include support for machine check handling on old Pentium 5 or WinChip 1143*4882a593Smuzhiyun systems. These typically need to be enabled explicitly on the command 1144*4882a593Smuzhiyun line. 1145*4882a593Smuzhiyun 1146*4882a593Smuzhiyunconfig X86_MCE_THRESHOLD 1147*4882a593Smuzhiyun depends on X86_MCE_AMD || X86_MCE_INTEL 1148*4882a593Smuzhiyun def_bool y 1149*4882a593Smuzhiyun 1150*4882a593Smuzhiyunconfig X86_MCE_INJECT 1151*4882a593Smuzhiyun depends on X86_MCE && X86_LOCAL_APIC && DEBUG_FS 1152*4882a593Smuzhiyun tristate "Machine check injector support" 1153*4882a593Smuzhiyun help 1154*4882a593Smuzhiyun Provide support for injecting machine checks for testing purposes. 1155*4882a593Smuzhiyun If you don't know what a machine check is and you don't do kernel 1156*4882a593Smuzhiyun QA it is safe to say n. 1157*4882a593Smuzhiyun 1158*4882a593Smuzhiyunconfig X86_THERMAL_VECTOR 1159*4882a593Smuzhiyun def_bool y 1160*4882a593Smuzhiyun depends on X86_MCE_INTEL 1161*4882a593Smuzhiyun 1162*4882a593Smuzhiyunsource "arch/x86/events/Kconfig" 1163*4882a593Smuzhiyun 1164*4882a593Smuzhiyunconfig X86_LEGACY_VM86 1165*4882a593Smuzhiyun bool "Legacy VM86 support" 1166*4882a593Smuzhiyun depends on X86_32 1167*4882a593Smuzhiyun help 1168*4882a593Smuzhiyun This option allows user programs to put the CPU into V8086 1169*4882a593Smuzhiyun mode, which is an 80286-era approximation of 16-bit real mode. 1170*4882a593Smuzhiyun 1171*4882a593Smuzhiyun Some very old versions of X and/or vbetool require this option 1172*4882a593Smuzhiyun for user mode setting. Similarly, DOSEMU will use it if 1173*4882a593Smuzhiyun available to accelerate real mode DOS programs. However, any 1174*4882a593Smuzhiyun recent version of DOSEMU, X, or vbetool should be fully 1175*4882a593Smuzhiyun functional even without kernel VM86 support, as they will all 1176*4882a593Smuzhiyun fall back to software emulation. Nevertheless, if you are using 1177*4882a593Smuzhiyun a 16-bit DOS program where 16-bit performance matters, vm86 1178*4882a593Smuzhiyun mode might be faster than emulation and you might want to 1179*4882a593Smuzhiyun enable this option. 1180*4882a593Smuzhiyun 1181*4882a593Smuzhiyun Note that any app that works on a 64-bit kernel is unlikely to 1182*4882a593Smuzhiyun need this option, as 64-bit kernels don't, and can't, support 1183*4882a593Smuzhiyun V8086 mode. This option is also unrelated to 16-bit protected 1184*4882a593Smuzhiyun mode and is not needed to run most 16-bit programs under Wine. 1185*4882a593Smuzhiyun 1186*4882a593Smuzhiyun Enabling this option increases the complexity of the kernel 1187*4882a593Smuzhiyun and slows down exception handling a tiny bit. 1188*4882a593Smuzhiyun 1189*4882a593Smuzhiyun If unsure, say N here. 1190*4882a593Smuzhiyun 1191*4882a593Smuzhiyunconfig VM86 1192*4882a593Smuzhiyun bool 1193*4882a593Smuzhiyun default X86_LEGACY_VM86 1194*4882a593Smuzhiyun 1195*4882a593Smuzhiyunconfig X86_16BIT 1196*4882a593Smuzhiyun bool "Enable support for 16-bit segments" if EXPERT 1197*4882a593Smuzhiyun default y 1198*4882a593Smuzhiyun depends on MODIFY_LDT_SYSCALL 1199*4882a593Smuzhiyun help 1200*4882a593Smuzhiyun This option is required by programs like Wine to run 16-bit 1201*4882a593Smuzhiyun protected mode legacy code on x86 processors. Disabling 1202*4882a593Smuzhiyun this option saves about 300 bytes on i386, or around 6K text 1203*4882a593Smuzhiyun plus 16K runtime memory on x86-64, 1204*4882a593Smuzhiyun 1205*4882a593Smuzhiyunconfig X86_ESPFIX32 1206*4882a593Smuzhiyun def_bool y 1207*4882a593Smuzhiyun depends on X86_16BIT && X86_32 1208*4882a593Smuzhiyun 1209*4882a593Smuzhiyunconfig X86_ESPFIX64 1210*4882a593Smuzhiyun def_bool y 1211*4882a593Smuzhiyun depends on X86_16BIT && X86_64 1212*4882a593Smuzhiyun 1213*4882a593Smuzhiyunconfig X86_VSYSCALL_EMULATION 1214*4882a593Smuzhiyun bool "Enable vsyscall emulation" if EXPERT 1215*4882a593Smuzhiyun default y 1216*4882a593Smuzhiyun depends on X86_64 1217*4882a593Smuzhiyun help 1218*4882a593Smuzhiyun This enables emulation of the legacy vsyscall page. Disabling 1219*4882a593Smuzhiyun it is roughly equivalent to booting with vsyscall=none, except 1220*4882a593Smuzhiyun that it will also disable the helpful warning if a program 1221*4882a593Smuzhiyun tries to use a vsyscall. With this option set to N, offending 1222*4882a593Smuzhiyun programs will just segfault, citing addresses of the form 1223*4882a593Smuzhiyun 0xffffffffff600?00. 1224*4882a593Smuzhiyun 1225*4882a593Smuzhiyun This option is required by many programs built before 2013, and 1226*4882a593Smuzhiyun care should be used even with newer programs if set to N. 1227*4882a593Smuzhiyun 1228*4882a593Smuzhiyun Disabling this option saves about 7K of kernel size and 1229*4882a593Smuzhiyun possibly 4K of additional runtime pagetable memory. 1230*4882a593Smuzhiyun 1231*4882a593Smuzhiyunconfig X86_IOPL_IOPERM 1232*4882a593Smuzhiyun bool "IOPERM and IOPL Emulation" 1233*4882a593Smuzhiyun default y 1234*4882a593Smuzhiyun help 1235*4882a593Smuzhiyun This enables the ioperm() and iopl() syscalls which are necessary 1236*4882a593Smuzhiyun for legacy applications. 1237*4882a593Smuzhiyun 1238*4882a593Smuzhiyun Legacy IOPL support is an overbroad mechanism which allows user 1239*4882a593Smuzhiyun space aside of accessing all 65536 I/O ports also to disable 1240*4882a593Smuzhiyun interrupts. To gain this access the caller needs CAP_SYS_RAWIO 1241*4882a593Smuzhiyun capabilities and permission from potentially active security 1242*4882a593Smuzhiyun modules. 1243*4882a593Smuzhiyun 1244*4882a593Smuzhiyun The emulation restricts the functionality of the syscall to 1245*4882a593Smuzhiyun only allowing the full range I/O port access, but prevents the 1246*4882a593Smuzhiyun ability to disable interrupts from user space which would be 1247*4882a593Smuzhiyun granted if the hardware IOPL mechanism would be used. 1248*4882a593Smuzhiyun 1249*4882a593Smuzhiyunconfig TOSHIBA 1250*4882a593Smuzhiyun tristate "Toshiba Laptop support" 1251*4882a593Smuzhiyun depends on X86_32 1252*4882a593Smuzhiyun help 1253*4882a593Smuzhiyun This adds a driver to safely access the System Management Mode of 1254*4882a593Smuzhiyun the CPU on Toshiba portables with a genuine Toshiba BIOS. It does 1255*4882a593Smuzhiyun not work on models with a Phoenix BIOS. The System Management Mode 1256*4882a593Smuzhiyun is used to set the BIOS and power saving options on Toshiba portables. 1257*4882a593Smuzhiyun 1258*4882a593Smuzhiyun For information on utilities to make use of this driver see the 1259*4882a593Smuzhiyun Toshiba Linux utilities web site at: 1260*4882a593Smuzhiyun <http://www.buzzard.org.uk/toshiba/>. 1261*4882a593Smuzhiyun 1262*4882a593Smuzhiyun Say Y if you intend to run this kernel on a Toshiba portable. 1263*4882a593Smuzhiyun Say N otherwise. 1264*4882a593Smuzhiyun 1265*4882a593Smuzhiyunconfig I8K 1266*4882a593Smuzhiyun tristate "Dell i8k legacy laptop support" 1267*4882a593Smuzhiyun depends on HWMON 1268*4882a593Smuzhiyun depends on PROC_FS 1269*4882a593Smuzhiyun select SENSORS_DELL_SMM 1270*4882a593Smuzhiyun help 1271*4882a593Smuzhiyun This option enables legacy /proc/i8k userspace interface in hwmon 1272*4882a593Smuzhiyun dell-smm-hwmon driver. Character file /proc/i8k reports bios version, 1273*4882a593Smuzhiyun temperature and allows controlling fan speeds of Dell laptops via 1274*4882a593Smuzhiyun System Management Mode. For old Dell laptops (like Dell Inspiron 8000) 1275*4882a593Smuzhiyun it reports also power and hotkey status. For fan speed control is 1276*4882a593Smuzhiyun needed userspace package i8kutils. 1277*4882a593Smuzhiyun 1278*4882a593Smuzhiyun Say Y if you intend to run this kernel on old Dell laptops or want to 1279*4882a593Smuzhiyun use userspace package i8kutils. 1280*4882a593Smuzhiyun Say N otherwise. 1281*4882a593Smuzhiyun 1282*4882a593Smuzhiyunconfig X86_REBOOTFIXUPS 1283*4882a593Smuzhiyun bool "Enable X86 board specific fixups for reboot" 1284*4882a593Smuzhiyun depends on X86_32 1285*4882a593Smuzhiyun help 1286*4882a593Smuzhiyun This enables chipset and/or board specific fixups to be done 1287*4882a593Smuzhiyun in order to get reboot to work correctly. This is only needed on 1288*4882a593Smuzhiyun some combinations of hardware and BIOS. The symptom, for which 1289*4882a593Smuzhiyun this config is intended, is when reboot ends with a stalled/hung 1290*4882a593Smuzhiyun system. 1291*4882a593Smuzhiyun 1292*4882a593Smuzhiyun Currently, the only fixup is for the Geode machines using 1293*4882a593Smuzhiyun CS5530A and CS5536 chipsets and the RDC R-321x SoC. 1294*4882a593Smuzhiyun 1295*4882a593Smuzhiyun Say Y if you want to enable the fixup. Currently, it's safe to 1296*4882a593Smuzhiyun enable this option even if you don't need it. 1297*4882a593Smuzhiyun Say N otherwise. 1298*4882a593Smuzhiyun 1299*4882a593Smuzhiyunconfig MICROCODE 1300*4882a593Smuzhiyun bool "CPU microcode loading support" 1301*4882a593Smuzhiyun default y 1302*4882a593Smuzhiyun depends on CPU_SUP_AMD || CPU_SUP_INTEL 1303*4882a593Smuzhiyun help 1304*4882a593Smuzhiyun If you say Y here, you will be able to update the microcode on 1305*4882a593Smuzhiyun Intel and AMD processors. The Intel support is for the IA32 family, 1306*4882a593Smuzhiyun e.g. Pentium Pro, Pentium II, Pentium III, Pentium 4, Xeon etc. The 1307*4882a593Smuzhiyun AMD support is for families 0x10 and later. You will obviously need 1308*4882a593Smuzhiyun the actual microcode binary data itself which is not shipped with 1309*4882a593Smuzhiyun the Linux kernel. 1310*4882a593Smuzhiyun 1311*4882a593Smuzhiyun The preferred method to load microcode from a detached initrd is described 1312*4882a593Smuzhiyun in Documentation/x86/microcode.rst. For that you need to enable 1313*4882a593Smuzhiyun CONFIG_BLK_DEV_INITRD in order for the loader to be able to scan the 1314*4882a593Smuzhiyun initrd for microcode blobs. 1315*4882a593Smuzhiyun 1316*4882a593Smuzhiyun In addition, you can build the microcode into the kernel. For that you 1317*4882a593Smuzhiyun need to add the vendor-supplied microcode to the CONFIG_EXTRA_FIRMWARE 1318*4882a593Smuzhiyun config option. 1319*4882a593Smuzhiyun 1320*4882a593Smuzhiyunconfig MICROCODE_INTEL 1321*4882a593Smuzhiyun bool "Intel microcode loading support" 1322*4882a593Smuzhiyun depends on CPU_SUP_INTEL && MICROCODE 1323*4882a593Smuzhiyun default MICROCODE 1324*4882a593Smuzhiyun help 1325*4882a593Smuzhiyun This options enables microcode patch loading support for Intel 1326*4882a593Smuzhiyun processors. 1327*4882a593Smuzhiyun 1328*4882a593Smuzhiyun For the current Intel microcode data package go to 1329*4882a593Smuzhiyun <https://downloadcenter.intel.com> and search for 1330*4882a593Smuzhiyun 'Linux Processor Microcode Data File'. 1331*4882a593Smuzhiyun 1332*4882a593Smuzhiyunconfig MICROCODE_AMD 1333*4882a593Smuzhiyun bool "AMD microcode loading support" 1334*4882a593Smuzhiyun depends on CPU_SUP_AMD && MICROCODE 1335*4882a593Smuzhiyun help 1336*4882a593Smuzhiyun If you select this option, microcode patch loading support for AMD 1337*4882a593Smuzhiyun processors will be enabled. 1338*4882a593Smuzhiyun 1339*4882a593Smuzhiyunconfig MICROCODE_OLD_INTERFACE 1340*4882a593Smuzhiyun bool "Ancient loading interface (DEPRECATED)" 1341*4882a593Smuzhiyun default n 1342*4882a593Smuzhiyun depends on MICROCODE 1343*4882a593Smuzhiyun help 1344*4882a593Smuzhiyun DO NOT USE THIS! This is the ancient /dev/cpu/microcode interface 1345*4882a593Smuzhiyun which was used by userspace tools like iucode_tool and microcode.ctl. 1346*4882a593Smuzhiyun It is inadequate because it runs too late to be able to properly 1347*4882a593Smuzhiyun load microcode on a machine and it needs special tools. Instead, you 1348*4882a593Smuzhiyun should've switched to the early loading method with the initrd or 1349*4882a593Smuzhiyun builtin microcode by now: Documentation/x86/microcode.rst 1350*4882a593Smuzhiyun 1351*4882a593Smuzhiyunconfig X86_MSR 1352*4882a593Smuzhiyun tristate "/dev/cpu/*/msr - Model-specific register support" 1353*4882a593Smuzhiyun help 1354*4882a593Smuzhiyun This device gives privileged processes access to the x86 1355*4882a593Smuzhiyun Model-Specific Registers (MSRs). It is a character device with 1356*4882a593Smuzhiyun major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr. 1357*4882a593Smuzhiyun MSR accesses are directed to a specific CPU on multi-processor 1358*4882a593Smuzhiyun systems. 1359*4882a593Smuzhiyun 1360*4882a593Smuzhiyunconfig X86_CPUID 1361*4882a593Smuzhiyun tristate "/dev/cpu/*/cpuid - CPU information support" 1362*4882a593Smuzhiyun help 1363*4882a593Smuzhiyun This device gives processes access to the x86 CPUID instruction to 1364*4882a593Smuzhiyun be executed on a specific processor. It is a character device 1365*4882a593Smuzhiyun with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to 1366*4882a593Smuzhiyun /dev/cpu/31/cpuid. 1367*4882a593Smuzhiyun 1368*4882a593Smuzhiyunchoice 1369*4882a593Smuzhiyun prompt "High Memory Support" 1370*4882a593Smuzhiyun default HIGHMEM4G 1371*4882a593Smuzhiyun depends on X86_32 1372*4882a593Smuzhiyun 1373*4882a593Smuzhiyunconfig NOHIGHMEM 1374*4882a593Smuzhiyun bool "off" 1375*4882a593Smuzhiyun help 1376*4882a593Smuzhiyun Linux can use up to 64 Gigabytes of physical memory on x86 systems. 1377*4882a593Smuzhiyun However, the address space of 32-bit x86 processors is only 4 1378*4882a593Smuzhiyun Gigabytes large. That means that, if you have a large amount of 1379*4882a593Smuzhiyun physical memory, not all of it can be "permanently mapped" by the 1380*4882a593Smuzhiyun kernel. The physical memory that's not permanently mapped is called 1381*4882a593Smuzhiyun "high memory". 1382*4882a593Smuzhiyun 1383*4882a593Smuzhiyun If you are compiling a kernel which will never run on a machine with 1384*4882a593Smuzhiyun more than 1 Gigabyte total physical RAM, answer "off" here (default 1385*4882a593Smuzhiyun choice and suitable for most users). This will result in a "3GB/1GB" 1386*4882a593Smuzhiyun split: 3GB are mapped so that each process sees a 3GB virtual memory 1387*4882a593Smuzhiyun space and the remaining part of the 4GB virtual memory space is used 1388*4882a593Smuzhiyun by the kernel to permanently map as much physical memory as 1389*4882a593Smuzhiyun possible. 1390*4882a593Smuzhiyun 1391*4882a593Smuzhiyun If the machine has between 1 and 4 Gigabytes physical RAM, then 1392*4882a593Smuzhiyun answer "4GB" here. 1393*4882a593Smuzhiyun 1394*4882a593Smuzhiyun If more than 4 Gigabytes is used then answer "64GB" here. This 1395*4882a593Smuzhiyun selection turns Intel PAE (Physical Address Extension) mode on. 1396*4882a593Smuzhiyun PAE implements 3-level paging on IA32 processors. PAE is fully 1397*4882a593Smuzhiyun supported by Linux, PAE mode is implemented on all recent Intel 1398*4882a593Smuzhiyun processors (Pentium Pro and better). NOTE: If you say "64GB" here, 1399*4882a593Smuzhiyun then the kernel will not boot on CPUs that don't support PAE! 1400*4882a593Smuzhiyun 1401*4882a593Smuzhiyun The actual amount of total physical memory will either be 1402*4882a593Smuzhiyun auto detected or can be forced by using a kernel command line option 1403*4882a593Smuzhiyun such as "mem=256M". (Try "man bootparam" or see the documentation of 1404*4882a593Smuzhiyun your boot loader (lilo or loadlin) about how to pass options to the 1405*4882a593Smuzhiyun kernel at boot time.) 1406*4882a593Smuzhiyun 1407*4882a593Smuzhiyun If unsure, say "off". 1408*4882a593Smuzhiyun 1409*4882a593Smuzhiyunconfig HIGHMEM4G 1410*4882a593Smuzhiyun bool "4GB" 1411*4882a593Smuzhiyun help 1412*4882a593Smuzhiyun Select this if you have a 32-bit processor and between 1 and 4 1413*4882a593Smuzhiyun gigabytes of physical RAM. 1414*4882a593Smuzhiyun 1415*4882a593Smuzhiyunconfig HIGHMEM64G 1416*4882a593Smuzhiyun bool "64GB" 1417*4882a593Smuzhiyun depends on !M486SX && !M486 && !M586 && !M586TSC && !M586MMX && !MGEODE_LX && !MGEODEGX1 && !MCYRIXIII && !MELAN && !MWINCHIPC6 && !MWINCHIP3D && !MK6 1418*4882a593Smuzhiyun select X86_PAE 1419*4882a593Smuzhiyun help 1420*4882a593Smuzhiyun Select this if you have a 32-bit processor and more than 4 1421*4882a593Smuzhiyun gigabytes of physical RAM. 1422*4882a593Smuzhiyun 1423*4882a593Smuzhiyunendchoice 1424*4882a593Smuzhiyun 1425*4882a593Smuzhiyunchoice 1426*4882a593Smuzhiyun prompt "Memory split" if EXPERT 1427*4882a593Smuzhiyun default VMSPLIT_3G 1428*4882a593Smuzhiyun depends on X86_32 1429*4882a593Smuzhiyun help 1430*4882a593Smuzhiyun Select the desired split between kernel and user memory. 1431*4882a593Smuzhiyun 1432*4882a593Smuzhiyun If the address range available to the kernel is less than the 1433*4882a593Smuzhiyun physical memory installed, the remaining memory will be available 1434*4882a593Smuzhiyun as "high memory". Accessing high memory is a little more costly 1435*4882a593Smuzhiyun than low memory, as it needs to be mapped into the kernel first. 1436*4882a593Smuzhiyun Note that increasing the kernel address space limits the range 1437*4882a593Smuzhiyun available to user programs, making the address space there 1438*4882a593Smuzhiyun tighter. Selecting anything other than the default 3G/1G split 1439*4882a593Smuzhiyun will also likely make your kernel incompatible with binary-only 1440*4882a593Smuzhiyun kernel modules. 1441*4882a593Smuzhiyun 1442*4882a593Smuzhiyun If you are not absolutely sure what you are doing, leave this 1443*4882a593Smuzhiyun option alone! 1444*4882a593Smuzhiyun 1445*4882a593Smuzhiyun config VMSPLIT_3G 1446*4882a593Smuzhiyun bool "3G/1G user/kernel split" 1447*4882a593Smuzhiyun config VMSPLIT_3G_OPT 1448*4882a593Smuzhiyun depends on !X86_PAE 1449*4882a593Smuzhiyun bool "3G/1G user/kernel split (for full 1G low memory)" 1450*4882a593Smuzhiyun config VMSPLIT_2G 1451*4882a593Smuzhiyun bool "2G/2G user/kernel split" 1452*4882a593Smuzhiyun config VMSPLIT_2G_OPT 1453*4882a593Smuzhiyun depends on !X86_PAE 1454*4882a593Smuzhiyun bool "2G/2G user/kernel split (for full 2G low memory)" 1455*4882a593Smuzhiyun config VMSPLIT_1G 1456*4882a593Smuzhiyun bool "1G/3G user/kernel split" 1457*4882a593Smuzhiyunendchoice 1458*4882a593Smuzhiyun 1459*4882a593Smuzhiyunconfig PAGE_OFFSET 1460*4882a593Smuzhiyun hex 1461*4882a593Smuzhiyun default 0xB0000000 if VMSPLIT_3G_OPT 1462*4882a593Smuzhiyun default 0x80000000 if VMSPLIT_2G 1463*4882a593Smuzhiyun default 0x78000000 if VMSPLIT_2G_OPT 1464*4882a593Smuzhiyun default 0x40000000 if VMSPLIT_1G 1465*4882a593Smuzhiyun default 0xC0000000 1466*4882a593Smuzhiyun depends on X86_32 1467*4882a593Smuzhiyun 1468*4882a593Smuzhiyunconfig HIGHMEM 1469*4882a593Smuzhiyun def_bool y 1470*4882a593Smuzhiyun depends on X86_32 && (HIGHMEM64G || HIGHMEM4G) 1471*4882a593Smuzhiyun 1472*4882a593Smuzhiyunconfig X86_PAE 1473*4882a593Smuzhiyun bool "PAE (Physical Address Extension) Support" 1474*4882a593Smuzhiyun depends on X86_32 && !HIGHMEM4G 1475*4882a593Smuzhiyun select PHYS_ADDR_T_64BIT 1476*4882a593Smuzhiyun select SWIOTLB 1477*4882a593Smuzhiyun help 1478*4882a593Smuzhiyun PAE is required for NX support, and furthermore enables 1479*4882a593Smuzhiyun larger swapspace support for non-overcommit purposes. It 1480*4882a593Smuzhiyun has the cost of more pagetable lookup overhead, and also 1481*4882a593Smuzhiyun consumes more pagetable space per process. 1482*4882a593Smuzhiyun 1483*4882a593Smuzhiyunconfig X86_5LEVEL 1484*4882a593Smuzhiyun bool "Enable 5-level page tables support" 1485*4882a593Smuzhiyun default y 1486*4882a593Smuzhiyun select DYNAMIC_MEMORY_LAYOUT 1487*4882a593Smuzhiyun select SPARSEMEM_VMEMMAP 1488*4882a593Smuzhiyun depends on X86_64 1489*4882a593Smuzhiyun help 1490*4882a593Smuzhiyun 5-level paging enables access to larger address space: 1491*4882a593Smuzhiyun upto 128 PiB of virtual address space and 4 PiB of 1492*4882a593Smuzhiyun physical address space. 1493*4882a593Smuzhiyun 1494*4882a593Smuzhiyun It will be supported by future Intel CPUs. 1495*4882a593Smuzhiyun 1496*4882a593Smuzhiyun A kernel with the option enabled can be booted on machines that 1497*4882a593Smuzhiyun support 4- or 5-level paging. 1498*4882a593Smuzhiyun 1499*4882a593Smuzhiyun See Documentation/x86/x86_64/5level-paging.rst for more 1500*4882a593Smuzhiyun information. 1501*4882a593Smuzhiyun 1502*4882a593Smuzhiyun Say N if unsure. 1503*4882a593Smuzhiyun 1504*4882a593Smuzhiyunconfig X86_DIRECT_GBPAGES 1505*4882a593Smuzhiyun def_bool y 1506*4882a593Smuzhiyun depends on X86_64 1507*4882a593Smuzhiyun help 1508*4882a593Smuzhiyun Certain kernel features effectively disable kernel 1509*4882a593Smuzhiyun linear 1 GB mappings (even if the CPU otherwise 1510*4882a593Smuzhiyun supports them), so don't confuse the user by printing 1511*4882a593Smuzhiyun that we have them enabled. 1512*4882a593Smuzhiyun 1513*4882a593Smuzhiyunconfig X86_CPA_STATISTICS 1514*4882a593Smuzhiyun bool "Enable statistic for Change Page Attribute" 1515*4882a593Smuzhiyun depends on DEBUG_FS 1516*4882a593Smuzhiyun help 1517*4882a593Smuzhiyun Expose statistics about the Change Page Attribute mechanism, which 1518*4882a593Smuzhiyun helps to determine the effectiveness of preserving large and huge 1519*4882a593Smuzhiyun page mappings when mapping protections are changed. 1520*4882a593Smuzhiyun 1521*4882a593Smuzhiyunconfig AMD_MEM_ENCRYPT 1522*4882a593Smuzhiyun bool "AMD Secure Memory Encryption (SME) support" 1523*4882a593Smuzhiyun depends on X86_64 && CPU_SUP_AMD 1524*4882a593Smuzhiyun select DMA_COHERENT_POOL 1525*4882a593Smuzhiyun select DYNAMIC_PHYSICAL_MASK 1526*4882a593Smuzhiyun select ARCH_USE_MEMREMAP_PROT 1527*4882a593Smuzhiyun select ARCH_HAS_FORCE_DMA_UNENCRYPTED 1528*4882a593Smuzhiyun select INSTRUCTION_DECODER 1529*4882a593Smuzhiyun select ARCH_HAS_CC_PLATFORM 1530*4882a593Smuzhiyun help 1531*4882a593Smuzhiyun Say yes to enable support for the encryption of system memory. 1532*4882a593Smuzhiyun This requires an AMD processor that supports Secure Memory 1533*4882a593Smuzhiyun Encryption (SME). 1534*4882a593Smuzhiyun 1535*4882a593Smuzhiyunconfig AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT 1536*4882a593Smuzhiyun bool "Activate AMD Secure Memory Encryption (SME) by default" 1537*4882a593Smuzhiyun depends on AMD_MEM_ENCRYPT 1538*4882a593Smuzhiyun help 1539*4882a593Smuzhiyun Say yes to have system memory encrypted by default if running on 1540*4882a593Smuzhiyun an AMD processor that supports Secure Memory Encryption (SME). 1541*4882a593Smuzhiyun 1542*4882a593Smuzhiyun If set to Y, then the encryption of system memory can be 1543*4882a593Smuzhiyun deactivated with the mem_encrypt=off command line option. 1544*4882a593Smuzhiyun 1545*4882a593Smuzhiyun If set to N, then the encryption of system memory can be 1546*4882a593Smuzhiyun activated with the mem_encrypt=on command line option. 1547*4882a593Smuzhiyun 1548*4882a593Smuzhiyun# Common NUMA Features 1549*4882a593Smuzhiyunconfig NUMA 1550*4882a593Smuzhiyun bool "NUMA Memory Allocation and Scheduler Support" 1551*4882a593Smuzhiyun depends on SMP 1552*4882a593Smuzhiyun depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP) 1553*4882a593Smuzhiyun default y if X86_BIGSMP 1554*4882a593Smuzhiyun help 1555*4882a593Smuzhiyun Enable NUMA (Non-Uniform Memory Access) support. 1556*4882a593Smuzhiyun 1557*4882a593Smuzhiyun The kernel will try to allocate memory used by a CPU on the 1558*4882a593Smuzhiyun local memory controller of the CPU and add some more 1559*4882a593Smuzhiyun NUMA awareness to the kernel. 1560*4882a593Smuzhiyun 1561*4882a593Smuzhiyun For 64-bit this is recommended if the system is Intel Core i7 1562*4882a593Smuzhiyun (or later), AMD Opteron, or EM64T NUMA. 1563*4882a593Smuzhiyun 1564*4882a593Smuzhiyun For 32-bit this is only needed if you boot a 32-bit 1565*4882a593Smuzhiyun kernel on a 64-bit NUMA platform. 1566*4882a593Smuzhiyun 1567*4882a593Smuzhiyun Otherwise, you should say N. 1568*4882a593Smuzhiyun 1569*4882a593Smuzhiyunconfig AMD_NUMA 1570*4882a593Smuzhiyun def_bool y 1571*4882a593Smuzhiyun prompt "Old style AMD Opteron NUMA detection" 1572*4882a593Smuzhiyun depends on X86_64 && NUMA && PCI 1573*4882a593Smuzhiyun help 1574*4882a593Smuzhiyun Enable AMD NUMA node topology detection. You should say Y here if 1575*4882a593Smuzhiyun you have a multi processor AMD system. This uses an old method to 1576*4882a593Smuzhiyun read the NUMA configuration directly from the builtin Northbridge 1577*4882a593Smuzhiyun of Opteron. It is recommended to use X86_64_ACPI_NUMA instead, 1578*4882a593Smuzhiyun which also takes priority if both are compiled in. 1579*4882a593Smuzhiyun 1580*4882a593Smuzhiyunconfig X86_64_ACPI_NUMA 1581*4882a593Smuzhiyun def_bool y 1582*4882a593Smuzhiyun prompt "ACPI NUMA detection" 1583*4882a593Smuzhiyun depends on X86_64 && NUMA && ACPI && PCI 1584*4882a593Smuzhiyun select ACPI_NUMA 1585*4882a593Smuzhiyun help 1586*4882a593Smuzhiyun Enable ACPI SRAT based node topology detection. 1587*4882a593Smuzhiyun 1588*4882a593Smuzhiyunconfig NUMA_EMU 1589*4882a593Smuzhiyun bool "NUMA emulation" 1590*4882a593Smuzhiyun depends on NUMA 1591*4882a593Smuzhiyun help 1592*4882a593Smuzhiyun Enable NUMA emulation. A flat machine will be split 1593*4882a593Smuzhiyun into virtual nodes when booted with "numa=fake=N", where N is the 1594*4882a593Smuzhiyun number of nodes. This is only useful for debugging. 1595*4882a593Smuzhiyun 1596*4882a593Smuzhiyunconfig NODES_SHIFT 1597*4882a593Smuzhiyun int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP 1598*4882a593Smuzhiyun range 1 10 1599*4882a593Smuzhiyun default "10" if MAXSMP 1600*4882a593Smuzhiyun default "6" if X86_64 1601*4882a593Smuzhiyun default "3" 1602*4882a593Smuzhiyun depends on NEED_MULTIPLE_NODES 1603*4882a593Smuzhiyun help 1604*4882a593Smuzhiyun Specify the maximum number of NUMA Nodes available on the target 1605*4882a593Smuzhiyun system. Increases memory reserved to accommodate various tables. 1606*4882a593Smuzhiyun 1607*4882a593Smuzhiyunconfig ARCH_FLATMEM_ENABLE 1608*4882a593Smuzhiyun def_bool y 1609*4882a593Smuzhiyun depends on X86_32 && !NUMA 1610*4882a593Smuzhiyun 1611*4882a593Smuzhiyunconfig ARCH_SPARSEMEM_ENABLE 1612*4882a593Smuzhiyun def_bool y 1613*4882a593Smuzhiyun depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD 1614*4882a593Smuzhiyun select SPARSEMEM_STATIC if X86_32 1615*4882a593Smuzhiyun select SPARSEMEM_VMEMMAP_ENABLE if X86_64 1616*4882a593Smuzhiyun 1617*4882a593Smuzhiyunconfig ARCH_SPARSEMEM_DEFAULT 1618*4882a593Smuzhiyun def_bool X86_64 || (NUMA && X86_32) 1619*4882a593Smuzhiyun 1620*4882a593Smuzhiyunconfig ARCH_SELECT_MEMORY_MODEL 1621*4882a593Smuzhiyun def_bool y 1622*4882a593Smuzhiyun depends on ARCH_SPARSEMEM_ENABLE 1623*4882a593Smuzhiyun 1624*4882a593Smuzhiyunconfig ARCH_MEMORY_PROBE 1625*4882a593Smuzhiyun bool "Enable sysfs memory/probe interface" 1626*4882a593Smuzhiyun depends on X86_64 && MEMORY_HOTPLUG 1627*4882a593Smuzhiyun help 1628*4882a593Smuzhiyun This option enables a sysfs memory/probe interface for testing. 1629*4882a593Smuzhiyun See Documentation/admin-guide/mm/memory-hotplug.rst for more information. 1630*4882a593Smuzhiyun If you are unsure how to answer this question, answer N. 1631*4882a593Smuzhiyun 1632*4882a593Smuzhiyunconfig ARCH_PROC_KCORE_TEXT 1633*4882a593Smuzhiyun def_bool y 1634*4882a593Smuzhiyun depends on X86_64 && PROC_KCORE 1635*4882a593Smuzhiyun 1636*4882a593Smuzhiyunconfig ILLEGAL_POINTER_VALUE 1637*4882a593Smuzhiyun hex 1638*4882a593Smuzhiyun default 0 if X86_32 1639*4882a593Smuzhiyun default 0xdead000000000000 if X86_64 1640*4882a593Smuzhiyun 1641*4882a593Smuzhiyunconfig X86_PMEM_LEGACY_DEVICE 1642*4882a593Smuzhiyun bool 1643*4882a593Smuzhiyun 1644*4882a593Smuzhiyunconfig X86_PMEM_LEGACY 1645*4882a593Smuzhiyun tristate "Support non-standard NVDIMMs and ADR protected memory" 1646*4882a593Smuzhiyun depends on PHYS_ADDR_T_64BIT 1647*4882a593Smuzhiyun depends on BLK_DEV 1648*4882a593Smuzhiyun select X86_PMEM_LEGACY_DEVICE 1649*4882a593Smuzhiyun select NUMA_KEEP_MEMINFO if NUMA 1650*4882a593Smuzhiyun select LIBNVDIMM 1651*4882a593Smuzhiyun help 1652*4882a593Smuzhiyun Treat memory marked using the non-standard e820 type of 12 as used 1653*4882a593Smuzhiyun by the Intel Sandy Bridge-EP reference BIOS as protected memory. 1654*4882a593Smuzhiyun The kernel will offer these regions to the 'pmem' driver so 1655*4882a593Smuzhiyun they can be used for persistent storage. 1656*4882a593Smuzhiyun 1657*4882a593Smuzhiyun Say Y if unsure. 1658*4882a593Smuzhiyun 1659*4882a593Smuzhiyunconfig HIGHPTE 1660*4882a593Smuzhiyun bool "Allocate 3rd-level pagetables from highmem" 1661*4882a593Smuzhiyun depends on HIGHMEM 1662*4882a593Smuzhiyun help 1663*4882a593Smuzhiyun The VM uses one page table entry for each page of physical memory. 1664*4882a593Smuzhiyun For systems with a lot of RAM, this can be wasteful of precious 1665*4882a593Smuzhiyun low memory. Setting this option will put user-space page table 1666*4882a593Smuzhiyun entries in high memory. 1667*4882a593Smuzhiyun 1668*4882a593Smuzhiyunconfig X86_CHECK_BIOS_CORRUPTION 1669*4882a593Smuzhiyun bool "Check for low memory corruption" 1670*4882a593Smuzhiyun help 1671*4882a593Smuzhiyun Periodically check for memory corruption in low memory, which 1672*4882a593Smuzhiyun is suspected to be caused by BIOS. Even when enabled in the 1673*4882a593Smuzhiyun configuration, it is disabled at runtime. Enable it by 1674*4882a593Smuzhiyun setting "memory_corruption_check=1" on the kernel command 1675*4882a593Smuzhiyun line. By default it scans the low 64k of memory every 60 1676*4882a593Smuzhiyun seconds; see the memory_corruption_check_size and 1677*4882a593Smuzhiyun memory_corruption_check_period parameters in 1678*4882a593Smuzhiyun Documentation/admin-guide/kernel-parameters.rst to adjust this. 1679*4882a593Smuzhiyun 1680*4882a593Smuzhiyun When enabled with the default parameters, this option has 1681*4882a593Smuzhiyun almost no overhead, as it reserves a relatively small amount 1682*4882a593Smuzhiyun of memory and scans it infrequently. It both detects corruption 1683*4882a593Smuzhiyun and prevents it from affecting the running system. 1684*4882a593Smuzhiyun 1685*4882a593Smuzhiyun It is, however, intended as a diagnostic tool; if repeatable 1686*4882a593Smuzhiyun BIOS-originated corruption always affects the same memory, 1687*4882a593Smuzhiyun you can use memmap= to prevent the kernel from using that 1688*4882a593Smuzhiyun memory. 1689*4882a593Smuzhiyun 1690*4882a593Smuzhiyunconfig X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK 1691*4882a593Smuzhiyun bool "Set the default setting of memory_corruption_check" 1692*4882a593Smuzhiyun depends on X86_CHECK_BIOS_CORRUPTION 1693*4882a593Smuzhiyun default y 1694*4882a593Smuzhiyun help 1695*4882a593Smuzhiyun Set whether the default state of memory_corruption_check is 1696*4882a593Smuzhiyun on or off. 1697*4882a593Smuzhiyun 1698*4882a593Smuzhiyunconfig X86_RESERVE_LOW 1699*4882a593Smuzhiyun int "Amount of low memory, in kilobytes, to reserve for the BIOS" 1700*4882a593Smuzhiyun default 64 1701*4882a593Smuzhiyun range 4 640 1702*4882a593Smuzhiyun help 1703*4882a593Smuzhiyun Specify the amount of low memory to reserve for the BIOS. 1704*4882a593Smuzhiyun 1705*4882a593Smuzhiyun The first page contains BIOS data structures that the kernel 1706*4882a593Smuzhiyun must not use, so that page must always be reserved. 1707*4882a593Smuzhiyun 1708*4882a593Smuzhiyun By default we reserve the first 64K of physical RAM, as a 1709*4882a593Smuzhiyun number of BIOSes are known to corrupt that memory range 1710*4882a593Smuzhiyun during events such as suspend/resume or monitor cable 1711*4882a593Smuzhiyun insertion, so it must not be used by the kernel. 1712*4882a593Smuzhiyun 1713*4882a593Smuzhiyun You can set this to 4 if you are absolutely sure that you 1714*4882a593Smuzhiyun trust the BIOS to get all its memory reservations and usages 1715*4882a593Smuzhiyun right. If you know your BIOS have problems beyond the 1716*4882a593Smuzhiyun default 64K area, you can set this to 640 to avoid using the 1717*4882a593Smuzhiyun entire low memory range. 1718*4882a593Smuzhiyun 1719*4882a593Smuzhiyun If you have doubts about the BIOS (e.g. suspend/resume does 1720*4882a593Smuzhiyun not work or there's kernel crashes after certain hardware 1721*4882a593Smuzhiyun hotplug events) then you might want to enable 1722*4882a593Smuzhiyun X86_CHECK_BIOS_CORRUPTION=y to allow the kernel to check 1723*4882a593Smuzhiyun typical corruption patterns. 1724*4882a593Smuzhiyun 1725*4882a593Smuzhiyun Leave this to the default value of 64 if you are unsure. 1726*4882a593Smuzhiyun 1727*4882a593Smuzhiyunconfig MATH_EMULATION 1728*4882a593Smuzhiyun bool 1729*4882a593Smuzhiyun depends on MODIFY_LDT_SYSCALL 1730*4882a593Smuzhiyun prompt "Math emulation" if X86_32 && (M486SX || MELAN) 1731*4882a593Smuzhiyun help 1732*4882a593Smuzhiyun Linux can emulate a math coprocessor (used for floating point 1733*4882a593Smuzhiyun operations) if you don't have one. 486DX and Pentium processors have 1734*4882a593Smuzhiyun a math coprocessor built in, 486SX and 386 do not, unless you added 1735*4882a593Smuzhiyun a 487DX or 387, respectively. (The messages during boot time can 1736*4882a593Smuzhiyun give you some hints here ["man dmesg"].) Everyone needs either a 1737*4882a593Smuzhiyun coprocessor or this emulation. 1738*4882a593Smuzhiyun 1739*4882a593Smuzhiyun If you don't have a math coprocessor, you need to say Y here; if you 1740*4882a593Smuzhiyun say Y here even though you have a coprocessor, the coprocessor will 1741*4882a593Smuzhiyun be used nevertheless. (This behavior can be changed with the kernel 1742*4882a593Smuzhiyun command line option "no387", which comes handy if your coprocessor 1743*4882a593Smuzhiyun is broken. Try "man bootparam" or see the documentation of your boot 1744*4882a593Smuzhiyun loader (lilo or loadlin) about how to pass options to the kernel at 1745*4882a593Smuzhiyun boot time.) This means that it is a good idea to say Y here if you 1746*4882a593Smuzhiyun intend to use this kernel on different machines. 1747*4882a593Smuzhiyun 1748*4882a593Smuzhiyun More information about the internals of the Linux math coprocessor 1749*4882a593Smuzhiyun emulation can be found in <file:arch/x86/math-emu/README>. 1750*4882a593Smuzhiyun 1751*4882a593Smuzhiyun If you are not sure, say Y; apart from resulting in a 66 KB bigger 1752*4882a593Smuzhiyun kernel, it won't hurt. 1753*4882a593Smuzhiyun 1754*4882a593Smuzhiyunconfig MTRR 1755*4882a593Smuzhiyun def_bool y 1756*4882a593Smuzhiyun prompt "MTRR (Memory Type Range Register) support" if EXPERT 1757*4882a593Smuzhiyun help 1758*4882a593Smuzhiyun On Intel P6 family processors (Pentium Pro, Pentium II and later) 1759*4882a593Smuzhiyun the Memory Type Range Registers (MTRRs) may be used to control 1760*4882a593Smuzhiyun processor access to memory ranges. This is most useful if you have 1761*4882a593Smuzhiyun a video (VGA) card on a PCI or AGP bus. Enabling write-combining 1762*4882a593Smuzhiyun allows bus write transfers to be combined into a larger transfer 1763*4882a593Smuzhiyun before bursting over the PCI/AGP bus. This can increase performance 1764*4882a593Smuzhiyun of image write operations 2.5 times or more. Saying Y here creates a 1765*4882a593Smuzhiyun /proc/mtrr file which may be used to manipulate your processor's 1766*4882a593Smuzhiyun MTRRs. Typically the X server should use this. 1767*4882a593Smuzhiyun 1768*4882a593Smuzhiyun This code has a reasonably generic interface so that similar 1769*4882a593Smuzhiyun control registers on other processors can be easily supported 1770*4882a593Smuzhiyun as well: 1771*4882a593Smuzhiyun 1772*4882a593Smuzhiyun The Cyrix 6x86, 6x86MX and M II processors have Address Range 1773*4882a593Smuzhiyun Registers (ARRs) which provide a similar functionality to MTRRs. For 1774*4882a593Smuzhiyun these, the ARRs are used to emulate the MTRRs. 1775*4882a593Smuzhiyun The AMD K6-2 (stepping 8 and above) and K6-3 processors have two 1776*4882a593Smuzhiyun MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing 1777*4882a593Smuzhiyun write-combining. All of these processors are supported by this code 1778*4882a593Smuzhiyun and it makes sense to say Y here if you have one of them. 1779*4882a593Smuzhiyun 1780*4882a593Smuzhiyun Saying Y here also fixes a problem with buggy SMP BIOSes which only 1781*4882a593Smuzhiyun set the MTRRs for the boot CPU and not for the secondary CPUs. This 1782*4882a593Smuzhiyun can lead to all sorts of problems, so it's good to say Y here. 1783*4882a593Smuzhiyun 1784*4882a593Smuzhiyun You can safely say Y even if your machine doesn't have MTRRs, you'll 1785*4882a593Smuzhiyun just add about 9 KB to your kernel. 1786*4882a593Smuzhiyun 1787*4882a593Smuzhiyun See <file:Documentation/x86/mtrr.rst> for more information. 1788*4882a593Smuzhiyun 1789*4882a593Smuzhiyunconfig MTRR_SANITIZER 1790*4882a593Smuzhiyun def_bool y 1791*4882a593Smuzhiyun prompt "MTRR cleanup support" 1792*4882a593Smuzhiyun depends on MTRR 1793*4882a593Smuzhiyun help 1794*4882a593Smuzhiyun Convert MTRR layout from continuous to discrete, so X drivers can 1795*4882a593Smuzhiyun add writeback entries. 1796*4882a593Smuzhiyun 1797*4882a593Smuzhiyun Can be disabled with disable_mtrr_cleanup on the kernel command line. 1798*4882a593Smuzhiyun The largest mtrr entry size for a continuous block can be set with 1799*4882a593Smuzhiyun mtrr_chunk_size. 1800*4882a593Smuzhiyun 1801*4882a593Smuzhiyun If unsure, say Y. 1802*4882a593Smuzhiyun 1803*4882a593Smuzhiyunconfig MTRR_SANITIZER_ENABLE_DEFAULT 1804*4882a593Smuzhiyun int "MTRR cleanup enable value (0-1)" 1805*4882a593Smuzhiyun range 0 1 1806*4882a593Smuzhiyun default "0" 1807*4882a593Smuzhiyun depends on MTRR_SANITIZER 1808*4882a593Smuzhiyun help 1809*4882a593Smuzhiyun Enable mtrr cleanup default value 1810*4882a593Smuzhiyun 1811*4882a593Smuzhiyunconfig MTRR_SANITIZER_SPARE_REG_NR_DEFAULT 1812*4882a593Smuzhiyun int "MTRR cleanup spare reg num (0-7)" 1813*4882a593Smuzhiyun range 0 7 1814*4882a593Smuzhiyun default "1" 1815*4882a593Smuzhiyun depends on MTRR_SANITIZER 1816*4882a593Smuzhiyun help 1817*4882a593Smuzhiyun mtrr cleanup spare entries default, it can be changed via 1818*4882a593Smuzhiyun mtrr_spare_reg_nr=N on the kernel command line. 1819*4882a593Smuzhiyun 1820*4882a593Smuzhiyunconfig X86_PAT 1821*4882a593Smuzhiyun def_bool y 1822*4882a593Smuzhiyun prompt "x86 PAT support" if EXPERT 1823*4882a593Smuzhiyun depends on MTRR 1824*4882a593Smuzhiyun help 1825*4882a593Smuzhiyun Use PAT attributes to setup page level cache control. 1826*4882a593Smuzhiyun 1827*4882a593Smuzhiyun PATs are the modern equivalents of MTRRs and are much more 1828*4882a593Smuzhiyun flexible than MTRRs. 1829*4882a593Smuzhiyun 1830*4882a593Smuzhiyun Say N here if you see bootup problems (boot crash, boot hang, 1831*4882a593Smuzhiyun spontaneous reboots) or a non-working video driver. 1832*4882a593Smuzhiyun 1833*4882a593Smuzhiyun If unsure, say Y. 1834*4882a593Smuzhiyun 1835*4882a593Smuzhiyunconfig ARCH_USES_PG_UNCACHED 1836*4882a593Smuzhiyun def_bool y 1837*4882a593Smuzhiyun depends on X86_PAT 1838*4882a593Smuzhiyun 1839*4882a593Smuzhiyunconfig ARCH_RANDOM 1840*4882a593Smuzhiyun def_bool y 1841*4882a593Smuzhiyun prompt "x86 architectural random number generator" if EXPERT 1842*4882a593Smuzhiyun help 1843*4882a593Smuzhiyun Enable the x86 architectural RDRAND instruction 1844*4882a593Smuzhiyun (Intel Bull Mountain technology) to generate random numbers. 1845*4882a593Smuzhiyun If supported, this is a high bandwidth, cryptographically 1846*4882a593Smuzhiyun secure hardware random number generator. 1847*4882a593Smuzhiyun 1848*4882a593Smuzhiyunconfig X86_SMAP 1849*4882a593Smuzhiyun def_bool y 1850*4882a593Smuzhiyun prompt "Supervisor Mode Access Prevention" if EXPERT 1851*4882a593Smuzhiyun help 1852*4882a593Smuzhiyun Supervisor Mode Access Prevention (SMAP) is a security 1853*4882a593Smuzhiyun feature in newer Intel processors. There is a small 1854*4882a593Smuzhiyun performance cost if this enabled and turned on; there is 1855*4882a593Smuzhiyun also a small increase in the kernel size if this is enabled. 1856*4882a593Smuzhiyun 1857*4882a593Smuzhiyun If unsure, say Y. 1858*4882a593Smuzhiyun 1859*4882a593Smuzhiyunconfig X86_UMIP 1860*4882a593Smuzhiyun def_bool y 1861*4882a593Smuzhiyun prompt "User Mode Instruction Prevention" if EXPERT 1862*4882a593Smuzhiyun help 1863*4882a593Smuzhiyun User Mode Instruction Prevention (UMIP) is a security feature in 1864*4882a593Smuzhiyun some x86 processors. If enabled, a general protection fault is 1865*4882a593Smuzhiyun issued if the SGDT, SLDT, SIDT, SMSW or STR instructions are 1866*4882a593Smuzhiyun executed in user mode. These instructions unnecessarily expose 1867*4882a593Smuzhiyun information about the hardware state. 1868*4882a593Smuzhiyun 1869*4882a593Smuzhiyun The vast majority of applications do not use these instructions. 1870*4882a593Smuzhiyun For the very few that do, software emulation is provided in 1871*4882a593Smuzhiyun specific cases in protected and virtual-8086 modes. Emulated 1872*4882a593Smuzhiyun results are dummy. 1873*4882a593Smuzhiyun 1874*4882a593Smuzhiyunconfig X86_INTEL_MEMORY_PROTECTION_KEYS 1875*4882a593Smuzhiyun prompt "Memory Protection Keys" 1876*4882a593Smuzhiyun def_bool y 1877*4882a593Smuzhiyun # Note: only available in 64-bit mode 1878*4882a593Smuzhiyun depends on X86_64 && (CPU_SUP_INTEL || CPU_SUP_AMD) 1879*4882a593Smuzhiyun select ARCH_USES_HIGH_VMA_FLAGS 1880*4882a593Smuzhiyun select ARCH_HAS_PKEYS 1881*4882a593Smuzhiyun help 1882*4882a593Smuzhiyun Memory Protection Keys provides a mechanism for enforcing 1883*4882a593Smuzhiyun page-based protections, but without requiring modification of the 1884*4882a593Smuzhiyun page tables when an application changes protection domains. 1885*4882a593Smuzhiyun 1886*4882a593Smuzhiyun For details, see Documentation/core-api/protection-keys.rst 1887*4882a593Smuzhiyun 1888*4882a593Smuzhiyun If unsure, say y. 1889*4882a593Smuzhiyun 1890*4882a593Smuzhiyunchoice 1891*4882a593Smuzhiyun prompt "TSX enable mode" 1892*4882a593Smuzhiyun depends on CPU_SUP_INTEL 1893*4882a593Smuzhiyun default X86_INTEL_TSX_MODE_OFF 1894*4882a593Smuzhiyun help 1895*4882a593Smuzhiyun Intel's TSX (Transactional Synchronization Extensions) feature 1896*4882a593Smuzhiyun allows to optimize locking protocols through lock elision which 1897*4882a593Smuzhiyun can lead to a noticeable performance boost. 1898*4882a593Smuzhiyun 1899*4882a593Smuzhiyun On the other hand it has been shown that TSX can be exploited 1900*4882a593Smuzhiyun to form side channel attacks (e.g. TAA) and chances are there 1901*4882a593Smuzhiyun will be more of those attacks discovered in the future. 1902*4882a593Smuzhiyun 1903*4882a593Smuzhiyun Therefore TSX is not enabled by default (aka tsx=off). An admin 1904*4882a593Smuzhiyun might override this decision by tsx=on the command line parameter. 1905*4882a593Smuzhiyun Even with TSX enabled, the kernel will attempt to enable the best 1906*4882a593Smuzhiyun possible TAA mitigation setting depending on the microcode available 1907*4882a593Smuzhiyun for the particular machine. 1908*4882a593Smuzhiyun 1909*4882a593Smuzhiyun This option allows to set the default tsx mode between tsx=on, =off 1910*4882a593Smuzhiyun and =auto. See Documentation/admin-guide/kernel-parameters.txt for more 1911*4882a593Smuzhiyun details. 1912*4882a593Smuzhiyun 1913*4882a593Smuzhiyun Say off if not sure, auto if TSX is in use but it should be used on safe 1914*4882a593Smuzhiyun platforms or on if TSX is in use and the security aspect of tsx is not 1915*4882a593Smuzhiyun relevant. 1916*4882a593Smuzhiyun 1917*4882a593Smuzhiyunconfig X86_INTEL_TSX_MODE_OFF 1918*4882a593Smuzhiyun bool "off" 1919*4882a593Smuzhiyun help 1920*4882a593Smuzhiyun TSX is disabled if possible - equals to tsx=off command line parameter. 1921*4882a593Smuzhiyun 1922*4882a593Smuzhiyunconfig X86_INTEL_TSX_MODE_ON 1923*4882a593Smuzhiyun bool "on" 1924*4882a593Smuzhiyun help 1925*4882a593Smuzhiyun TSX is always enabled on TSX capable HW - equals the tsx=on command 1926*4882a593Smuzhiyun line parameter. 1927*4882a593Smuzhiyun 1928*4882a593Smuzhiyunconfig X86_INTEL_TSX_MODE_AUTO 1929*4882a593Smuzhiyun bool "auto" 1930*4882a593Smuzhiyun help 1931*4882a593Smuzhiyun TSX is enabled on TSX capable HW that is believed to be safe against 1932*4882a593Smuzhiyun side channel attacks- equals the tsx=auto command line parameter. 1933*4882a593Smuzhiyunendchoice 1934*4882a593Smuzhiyun 1935*4882a593Smuzhiyunconfig EFI 1936*4882a593Smuzhiyun bool "EFI runtime service support" 1937*4882a593Smuzhiyun depends on ACPI 1938*4882a593Smuzhiyun select UCS2_STRING 1939*4882a593Smuzhiyun select EFI_RUNTIME_WRAPPERS 1940*4882a593Smuzhiyun select ARCH_USE_MEMREMAP_PROT 1941*4882a593Smuzhiyun help 1942*4882a593Smuzhiyun This enables the kernel to use EFI runtime services that are 1943*4882a593Smuzhiyun available (such as the EFI variable services). 1944*4882a593Smuzhiyun 1945*4882a593Smuzhiyun This option is only useful on systems that have EFI firmware. 1946*4882a593Smuzhiyun In addition, you should use the latest ELILO loader available 1947*4882a593Smuzhiyun at <http://elilo.sourceforge.net> in order to take advantage 1948*4882a593Smuzhiyun of EFI runtime services. However, even with this option, the 1949*4882a593Smuzhiyun resultant kernel should continue to boot on existing non-EFI 1950*4882a593Smuzhiyun platforms. 1951*4882a593Smuzhiyun 1952*4882a593Smuzhiyunconfig EFI_STUB 1953*4882a593Smuzhiyun bool "EFI stub support" 1954*4882a593Smuzhiyun depends on EFI && !X86_USE_3DNOW 1955*4882a593Smuzhiyun select RELOCATABLE 1956*4882a593Smuzhiyun help 1957*4882a593Smuzhiyun This kernel feature allows a bzImage to be loaded directly 1958*4882a593Smuzhiyun by EFI firmware without the use of a bootloader. 1959*4882a593Smuzhiyun 1960*4882a593Smuzhiyun See Documentation/admin-guide/efi-stub.rst for more information. 1961*4882a593Smuzhiyun 1962*4882a593Smuzhiyunconfig EFI_MIXED 1963*4882a593Smuzhiyun bool "EFI mixed-mode support" 1964*4882a593Smuzhiyun depends on EFI_STUB && X86_64 1965*4882a593Smuzhiyun help 1966*4882a593Smuzhiyun Enabling this feature allows a 64-bit kernel to be booted 1967*4882a593Smuzhiyun on a 32-bit firmware, provided that your CPU supports 64-bit 1968*4882a593Smuzhiyun mode. 1969*4882a593Smuzhiyun 1970*4882a593Smuzhiyun Note that it is not possible to boot a mixed-mode enabled 1971*4882a593Smuzhiyun kernel via the EFI boot stub - a bootloader that supports 1972*4882a593Smuzhiyun the EFI handover protocol must be used. 1973*4882a593Smuzhiyun 1974*4882a593Smuzhiyun If unsure, say N. 1975*4882a593Smuzhiyun 1976*4882a593Smuzhiyunsource "kernel/Kconfig.hz" 1977*4882a593Smuzhiyun 1978*4882a593Smuzhiyunconfig KEXEC 1979*4882a593Smuzhiyun bool "kexec system call" 1980*4882a593Smuzhiyun select KEXEC_CORE 1981*4882a593Smuzhiyun help 1982*4882a593Smuzhiyun kexec is a system call that implements the ability to shutdown your 1983*4882a593Smuzhiyun current kernel, and to start another kernel. It is like a reboot 1984*4882a593Smuzhiyun but it is independent of the system firmware. And like a reboot 1985*4882a593Smuzhiyun you can start any kernel with it, not just Linux. 1986*4882a593Smuzhiyun 1987*4882a593Smuzhiyun The name comes from the similarity to the exec system call. 1988*4882a593Smuzhiyun 1989*4882a593Smuzhiyun It is an ongoing process to be certain the hardware in a machine 1990*4882a593Smuzhiyun is properly shutdown, so do not be surprised if this code does not 1991*4882a593Smuzhiyun initially work for you. As of this writing the exact hardware 1992*4882a593Smuzhiyun interface is strongly in flux, so no good recommendation can be 1993*4882a593Smuzhiyun made. 1994*4882a593Smuzhiyun 1995*4882a593Smuzhiyunconfig KEXEC_FILE 1996*4882a593Smuzhiyun bool "kexec file based system call" 1997*4882a593Smuzhiyun select KEXEC_CORE 1998*4882a593Smuzhiyun select BUILD_BIN2C 1999*4882a593Smuzhiyun depends on X86_64 2000*4882a593Smuzhiyun depends on CRYPTO=y 2001*4882a593Smuzhiyun depends on CRYPTO_SHA256=y 2002*4882a593Smuzhiyun help 2003*4882a593Smuzhiyun This is new version of kexec system call. This system call is 2004*4882a593Smuzhiyun file based and takes file descriptors as system call argument 2005*4882a593Smuzhiyun for kernel and initramfs as opposed to list of segments as 2006*4882a593Smuzhiyun accepted by previous system call. 2007*4882a593Smuzhiyun 2008*4882a593Smuzhiyunconfig ARCH_HAS_KEXEC_PURGATORY 2009*4882a593Smuzhiyun def_bool KEXEC_FILE 2010*4882a593Smuzhiyun 2011*4882a593Smuzhiyunconfig KEXEC_SIG 2012*4882a593Smuzhiyun bool "Verify kernel signature during kexec_file_load() syscall" 2013*4882a593Smuzhiyun depends on KEXEC_FILE 2014*4882a593Smuzhiyun help 2015*4882a593Smuzhiyun 2016*4882a593Smuzhiyun This option makes the kexec_file_load() syscall check for a valid 2017*4882a593Smuzhiyun signature of the kernel image. The image can still be loaded without 2018*4882a593Smuzhiyun a valid signature unless you also enable KEXEC_SIG_FORCE, though if 2019*4882a593Smuzhiyun there's a signature that we can check, then it must be valid. 2020*4882a593Smuzhiyun 2021*4882a593Smuzhiyun In addition to this option, you need to enable signature 2022*4882a593Smuzhiyun verification for the corresponding kernel image type being 2023*4882a593Smuzhiyun loaded in order for this to work. 2024*4882a593Smuzhiyun 2025*4882a593Smuzhiyunconfig KEXEC_SIG_FORCE 2026*4882a593Smuzhiyun bool "Require a valid signature in kexec_file_load() syscall" 2027*4882a593Smuzhiyun depends on KEXEC_SIG 2028*4882a593Smuzhiyun help 2029*4882a593Smuzhiyun This option makes kernel signature verification mandatory for 2030*4882a593Smuzhiyun the kexec_file_load() syscall. 2031*4882a593Smuzhiyun 2032*4882a593Smuzhiyunconfig KEXEC_BZIMAGE_VERIFY_SIG 2033*4882a593Smuzhiyun bool "Enable bzImage signature verification support" 2034*4882a593Smuzhiyun depends on KEXEC_SIG 2035*4882a593Smuzhiyun depends on SIGNED_PE_FILE_VERIFICATION 2036*4882a593Smuzhiyun select SYSTEM_TRUSTED_KEYRING 2037*4882a593Smuzhiyun help 2038*4882a593Smuzhiyun Enable bzImage signature verification support. 2039*4882a593Smuzhiyun 2040*4882a593Smuzhiyunconfig CRASH_DUMP 2041*4882a593Smuzhiyun bool "kernel crash dumps" 2042*4882a593Smuzhiyun depends on X86_64 || (X86_32 && HIGHMEM) 2043*4882a593Smuzhiyun help 2044*4882a593Smuzhiyun Generate crash dump after being started by kexec. 2045*4882a593Smuzhiyun This should be normally only set in special crash dump kernels 2046*4882a593Smuzhiyun which are loaded in the main kernel with kexec-tools into 2047*4882a593Smuzhiyun a specially reserved region and then later executed after 2048*4882a593Smuzhiyun a crash by kdump/kexec. The crash dump kernel must be compiled 2049*4882a593Smuzhiyun to a memory address not used by the main kernel or BIOS using 2050*4882a593Smuzhiyun PHYSICAL_START, or it must be built as a relocatable image 2051*4882a593Smuzhiyun (CONFIG_RELOCATABLE=y). 2052*4882a593Smuzhiyun For more details see Documentation/admin-guide/kdump/kdump.rst 2053*4882a593Smuzhiyun 2054*4882a593Smuzhiyunconfig KEXEC_JUMP 2055*4882a593Smuzhiyun bool "kexec jump" 2056*4882a593Smuzhiyun depends on KEXEC && HIBERNATION 2057*4882a593Smuzhiyun help 2058*4882a593Smuzhiyun Jump between original kernel and kexeced kernel and invoke 2059*4882a593Smuzhiyun code in physical address mode via KEXEC 2060*4882a593Smuzhiyun 2061*4882a593Smuzhiyunconfig PHYSICAL_START 2062*4882a593Smuzhiyun hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP) 2063*4882a593Smuzhiyun default "0x1000000" 2064*4882a593Smuzhiyun help 2065*4882a593Smuzhiyun This gives the physical address where the kernel is loaded. 2066*4882a593Smuzhiyun 2067*4882a593Smuzhiyun If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then 2068*4882a593Smuzhiyun bzImage will decompress itself to above physical address and 2069*4882a593Smuzhiyun run from there. Otherwise, bzImage will run from the address where 2070*4882a593Smuzhiyun it has been loaded by the boot loader and will ignore above physical 2071*4882a593Smuzhiyun address. 2072*4882a593Smuzhiyun 2073*4882a593Smuzhiyun In normal kdump cases one does not have to set/change this option 2074*4882a593Smuzhiyun as now bzImage can be compiled as a completely relocatable image 2075*4882a593Smuzhiyun (CONFIG_RELOCATABLE=y) and be used to load and run from a different 2076*4882a593Smuzhiyun address. This option is mainly useful for the folks who don't want 2077*4882a593Smuzhiyun to use a bzImage for capturing the crash dump and want to use a 2078*4882a593Smuzhiyun vmlinux instead. vmlinux is not relocatable hence a kernel needs 2079*4882a593Smuzhiyun to be specifically compiled to run from a specific memory area 2080*4882a593Smuzhiyun (normally a reserved region) and this option comes handy. 2081*4882a593Smuzhiyun 2082*4882a593Smuzhiyun So if you are using bzImage for capturing the crash dump, 2083*4882a593Smuzhiyun leave the value here unchanged to 0x1000000 and set 2084*4882a593Smuzhiyun CONFIG_RELOCATABLE=y. Otherwise if you plan to use vmlinux 2085*4882a593Smuzhiyun for capturing the crash dump change this value to start of 2086*4882a593Smuzhiyun the reserved region. In other words, it can be set based on 2087*4882a593Smuzhiyun the "X" value as specified in the "crashkernel=YM@XM" 2088*4882a593Smuzhiyun command line boot parameter passed to the panic-ed 2089*4882a593Smuzhiyun kernel. Please take a look at Documentation/admin-guide/kdump/kdump.rst 2090*4882a593Smuzhiyun for more details about crash dumps. 2091*4882a593Smuzhiyun 2092*4882a593Smuzhiyun Usage of bzImage for capturing the crash dump is recommended as 2093*4882a593Smuzhiyun one does not have to build two kernels. Same kernel can be used 2094*4882a593Smuzhiyun as production kernel and capture kernel. Above option should have 2095*4882a593Smuzhiyun gone away after relocatable bzImage support is introduced. But it 2096*4882a593Smuzhiyun is present because there are users out there who continue to use 2097*4882a593Smuzhiyun vmlinux for dump capture. This option should go away down the 2098*4882a593Smuzhiyun line. 2099*4882a593Smuzhiyun 2100*4882a593Smuzhiyun Don't change this unless you know what you are doing. 2101*4882a593Smuzhiyun 2102*4882a593Smuzhiyunconfig RELOCATABLE 2103*4882a593Smuzhiyun bool "Build a relocatable kernel" 2104*4882a593Smuzhiyun default y 2105*4882a593Smuzhiyun help 2106*4882a593Smuzhiyun This builds a kernel image that retains relocation information 2107*4882a593Smuzhiyun so it can be loaded someplace besides the default 1MB. 2108*4882a593Smuzhiyun The relocations tend to make the kernel binary about 10% larger, 2109*4882a593Smuzhiyun but are discarded at runtime. 2110*4882a593Smuzhiyun 2111*4882a593Smuzhiyun One use is for the kexec on panic case where the recovery kernel 2112*4882a593Smuzhiyun must live at a different physical address than the primary 2113*4882a593Smuzhiyun kernel. 2114*4882a593Smuzhiyun 2115*4882a593Smuzhiyun Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address 2116*4882a593Smuzhiyun it has been loaded at and the compile time physical address 2117*4882a593Smuzhiyun (CONFIG_PHYSICAL_START) is used as the minimum location. 2118*4882a593Smuzhiyun 2119*4882a593Smuzhiyunconfig RANDOMIZE_BASE 2120*4882a593Smuzhiyun bool "Randomize the address of the kernel image (KASLR)" 2121*4882a593Smuzhiyun depends on RELOCATABLE 2122*4882a593Smuzhiyun default y 2123*4882a593Smuzhiyun help 2124*4882a593Smuzhiyun In support of Kernel Address Space Layout Randomization (KASLR), 2125*4882a593Smuzhiyun this randomizes the physical address at which the kernel image 2126*4882a593Smuzhiyun is decompressed and the virtual address where the kernel 2127*4882a593Smuzhiyun image is mapped, as a security feature that deters exploit 2128*4882a593Smuzhiyun attempts relying on knowledge of the location of kernel 2129*4882a593Smuzhiyun code internals. 2130*4882a593Smuzhiyun 2131*4882a593Smuzhiyun On 64-bit, the kernel physical and virtual addresses are 2132*4882a593Smuzhiyun randomized separately. The physical address will be anywhere 2133*4882a593Smuzhiyun between 16MB and the top of physical memory (up to 64TB). The 2134*4882a593Smuzhiyun virtual address will be randomized from 16MB up to 1GB (9 bits 2135*4882a593Smuzhiyun of entropy). Note that this also reduces the memory space 2136*4882a593Smuzhiyun available to kernel modules from 1.5GB to 1GB. 2137*4882a593Smuzhiyun 2138*4882a593Smuzhiyun On 32-bit, the kernel physical and virtual addresses are 2139*4882a593Smuzhiyun randomized together. They will be randomized from 16MB up to 2140*4882a593Smuzhiyun 512MB (8 bits of entropy). 2141*4882a593Smuzhiyun 2142*4882a593Smuzhiyun Entropy is generated using the RDRAND instruction if it is 2143*4882a593Smuzhiyun supported. If RDTSC is supported, its value is mixed into 2144*4882a593Smuzhiyun the entropy pool as well. If neither RDRAND nor RDTSC are 2145*4882a593Smuzhiyun supported, then entropy is read from the i8254 timer. The 2146*4882a593Smuzhiyun usable entropy is limited by the kernel being built using 2147*4882a593Smuzhiyun 2GB addressing, and that PHYSICAL_ALIGN must be at a 2148*4882a593Smuzhiyun minimum of 2MB. As a result, only 10 bits of entropy are 2149*4882a593Smuzhiyun theoretically possible, but the implementations are further 2150*4882a593Smuzhiyun limited due to memory layouts. 2151*4882a593Smuzhiyun 2152*4882a593Smuzhiyun If unsure, say Y. 2153*4882a593Smuzhiyun 2154*4882a593Smuzhiyun# Relocation on x86 needs some additional build support 2155*4882a593Smuzhiyunconfig X86_NEED_RELOCS 2156*4882a593Smuzhiyun def_bool y 2157*4882a593Smuzhiyun depends on RANDOMIZE_BASE || (X86_32 && RELOCATABLE) 2158*4882a593Smuzhiyun 2159*4882a593Smuzhiyunconfig PHYSICAL_ALIGN 2160*4882a593Smuzhiyun hex "Alignment value to which kernel should be aligned" 2161*4882a593Smuzhiyun default "0x200000" 2162*4882a593Smuzhiyun range 0x2000 0x1000000 if X86_32 2163*4882a593Smuzhiyun range 0x200000 0x1000000 if X86_64 2164*4882a593Smuzhiyun help 2165*4882a593Smuzhiyun This value puts the alignment restrictions on physical address 2166*4882a593Smuzhiyun where kernel is loaded and run from. Kernel is compiled for an 2167*4882a593Smuzhiyun address which meets above alignment restriction. 2168*4882a593Smuzhiyun 2169*4882a593Smuzhiyun If bootloader loads the kernel at a non-aligned address and 2170*4882a593Smuzhiyun CONFIG_RELOCATABLE is set, kernel will move itself to nearest 2171*4882a593Smuzhiyun address aligned to above value and run from there. 2172*4882a593Smuzhiyun 2173*4882a593Smuzhiyun If bootloader loads the kernel at a non-aligned address and 2174*4882a593Smuzhiyun CONFIG_RELOCATABLE is not set, kernel will ignore the run time 2175*4882a593Smuzhiyun load address and decompress itself to the address it has been 2176*4882a593Smuzhiyun compiled for and run from there. The address for which kernel is 2177*4882a593Smuzhiyun compiled already meets above alignment restrictions. Hence the 2178*4882a593Smuzhiyun end result is that kernel runs from a physical address meeting 2179*4882a593Smuzhiyun above alignment restrictions. 2180*4882a593Smuzhiyun 2181*4882a593Smuzhiyun On 32-bit this value must be a multiple of 0x2000. On 64-bit 2182*4882a593Smuzhiyun this value must be a multiple of 0x200000. 2183*4882a593Smuzhiyun 2184*4882a593Smuzhiyun Don't change this unless you know what you are doing. 2185*4882a593Smuzhiyun 2186*4882a593Smuzhiyunconfig DYNAMIC_MEMORY_LAYOUT 2187*4882a593Smuzhiyun bool 2188*4882a593Smuzhiyun help 2189*4882a593Smuzhiyun This option makes base addresses of vmalloc and vmemmap as well as 2190*4882a593Smuzhiyun __PAGE_OFFSET movable during boot. 2191*4882a593Smuzhiyun 2192*4882a593Smuzhiyunconfig RANDOMIZE_MEMORY 2193*4882a593Smuzhiyun bool "Randomize the kernel memory sections" 2194*4882a593Smuzhiyun depends on X86_64 2195*4882a593Smuzhiyun depends on RANDOMIZE_BASE 2196*4882a593Smuzhiyun select DYNAMIC_MEMORY_LAYOUT 2197*4882a593Smuzhiyun default RANDOMIZE_BASE 2198*4882a593Smuzhiyun help 2199*4882a593Smuzhiyun Randomizes the base virtual address of kernel memory sections 2200*4882a593Smuzhiyun (physical memory mapping, vmalloc & vmemmap). This security feature 2201*4882a593Smuzhiyun makes exploits relying on predictable memory locations less reliable. 2202*4882a593Smuzhiyun 2203*4882a593Smuzhiyun The order of allocations remains unchanged. Entropy is generated in 2204*4882a593Smuzhiyun the same way as RANDOMIZE_BASE. Current implementation in the optimal 2205*4882a593Smuzhiyun configuration have in average 30,000 different possible virtual 2206*4882a593Smuzhiyun addresses for each memory section. 2207*4882a593Smuzhiyun 2208*4882a593Smuzhiyun If unsure, say Y. 2209*4882a593Smuzhiyun 2210*4882a593Smuzhiyunconfig RANDOMIZE_MEMORY_PHYSICAL_PADDING 2211*4882a593Smuzhiyun hex "Physical memory mapping padding" if EXPERT 2212*4882a593Smuzhiyun depends on RANDOMIZE_MEMORY 2213*4882a593Smuzhiyun default "0xa" if MEMORY_HOTPLUG 2214*4882a593Smuzhiyun default "0x0" 2215*4882a593Smuzhiyun range 0x1 0x40 if MEMORY_HOTPLUG 2216*4882a593Smuzhiyun range 0x0 0x40 2217*4882a593Smuzhiyun help 2218*4882a593Smuzhiyun Define the padding in terabytes added to the existing physical 2219*4882a593Smuzhiyun memory size during kernel memory randomization. It is useful 2220*4882a593Smuzhiyun for memory hotplug support but reduces the entropy available for 2221*4882a593Smuzhiyun address randomization. 2222*4882a593Smuzhiyun 2223*4882a593Smuzhiyun If unsure, leave at the default value. 2224*4882a593Smuzhiyun 2225*4882a593Smuzhiyunconfig HOTPLUG_CPU 2226*4882a593Smuzhiyun def_bool y 2227*4882a593Smuzhiyun depends on SMP 2228*4882a593Smuzhiyun 2229*4882a593Smuzhiyunconfig BOOTPARAM_HOTPLUG_CPU0 2230*4882a593Smuzhiyun bool "Set default setting of cpu0_hotpluggable" 2231*4882a593Smuzhiyun depends on HOTPLUG_CPU 2232*4882a593Smuzhiyun help 2233*4882a593Smuzhiyun Set whether default state of cpu0_hotpluggable is on or off. 2234*4882a593Smuzhiyun 2235*4882a593Smuzhiyun Say Y here to enable CPU0 hotplug by default. If this switch 2236*4882a593Smuzhiyun is turned on, there is no need to give cpu0_hotplug kernel 2237*4882a593Smuzhiyun parameter and the CPU0 hotplug feature is enabled by default. 2238*4882a593Smuzhiyun 2239*4882a593Smuzhiyun Please note: there are two known CPU0 dependencies if you want 2240*4882a593Smuzhiyun to enable the CPU0 hotplug feature either by this switch or by 2241*4882a593Smuzhiyun cpu0_hotplug kernel parameter. 2242*4882a593Smuzhiyun 2243*4882a593Smuzhiyun First, resume from hibernate or suspend always starts from CPU0. 2244*4882a593Smuzhiyun So hibernate and suspend are prevented if CPU0 is offline. 2245*4882a593Smuzhiyun 2246*4882a593Smuzhiyun Second dependency is PIC interrupts always go to CPU0. CPU0 can not 2247*4882a593Smuzhiyun offline if any interrupt can not migrate out of CPU0. There may 2248*4882a593Smuzhiyun be other CPU0 dependencies. 2249*4882a593Smuzhiyun 2250*4882a593Smuzhiyun Please make sure the dependencies are under your control before 2251*4882a593Smuzhiyun you enable this feature. 2252*4882a593Smuzhiyun 2253*4882a593Smuzhiyun Say N if you don't want to enable CPU0 hotplug feature by default. 2254*4882a593Smuzhiyun You still can enable the CPU0 hotplug feature at boot by kernel 2255*4882a593Smuzhiyun parameter cpu0_hotplug. 2256*4882a593Smuzhiyun 2257*4882a593Smuzhiyunconfig DEBUG_HOTPLUG_CPU0 2258*4882a593Smuzhiyun def_bool n 2259*4882a593Smuzhiyun prompt "Debug CPU0 hotplug" 2260*4882a593Smuzhiyun depends on HOTPLUG_CPU 2261*4882a593Smuzhiyun help 2262*4882a593Smuzhiyun Enabling this option offlines CPU0 (if CPU0 can be offlined) as 2263*4882a593Smuzhiyun soon as possible and boots up userspace with CPU0 offlined. User 2264*4882a593Smuzhiyun can online CPU0 back after boot time. 2265*4882a593Smuzhiyun 2266*4882a593Smuzhiyun To debug CPU0 hotplug, you need to enable CPU0 offline/online 2267*4882a593Smuzhiyun feature by either turning on CONFIG_BOOTPARAM_HOTPLUG_CPU0 during 2268*4882a593Smuzhiyun compilation or giving cpu0_hotplug kernel parameter at boot. 2269*4882a593Smuzhiyun 2270*4882a593Smuzhiyun If unsure, say N. 2271*4882a593Smuzhiyun 2272*4882a593Smuzhiyunconfig COMPAT_VDSO 2273*4882a593Smuzhiyun def_bool n 2274*4882a593Smuzhiyun prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)" 2275*4882a593Smuzhiyun depends on COMPAT_32 2276*4882a593Smuzhiyun help 2277*4882a593Smuzhiyun Certain buggy versions of glibc will crash if they are 2278*4882a593Smuzhiyun presented with a 32-bit vDSO that is not mapped at the address 2279*4882a593Smuzhiyun indicated in its segment table. 2280*4882a593Smuzhiyun 2281*4882a593Smuzhiyun The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a 2282*4882a593Smuzhiyun and fixed by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and 2283*4882a593Smuzhiyun 49ad572a70b8aeb91e57483a11dd1b77e31c4468. Glibc 2.3.3 is 2284*4882a593Smuzhiyun the only released version with the bug, but OpenSUSE 9 2285*4882a593Smuzhiyun contains a buggy "glibc 2.3.2". 2286*4882a593Smuzhiyun 2287*4882a593Smuzhiyun The symptom of the bug is that everything crashes on startup, saying: 2288*4882a593Smuzhiyun dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed! 2289*4882a593Smuzhiyun 2290*4882a593Smuzhiyun Saying Y here changes the default value of the vdso32 boot 2291*4882a593Smuzhiyun option from 1 to 0, which turns off the 32-bit vDSO entirely. 2292*4882a593Smuzhiyun This works around the glibc bug but hurts performance. 2293*4882a593Smuzhiyun 2294*4882a593Smuzhiyun If unsure, say N: if you are compiling your own kernel, you 2295*4882a593Smuzhiyun are unlikely to be using a buggy version of glibc. 2296*4882a593Smuzhiyun 2297*4882a593Smuzhiyunchoice 2298*4882a593Smuzhiyun prompt "vsyscall table for legacy applications" 2299*4882a593Smuzhiyun depends on X86_64 2300*4882a593Smuzhiyun default LEGACY_VSYSCALL_XONLY 2301*4882a593Smuzhiyun help 2302*4882a593Smuzhiyun Legacy user code that does not know how to find the vDSO expects 2303*4882a593Smuzhiyun to be able to issue three syscalls by calling fixed addresses in 2304*4882a593Smuzhiyun kernel space. Since this location is not randomized with ASLR, 2305*4882a593Smuzhiyun it can be used to assist security vulnerability exploitation. 2306*4882a593Smuzhiyun 2307*4882a593Smuzhiyun This setting can be changed at boot time via the kernel command 2308*4882a593Smuzhiyun line parameter vsyscall=[emulate|xonly|none]. 2309*4882a593Smuzhiyun 2310*4882a593Smuzhiyun On a system with recent enough glibc (2.14 or newer) and no 2311*4882a593Smuzhiyun static binaries, you can say None without a performance penalty 2312*4882a593Smuzhiyun to improve security. 2313*4882a593Smuzhiyun 2314*4882a593Smuzhiyun If unsure, select "Emulate execution only". 2315*4882a593Smuzhiyun 2316*4882a593Smuzhiyun config LEGACY_VSYSCALL_EMULATE 2317*4882a593Smuzhiyun bool "Full emulation" 2318*4882a593Smuzhiyun help 2319*4882a593Smuzhiyun The kernel traps and emulates calls into the fixed vsyscall 2320*4882a593Smuzhiyun address mapping. This makes the mapping non-executable, but 2321*4882a593Smuzhiyun it still contains readable known contents, which could be 2322*4882a593Smuzhiyun used in certain rare security vulnerability exploits. This 2323*4882a593Smuzhiyun configuration is recommended when using legacy userspace 2324*4882a593Smuzhiyun that still uses vsyscalls along with legacy binary 2325*4882a593Smuzhiyun instrumentation tools that require code to be readable. 2326*4882a593Smuzhiyun 2327*4882a593Smuzhiyun An example of this type of legacy userspace is running 2328*4882a593Smuzhiyun Pin on an old binary that still uses vsyscalls. 2329*4882a593Smuzhiyun 2330*4882a593Smuzhiyun config LEGACY_VSYSCALL_XONLY 2331*4882a593Smuzhiyun bool "Emulate execution only" 2332*4882a593Smuzhiyun help 2333*4882a593Smuzhiyun The kernel traps and emulates calls into the fixed vsyscall 2334*4882a593Smuzhiyun address mapping and does not allow reads. This 2335*4882a593Smuzhiyun configuration is recommended when userspace might use the 2336*4882a593Smuzhiyun legacy vsyscall area but support for legacy binary 2337*4882a593Smuzhiyun instrumentation of legacy code is not needed. It mitigates 2338*4882a593Smuzhiyun certain uses of the vsyscall area as an ASLR-bypassing 2339*4882a593Smuzhiyun buffer. 2340*4882a593Smuzhiyun 2341*4882a593Smuzhiyun config LEGACY_VSYSCALL_NONE 2342*4882a593Smuzhiyun bool "None" 2343*4882a593Smuzhiyun help 2344*4882a593Smuzhiyun There will be no vsyscall mapping at all. This will 2345*4882a593Smuzhiyun eliminate any risk of ASLR bypass due to the vsyscall 2346*4882a593Smuzhiyun fixed address mapping. Attempts to use the vsyscalls 2347*4882a593Smuzhiyun will be reported to dmesg, so that either old or 2348*4882a593Smuzhiyun malicious userspace programs can be identified. 2349*4882a593Smuzhiyun 2350*4882a593Smuzhiyunendchoice 2351*4882a593Smuzhiyun 2352*4882a593Smuzhiyunconfig CMDLINE_BOOL 2353*4882a593Smuzhiyun bool "Built-in kernel command line" 2354*4882a593Smuzhiyun help 2355*4882a593Smuzhiyun Allow for specifying boot arguments to the kernel at 2356*4882a593Smuzhiyun build time. On some systems (e.g. embedded ones), it is 2357*4882a593Smuzhiyun necessary or convenient to provide some or all of the 2358*4882a593Smuzhiyun kernel boot arguments with the kernel itself (that is, 2359*4882a593Smuzhiyun to not rely on the boot loader to provide them.) 2360*4882a593Smuzhiyun 2361*4882a593Smuzhiyun To compile command line arguments into the kernel, 2362*4882a593Smuzhiyun set this option to 'Y', then fill in the 2363*4882a593Smuzhiyun boot arguments in CONFIG_CMDLINE. 2364*4882a593Smuzhiyun 2365*4882a593Smuzhiyun Systems with fully functional boot loaders (i.e. non-embedded) 2366*4882a593Smuzhiyun should leave this option set to 'N'. 2367*4882a593Smuzhiyun 2368*4882a593Smuzhiyunconfig CMDLINE 2369*4882a593Smuzhiyun string "Built-in kernel command string" 2370*4882a593Smuzhiyun depends on CMDLINE_BOOL 2371*4882a593Smuzhiyun default "" 2372*4882a593Smuzhiyun help 2373*4882a593Smuzhiyun Enter arguments here that should be compiled into the kernel 2374*4882a593Smuzhiyun image and used at boot time. If the boot loader provides a 2375*4882a593Smuzhiyun command line at boot time, it is appended to this string to 2376*4882a593Smuzhiyun form the full kernel command line, when the system boots. 2377*4882a593Smuzhiyun 2378*4882a593Smuzhiyun However, you can use the CONFIG_CMDLINE_OVERRIDE option to 2379*4882a593Smuzhiyun change this behavior. 2380*4882a593Smuzhiyun 2381*4882a593Smuzhiyun In most cases, the command line (whether built-in or provided 2382*4882a593Smuzhiyun by the boot loader) should specify the device for the root 2383*4882a593Smuzhiyun file system. 2384*4882a593Smuzhiyun 2385*4882a593Smuzhiyunconfig CMDLINE_OVERRIDE 2386*4882a593Smuzhiyun bool "Built-in command line overrides boot loader arguments" 2387*4882a593Smuzhiyun depends on CMDLINE_BOOL && CMDLINE != "" 2388*4882a593Smuzhiyun help 2389*4882a593Smuzhiyun Set this option to 'Y' to have the kernel ignore the boot loader 2390*4882a593Smuzhiyun command line, and use ONLY the built-in command line. 2391*4882a593Smuzhiyun 2392*4882a593Smuzhiyun This is used to work around broken boot loaders. This should 2393*4882a593Smuzhiyun be set to 'N' under normal conditions. 2394*4882a593Smuzhiyun 2395*4882a593Smuzhiyunconfig MODIFY_LDT_SYSCALL 2396*4882a593Smuzhiyun bool "Enable the LDT (local descriptor table)" if EXPERT 2397*4882a593Smuzhiyun default y 2398*4882a593Smuzhiyun help 2399*4882a593Smuzhiyun Linux can allow user programs to install a per-process x86 2400*4882a593Smuzhiyun Local Descriptor Table (LDT) using the modify_ldt(2) system 2401*4882a593Smuzhiyun call. This is required to run 16-bit or segmented code such as 2402*4882a593Smuzhiyun DOSEMU or some Wine programs. It is also used by some very old 2403*4882a593Smuzhiyun threading libraries. 2404*4882a593Smuzhiyun 2405*4882a593Smuzhiyun Enabling this feature adds a small amount of overhead to 2406*4882a593Smuzhiyun context switches and increases the low-level kernel attack 2407*4882a593Smuzhiyun surface. Disabling it removes the modify_ldt(2) system call. 2408*4882a593Smuzhiyun 2409*4882a593Smuzhiyun Saying 'N' here may make sense for embedded or server kernels. 2410*4882a593Smuzhiyun 2411*4882a593Smuzhiyunsource "kernel/livepatch/Kconfig" 2412*4882a593Smuzhiyun 2413*4882a593Smuzhiyunendmenu 2414*4882a593Smuzhiyun 2415*4882a593Smuzhiyunconfig CC_HAS_SLS 2416*4882a593Smuzhiyun def_bool $(cc-option,-mharden-sls=all) 2417*4882a593Smuzhiyun 2418*4882a593Smuzhiyunconfig CC_HAS_RETURN_THUNK 2419*4882a593Smuzhiyun def_bool $(cc-option,-mfunction-return=thunk-extern) 2420*4882a593Smuzhiyun 2421*4882a593Smuzhiyunmenuconfig SPECULATION_MITIGATIONS 2422*4882a593Smuzhiyun bool "Mitigations for speculative execution vulnerabilities" 2423*4882a593Smuzhiyun default y 2424*4882a593Smuzhiyun help 2425*4882a593Smuzhiyun Say Y here to enable options which enable mitigations for 2426*4882a593Smuzhiyun speculative execution hardware vulnerabilities. 2427*4882a593Smuzhiyun 2428*4882a593Smuzhiyun If you say N, all mitigations will be disabled. You really 2429*4882a593Smuzhiyun should know what you are doing to say so. 2430*4882a593Smuzhiyun 2431*4882a593Smuzhiyunif SPECULATION_MITIGATIONS 2432*4882a593Smuzhiyun 2433*4882a593Smuzhiyunconfig PAGE_TABLE_ISOLATION 2434*4882a593Smuzhiyun bool "Remove the kernel mapping in user mode" 2435*4882a593Smuzhiyun default y 2436*4882a593Smuzhiyun depends on (X86_64 || X86_PAE) 2437*4882a593Smuzhiyun help 2438*4882a593Smuzhiyun This feature reduces the number of hardware side channels by 2439*4882a593Smuzhiyun ensuring that the majority of kernel addresses are not mapped 2440*4882a593Smuzhiyun into userspace. 2441*4882a593Smuzhiyun 2442*4882a593Smuzhiyun See Documentation/x86/pti.rst for more details. 2443*4882a593Smuzhiyun 2444*4882a593Smuzhiyunconfig RETPOLINE 2445*4882a593Smuzhiyun bool "Avoid speculative indirect branches in kernel" 2446*4882a593Smuzhiyun default y 2447*4882a593Smuzhiyun help 2448*4882a593Smuzhiyun Compile kernel with the retpoline compiler options to guard against 2449*4882a593Smuzhiyun kernel-to-user data leaks by avoiding speculative indirect 2450*4882a593Smuzhiyun branches. Requires a compiler with -mindirect-branch=thunk-extern 2451*4882a593Smuzhiyun support for full protection. The kernel may run slower. 2452*4882a593Smuzhiyun 2453*4882a593Smuzhiyunconfig RETHUNK 2454*4882a593Smuzhiyun bool "Enable return-thunks" 2455*4882a593Smuzhiyun depends on RETPOLINE && CC_HAS_RETURN_THUNK 2456*4882a593Smuzhiyun default y if X86_64 2457*4882a593Smuzhiyun help 2458*4882a593Smuzhiyun Compile the kernel with the return-thunks compiler option to guard 2459*4882a593Smuzhiyun against kernel-to-user data leaks by avoiding return speculation. 2460*4882a593Smuzhiyun Requires a compiler with -mfunction-return=thunk-extern 2461*4882a593Smuzhiyun support for full protection. The kernel may run slower. 2462*4882a593Smuzhiyun 2463*4882a593Smuzhiyunconfig CPU_UNRET_ENTRY 2464*4882a593Smuzhiyun bool "Enable UNRET on kernel entry" 2465*4882a593Smuzhiyun depends on CPU_SUP_AMD && RETHUNK && X86_64 2466*4882a593Smuzhiyun default y 2467*4882a593Smuzhiyun help 2468*4882a593Smuzhiyun Compile the kernel with support for the retbleed=unret mitigation. 2469*4882a593Smuzhiyun 2470*4882a593Smuzhiyunconfig CPU_IBPB_ENTRY 2471*4882a593Smuzhiyun bool "Enable IBPB on kernel entry" 2472*4882a593Smuzhiyun depends on CPU_SUP_AMD && X86_64 2473*4882a593Smuzhiyun default y 2474*4882a593Smuzhiyun help 2475*4882a593Smuzhiyun Compile the kernel with support for the retbleed=ibpb mitigation. 2476*4882a593Smuzhiyun 2477*4882a593Smuzhiyunconfig CPU_IBRS_ENTRY 2478*4882a593Smuzhiyun bool "Enable IBRS on kernel entry" 2479*4882a593Smuzhiyun depends on CPU_SUP_INTEL && X86_64 2480*4882a593Smuzhiyun default y 2481*4882a593Smuzhiyun help 2482*4882a593Smuzhiyun Compile the kernel with support for the spectre_v2=ibrs mitigation. 2483*4882a593Smuzhiyun This mitigates both spectre_v2 and retbleed at great cost to 2484*4882a593Smuzhiyun performance. 2485*4882a593Smuzhiyun 2486*4882a593Smuzhiyunconfig SLS 2487*4882a593Smuzhiyun bool "Mitigate Straight-Line-Speculation" 2488*4882a593Smuzhiyun depends on CC_HAS_SLS && X86_64 2489*4882a593Smuzhiyun default n 2490*4882a593Smuzhiyun help 2491*4882a593Smuzhiyun Compile the kernel with straight-line-speculation options to guard 2492*4882a593Smuzhiyun against straight line speculation. The kernel image might be slightly 2493*4882a593Smuzhiyun larger. 2494*4882a593Smuzhiyun 2495*4882a593Smuzhiyunendif 2496*4882a593Smuzhiyun 2497*4882a593Smuzhiyunconfig ARCH_HAS_ADD_PAGES 2498*4882a593Smuzhiyun def_bool y 2499*4882a593Smuzhiyun depends on X86_64 && ARCH_ENABLE_MEMORY_HOTPLUG 2500*4882a593Smuzhiyun 2501*4882a593Smuzhiyunconfig ARCH_ENABLE_MEMORY_HOTPLUG 2502*4882a593Smuzhiyun def_bool y 2503*4882a593Smuzhiyun depends on X86_64 || (X86_32 && HIGHMEM) 2504*4882a593Smuzhiyun 2505*4882a593Smuzhiyunconfig ARCH_ENABLE_MEMORY_HOTREMOVE 2506*4882a593Smuzhiyun def_bool y 2507*4882a593Smuzhiyun depends on MEMORY_HOTPLUG 2508*4882a593Smuzhiyun 2509*4882a593Smuzhiyunconfig USE_PERCPU_NUMA_NODE_ID 2510*4882a593Smuzhiyun def_bool y 2511*4882a593Smuzhiyun depends on NUMA 2512*4882a593Smuzhiyun 2513*4882a593Smuzhiyunconfig ARCH_ENABLE_SPLIT_PMD_PTLOCK 2514*4882a593Smuzhiyun def_bool y 2515*4882a593Smuzhiyun depends on X86_64 || X86_PAE 2516*4882a593Smuzhiyun 2517*4882a593Smuzhiyunconfig ARCH_ENABLE_HUGEPAGE_MIGRATION 2518*4882a593Smuzhiyun def_bool y 2519*4882a593Smuzhiyun depends on X86_64 && HUGETLB_PAGE && MIGRATION 2520*4882a593Smuzhiyun 2521*4882a593Smuzhiyunconfig ARCH_ENABLE_THP_MIGRATION 2522*4882a593Smuzhiyun def_bool y 2523*4882a593Smuzhiyun depends on X86_64 && TRANSPARENT_HUGEPAGE 2524*4882a593Smuzhiyun 2525*4882a593Smuzhiyunmenu "Power management and ACPI options" 2526*4882a593Smuzhiyun 2527*4882a593Smuzhiyunconfig ARCH_HIBERNATION_HEADER 2528*4882a593Smuzhiyun def_bool y 2529*4882a593Smuzhiyun depends on HIBERNATION 2530*4882a593Smuzhiyun 2531*4882a593Smuzhiyunsource "kernel/power/Kconfig" 2532*4882a593Smuzhiyun 2533*4882a593Smuzhiyunsource "drivers/acpi/Kconfig" 2534*4882a593Smuzhiyun 2535*4882a593Smuzhiyunsource "drivers/sfi/Kconfig" 2536*4882a593Smuzhiyun 2537*4882a593Smuzhiyunconfig X86_APM_BOOT 2538*4882a593Smuzhiyun def_bool y 2539*4882a593Smuzhiyun depends on APM 2540*4882a593Smuzhiyun 2541*4882a593Smuzhiyunmenuconfig APM 2542*4882a593Smuzhiyun tristate "APM (Advanced Power Management) BIOS support" 2543*4882a593Smuzhiyun depends on X86_32 && PM_SLEEP 2544*4882a593Smuzhiyun help 2545*4882a593Smuzhiyun APM is a BIOS specification for saving power using several different 2546*4882a593Smuzhiyun techniques. This is mostly useful for battery powered laptops with 2547*4882a593Smuzhiyun APM compliant BIOSes. If you say Y here, the system time will be 2548*4882a593Smuzhiyun reset after a RESUME operation, the /proc/apm device will provide 2549*4882a593Smuzhiyun battery status information, and user-space programs will receive 2550*4882a593Smuzhiyun notification of APM "events" (e.g. battery status change). 2551*4882a593Smuzhiyun 2552*4882a593Smuzhiyun If you select "Y" here, you can disable actual use of the APM 2553*4882a593Smuzhiyun BIOS by passing the "apm=off" option to the kernel at boot time. 2554*4882a593Smuzhiyun 2555*4882a593Smuzhiyun Note that the APM support is almost completely disabled for 2556*4882a593Smuzhiyun machines with more than one CPU. 2557*4882a593Smuzhiyun 2558*4882a593Smuzhiyun In order to use APM, you will need supporting software. For location 2559*4882a593Smuzhiyun and more information, read <file:Documentation/power/apm-acpi.rst> 2560*4882a593Smuzhiyun and the Battery Powered Linux mini-HOWTO, available from 2561*4882a593Smuzhiyun <http://www.tldp.org/docs.html#howto>. 2562*4882a593Smuzhiyun 2563*4882a593Smuzhiyun This driver does not spin down disk drives (see the hdparm(8) 2564*4882a593Smuzhiyun manpage ("man 8 hdparm") for that), and it doesn't turn off 2565*4882a593Smuzhiyun VESA-compliant "green" monitors. 2566*4882a593Smuzhiyun 2567*4882a593Smuzhiyun This driver does not support the TI 4000M TravelMate and the ACER 2568*4882a593Smuzhiyun 486/DX4/75 because they don't have compliant BIOSes. Many "green" 2569*4882a593Smuzhiyun desktop machines also don't have compliant BIOSes, and this driver 2570*4882a593Smuzhiyun may cause those machines to panic during the boot phase. 2571*4882a593Smuzhiyun 2572*4882a593Smuzhiyun Generally, if you don't have a battery in your machine, there isn't 2573*4882a593Smuzhiyun much point in using this driver and you should say N. If you get 2574*4882a593Smuzhiyun random kernel OOPSes or reboots that don't seem to be related to 2575*4882a593Smuzhiyun anything, try disabling/enabling this option (or disabling/enabling 2576*4882a593Smuzhiyun APM in your BIOS). 2577*4882a593Smuzhiyun 2578*4882a593Smuzhiyun Some other things you should try when experiencing seemingly random, 2579*4882a593Smuzhiyun "weird" problems: 2580*4882a593Smuzhiyun 2581*4882a593Smuzhiyun 1) make sure that you have enough swap space and that it is 2582*4882a593Smuzhiyun enabled. 2583*4882a593Smuzhiyun 2) pass the "no-hlt" option to the kernel 2584*4882a593Smuzhiyun 3) switch on floating point emulation in the kernel and pass 2585*4882a593Smuzhiyun the "no387" option to the kernel 2586*4882a593Smuzhiyun 4) pass the "floppy=nodma" option to the kernel 2587*4882a593Smuzhiyun 5) pass the "mem=4M" option to the kernel (thereby disabling 2588*4882a593Smuzhiyun all but the first 4 MB of RAM) 2589*4882a593Smuzhiyun 6) make sure that the CPU is not over clocked. 2590*4882a593Smuzhiyun 7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/> 2591*4882a593Smuzhiyun 8) disable the cache from your BIOS settings 2592*4882a593Smuzhiyun 9) install a fan for the video card or exchange video RAM 2593*4882a593Smuzhiyun 10) install a better fan for the CPU 2594*4882a593Smuzhiyun 11) exchange RAM chips 2595*4882a593Smuzhiyun 12) exchange the motherboard. 2596*4882a593Smuzhiyun 2597*4882a593Smuzhiyun To compile this driver as a module, choose M here: the 2598*4882a593Smuzhiyun module will be called apm. 2599*4882a593Smuzhiyun 2600*4882a593Smuzhiyunif APM 2601*4882a593Smuzhiyun 2602*4882a593Smuzhiyunconfig APM_IGNORE_USER_SUSPEND 2603*4882a593Smuzhiyun bool "Ignore USER SUSPEND" 2604*4882a593Smuzhiyun help 2605*4882a593Smuzhiyun This option will ignore USER SUSPEND requests. On machines with a 2606*4882a593Smuzhiyun compliant APM BIOS, you want to say N. However, on the NEC Versa M 2607*4882a593Smuzhiyun series notebooks, it is necessary to say Y because of a BIOS bug. 2608*4882a593Smuzhiyun 2609*4882a593Smuzhiyunconfig APM_DO_ENABLE 2610*4882a593Smuzhiyun bool "Enable PM at boot time" 2611*4882a593Smuzhiyun help 2612*4882a593Smuzhiyun Enable APM features at boot time. From page 36 of the APM BIOS 2613*4882a593Smuzhiyun specification: "When disabled, the APM BIOS does not automatically 2614*4882a593Smuzhiyun power manage devices, enter the Standby State, enter the Suspend 2615*4882a593Smuzhiyun State, or take power saving steps in response to CPU Idle calls." 2616*4882a593Smuzhiyun This driver will make CPU Idle calls when Linux is idle (unless this 2617*4882a593Smuzhiyun feature is turned off -- see "Do CPU IDLE calls", below). This 2618*4882a593Smuzhiyun should always save battery power, but more complicated APM features 2619*4882a593Smuzhiyun will be dependent on your BIOS implementation. You may need to turn 2620*4882a593Smuzhiyun this option off if your computer hangs at boot time when using APM 2621*4882a593Smuzhiyun support, or if it beeps continuously instead of suspending. Turn 2622*4882a593Smuzhiyun this off if you have a NEC UltraLite Versa 33/C or a Toshiba 2623*4882a593Smuzhiyun T400CDT. This is off by default since most machines do fine without 2624*4882a593Smuzhiyun this feature. 2625*4882a593Smuzhiyun 2626*4882a593Smuzhiyunconfig APM_CPU_IDLE 2627*4882a593Smuzhiyun depends on CPU_IDLE 2628*4882a593Smuzhiyun bool "Make CPU Idle calls when idle" 2629*4882a593Smuzhiyun help 2630*4882a593Smuzhiyun Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop. 2631*4882a593Smuzhiyun On some machines, this can activate improved power savings, such as 2632*4882a593Smuzhiyun a slowed CPU clock rate, when the machine is idle. These idle calls 2633*4882a593Smuzhiyun are made after the idle loop has run for some length of time (e.g., 2634*4882a593Smuzhiyun 333 mS). On some machines, this will cause a hang at boot time or 2635*4882a593Smuzhiyun whenever the CPU becomes idle. (On machines with more than one CPU, 2636*4882a593Smuzhiyun this option does nothing.) 2637*4882a593Smuzhiyun 2638*4882a593Smuzhiyunconfig APM_DISPLAY_BLANK 2639*4882a593Smuzhiyun bool "Enable console blanking using APM" 2640*4882a593Smuzhiyun help 2641*4882a593Smuzhiyun Enable console blanking using the APM. Some laptops can use this to 2642*4882a593Smuzhiyun turn off the LCD backlight when the screen blanker of the Linux 2643*4882a593Smuzhiyun virtual console blanks the screen. Note that this is only used by 2644*4882a593Smuzhiyun the virtual console screen blanker, and won't turn off the backlight 2645*4882a593Smuzhiyun when using the X Window system. This also doesn't have anything to 2646*4882a593Smuzhiyun do with your VESA-compliant power-saving monitor. Further, this 2647*4882a593Smuzhiyun option doesn't work for all laptops -- it might not turn off your 2648*4882a593Smuzhiyun backlight at all, or it might print a lot of errors to the console, 2649*4882a593Smuzhiyun especially if you are using gpm. 2650*4882a593Smuzhiyun 2651*4882a593Smuzhiyunconfig APM_ALLOW_INTS 2652*4882a593Smuzhiyun bool "Allow interrupts during APM BIOS calls" 2653*4882a593Smuzhiyun help 2654*4882a593Smuzhiyun Normally we disable external interrupts while we are making calls to 2655*4882a593Smuzhiyun the APM BIOS as a measure to lessen the effects of a badly behaving 2656*4882a593Smuzhiyun BIOS implementation. The BIOS should reenable interrupts if it 2657*4882a593Smuzhiyun needs to. Unfortunately, some BIOSes do not -- especially those in 2658*4882a593Smuzhiyun many of the newer IBM Thinkpads. If you experience hangs when you 2659*4882a593Smuzhiyun suspend, try setting this to Y. Otherwise, say N. 2660*4882a593Smuzhiyun 2661*4882a593Smuzhiyunendif # APM 2662*4882a593Smuzhiyun 2663*4882a593Smuzhiyunsource "drivers/cpufreq/Kconfig" 2664*4882a593Smuzhiyun 2665*4882a593Smuzhiyunsource "drivers/cpuidle/Kconfig" 2666*4882a593Smuzhiyun 2667*4882a593Smuzhiyunsource "drivers/idle/Kconfig" 2668*4882a593Smuzhiyun 2669*4882a593Smuzhiyunendmenu 2670*4882a593Smuzhiyun 2671*4882a593Smuzhiyun 2672*4882a593Smuzhiyunmenu "Bus options (PCI etc.)" 2673*4882a593Smuzhiyun 2674*4882a593Smuzhiyunchoice 2675*4882a593Smuzhiyun prompt "PCI access mode" 2676*4882a593Smuzhiyun depends on X86_32 && PCI 2677*4882a593Smuzhiyun default PCI_GOANY 2678*4882a593Smuzhiyun help 2679*4882a593Smuzhiyun On PCI systems, the BIOS can be used to detect the PCI devices and 2680*4882a593Smuzhiyun determine their configuration. However, some old PCI motherboards 2681*4882a593Smuzhiyun have BIOS bugs and may crash if this is done. Also, some embedded 2682*4882a593Smuzhiyun PCI-based systems don't have any BIOS at all. Linux can also try to 2683*4882a593Smuzhiyun detect the PCI hardware directly without using the BIOS. 2684*4882a593Smuzhiyun 2685*4882a593Smuzhiyun With this option, you can specify how Linux should detect the 2686*4882a593Smuzhiyun PCI devices. If you choose "BIOS", the BIOS will be used, 2687*4882a593Smuzhiyun if you choose "Direct", the BIOS won't be used, and if you 2688*4882a593Smuzhiyun choose "MMConfig", then PCI Express MMCONFIG will be used. 2689*4882a593Smuzhiyun If you choose "Any", the kernel will try MMCONFIG, then the 2690*4882a593Smuzhiyun direct access method and falls back to the BIOS if that doesn't 2691*4882a593Smuzhiyun work. If unsure, go with the default, which is "Any". 2692*4882a593Smuzhiyun 2693*4882a593Smuzhiyunconfig PCI_GOBIOS 2694*4882a593Smuzhiyun bool "BIOS" 2695*4882a593Smuzhiyun 2696*4882a593Smuzhiyunconfig PCI_GOMMCONFIG 2697*4882a593Smuzhiyun bool "MMConfig" 2698*4882a593Smuzhiyun 2699*4882a593Smuzhiyunconfig PCI_GODIRECT 2700*4882a593Smuzhiyun bool "Direct" 2701*4882a593Smuzhiyun 2702*4882a593Smuzhiyunconfig PCI_GOOLPC 2703*4882a593Smuzhiyun bool "OLPC XO-1" 2704*4882a593Smuzhiyun depends on OLPC 2705*4882a593Smuzhiyun 2706*4882a593Smuzhiyunconfig PCI_GOANY 2707*4882a593Smuzhiyun bool "Any" 2708*4882a593Smuzhiyun 2709*4882a593Smuzhiyunendchoice 2710*4882a593Smuzhiyun 2711*4882a593Smuzhiyunconfig PCI_BIOS 2712*4882a593Smuzhiyun def_bool y 2713*4882a593Smuzhiyun depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY) 2714*4882a593Smuzhiyun 2715*4882a593Smuzhiyun# x86-64 doesn't support PCI BIOS access from long mode so always go direct. 2716*4882a593Smuzhiyunconfig PCI_DIRECT 2717*4882a593Smuzhiyun def_bool y 2718*4882a593Smuzhiyun depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG)) 2719*4882a593Smuzhiyun 2720*4882a593Smuzhiyunconfig PCI_MMCONFIG 2721*4882a593Smuzhiyun bool "Support mmconfig PCI config space access" if X86_64 2722*4882a593Smuzhiyun default y 2723*4882a593Smuzhiyun depends on PCI && (ACPI || SFI || JAILHOUSE_GUEST) 2724*4882a593Smuzhiyun depends on X86_64 || (PCI_GOANY || PCI_GOMMCONFIG) 2725*4882a593Smuzhiyun 2726*4882a593Smuzhiyunconfig PCI_OLPC 2727*4882a593Smuzhiyun def_bool y 2728*4882a593Smuzhiyun depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY) 2729*4882a593Smuzhiyun 2730*4882a593Smuzhiyunconfig PCI_XEN 2731*4882a593Smuzhiyun def_bool y 2732*4882a593Smuzhiyun depends on PCI && XEN 2733*4882a593Smuzhiyun select SWIOTLB_XEN 2734*4882a593Smuzhiyun 2735*4882a593Smuzhiyunconfig MMCONF_FAM10H 2736*4882a593Smuzhiyun def_bool y 2737*4882a593Smuzhiyun depends on X86_64 && PCI_MMCONFIG && ACPI 2738*4882a593Smuzhiyun 2739*4882a593Smuzhiyunconfig PCI_CNB20LE_QUIRK 2740*4882a593Smuzhiyun bool "Read CNB20LE Host Bridge Windows" if EXPERT 2741*4882a593Smuzhiyun depends on PCI 2742*4882a593Smuzhiyun help 2743*4882a593Smuzhiyun Read the PCI windows out of the CNB20LE host bridge. This allows 2744*4882a593Smuzhiyun PCI hotplug to work on systems with the CNB20LE chipset which do 2745*4882a593Smuzhiyun not have ACPI. 2746*4882a593Smuzhiyun 2747*4882a593Smuzhiyun There's no public spec for this chipset, and this functionality 2748*4882a593Smuzhiyun is known to be incomplete. 2749*4882a593Smuzhiyun 2750*4882a593Smuzhiyun You should say N unless you know you need this. 2751*4882a593Smuzhiyun 2752*4882a593Smuzhiyunconfig ISA_BUS 2753*4882a593Smuzhiyun bool "ISA bus support on modern systems" if EXPERT 2754*4882a593Smuzhiyun help 2755*4882a593Smuzhiyun Expose ISA bus device drivers and options available for selection and 2756*4882a593Smuzhiyun configuration. Enable this option if your target machine has an ISA 2757*4882a593Smuzhiyun bus. ISA is an older system, displaced by PCI and newer bus 2758*4882a593Smuzhiyun architectures -- if your target machine is modern, it probably does 2759*4882a593Smuzhiyun not have an ISA bus. 2760*4882a593Smuzhiyun 2761*4882a593Smuzhiyun If unsure, say N. 2762*4882a593Smuzhiyun 2763*4882a593Smuzhiyun# x86_64 have no ISA slots, but can have ISA-style DMA. 2764*4882a593Smuzhiyunconfig ISA_DMA_API 2765*4882a593Smuzhiyun bool "ISA-style DMA support" if (X86_64 && EXPERT) 2766*4882a593Smuzhiyun default y 2767*4882a593Smuzhiyun help 2768*4882a593Smuzhiyun Enables ISA-style DMA support for devices requiring such controllers. 2769*4882a593Smuzhiyun If unsure, say Y. 2770*4882a593Smuzhiyun 2771*4882a593Smuzhiyunif X86_32 2772*4882a593Smuzhiyun 2773*4882a593Smuzhiyunconfig ISA 2774*4882a593Smuzhiyun bool "ISA support" 2775*4882a593Smuzhiyun help 2776*4882a593Smuzhiyun Find out whether you have ISA slots on your motherboard. ISA is the 2777*4882a593Smuzhiyun name of a bus system, i.e. the way the CPU talks to the other stuff 2778*4882a593Smuzhiyun inside your box. Other bus systems are PCI, EISA, MicroChannel 2779*4882a593Smuzhiyun (MCA) or VESA. ISA is an older system, now being displaced by PCI; 2780*4882a593Smuzhiyun newer boards don't support it. If you have ISA, say Y, otherwise N. 2781*4882a593Smuzhiyun 2782*4882a593Smuzhiyunconfig SCx200 2783*4882a593Smuzhiyun tristate "NatSemi SCx200 support" 2784*4882a593Smuzhiyun help 2785*4882a593Smuzhiyun This provides basic support for National Semiconductor's 2786*4882a593Smuzhiyun (now AMD's) Geode processors. The driver probes for the 2787*4882a593Smuzhiyun PCI-IDs of several on-chip devices, so its a good dependency 2788*4882a593Smuzhiyun for other scx200_* drivers. 2789*4882a593Smuzhiyun 2790*4882a593Smuzhiyun If compiled as a module, the driver is named scx200. 2791*4882a593Smuzhiyun 2792*4882a593Smuzhiyunconfig SCx200HR_TIMER 2793*4882a593Smuzhiyun tristate "NatSemi SCx200 27MHz High-Resolution Timer Support" 2794*4882a593Smuzhiyun depends on SCx200 2795*4882a593Smuzhiyun default y 2796*4882a593Smuzhiyun help 2797*4882a593Smuzhiyun This driver provides a clocksource built upon the on-chip 2798*4882a593Smuzhiyun 27MHz high-resolution timer. Its also a workaround for 2799*4882a593Smuzhiyun NSC Geode SC-1100's buggy TSC, which loses time when the 2800*4882a593Smuzhiyun processor goes idle (as is done by the scheduler). The 2801*4882a593Smuzhiyun other workaround is idle=poll boot option. 2802*4882a593Smuzhiyun 2803*4882a593Smuzhiyunconfig OLPC 2804*4882a593Smuzhiyun bool "One Laptop Per Child support" 2805*4882a593Smuzhiyun depends on !X86_PAE 2806*4882a593Smuzhiyun select GPIOLIB 2807*4882a593Smuzhiyun select OF 2808*4882a593Smuzhiyun select OF_PROMTREE 2809*4882a593Smuzhiyun select IRQ_DOMAIN 2810*4882a593Smuzhiyun select OLPC_EC 2811*4882a593Smuzhiyun help 2812*4882a593Smuzhiyun Add support for detecting the unique features of the OLPC 2813*4882a593Smuzhiyun XO hardware. 2814*4882a593Smuzhiyun 2815*4882a593Smuzhiyunconfig OLPC_XO1_PM 2816*4882a593Smuzhiyun bool "OLPC XO-1 Power Management" 2817*4882a593Smuzhiyun depends on OLPC && MFD_CS5535=y && PM_SLEEP 2818*4882a593Smuzhiyun help 2819*4882a593Smuzhiyun Add support for poweroff and suspend of the OLPC XO-1 laptop. 2820*4882a593Smuzhiyun 2821*4882a593Smuzhiyunconfig OLPC_XO1_RTC 2822*4882a593Smuzhiyun bool "OLPC XO-1 Real Time Clock" 2823*4882a593Smuzhiyun depends on OLPC_XO1_PM && RTC_DRV_CMOS 2824*4882a593Smuzhiyun help 2825*4882a593Smuzhiyun Add support for the XO-1 real time clock, which can be used as a 2826*4882a593Smuzhiyun programmable wakeup source. 2827*4882a593Smuzhiyun 2828*4882a593Smuzhiyunconfig OLPC_XO1_SCI 2829*4882a593Smuzhiyun bool "OLPC XO-1 SCI extras" 2830*4882a593Smuzhiyun depends on OLPC && OLPC_XO1_PM && GPIO_CS5535=y 2831*4882a593Smuzhiyun depends on INPUT=y 2832*4882a593Smuzhiyun select POWER_SUPPLY 2833*4882a593Smuzhiyun help 2834*4882a593Smuzhiyun Add support for SCI-based features of the OLPC XO-1 laptop: 2835*4882a593Smuzhiyun - EC-driven system wakeups 2836*4882a593Smuzhiyun - Power button 2837*4882a593Smuzhiyun - Ebook switch 2838*4882a593Smuzhiyun - Lid switch 2839*4882a593Smuzhiyun - AC adapter status updates 2840*4882a593Smuzhiyun - Battery status updates 2841*4882a593Smuzhiyun 2842*4882a593Smuzhiyunconfig OLPC_XO15_SCI 2843*4882a593Smuzhiyun bool "OLPC XO-1.5 SCI extras" 2844*4882a593Smuzhiyun depends on OLPC && ACPI 2845*4882a593Smuzhiyun select POWER_SUPPLY 2846*4882a593Smuzhiyun help 2847*4882a593Smuzhiyun Add support for SCI-based features of the OLPC XO-1.5 laptop: 2848*4882a593Smuzhiyun - EC-driven system wakeups 2849*4882a593Smuzhiyun - AC adapter status updates 2850*4882a593Smuzhiyun - Battery status updates 2851*4882a593Smuzhiyun 2852*4882a593Smuzhiyunconfig ALIX 2853*4882a593Smuzhiyun bool "PCEngines ALIX System Support (LED setup)" 2854*4882a593Smuzhiyun select GPIOLIB 2855*4882a593Smuzhiyun help 2856*4882a593Smuzhiyun This option enables system support for the PCEngines ALIX. 2857*4882a593Smuzhiyun At present this just sets up LEDs for GPIO control on 2858*4882a593Smuzhiyun ALIX2/3/6 boards. However, other system specific setup should 2859*4882a593Smuzhiyun get added here. 2860*4882a593Smuzhiyun 2861*4882a593Smuzhiyun Note: You must still enable the drivers for GPIO and LED support 2862*4882a593Smuzhiyun (GPIO_CS5535 & LEDS_GPIO) to actually use the LEDs 2863*4882a593Smuzhiyun 2864*4882a593Smuzhiyun Note: You have to set alix.force=1 for boards with Award BIOS. 2865*4882a593Smuzhiyun 2866*4882a593Smuzhiyunconfig NET5501 2867*4882a593Smuzhiyun bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)" 2868*4882a593Smuzhiyun select GPIOLIB 2869*4882a593Smuzhiyun help 2870*4882a593Smuzhiyun This option enables system support for the Soekris Engineering net5501. 2871*4882a593Smuzhiyun 2872*4882a593Smuzhiyunconfig GEOS 2873*4882a593Smuzhiyun bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)" 2874*4882a593Smuzhiyun select GPIOLIB 2875*4882a593Smuzhiyun depends on DMI 2876*4882a593Smuzhiyun help 2877*4882a593Smuzhiyun This option enables system support for the Traverse Technologies GEOS. 2878*4882a593Smuzhiyun 2879*4882a593Smuzhiyunconfig TS5500 2880*4882a593Smuzhiyun bool "Technologic Systems TS-5500 platform support" 2881*4882a593Smuzhiyun depends on MELAN 2882*4882a593Smuzhiyun select CHECK_SIGNATURE 2883*4882a593Smuzhiyun select NEW_LEDS 2884*4882a593Smuzhiyun select LEDS_CLASS 2885*4882a593Smuzhiyun help 2886*4882a593Smuzhiyun This option enables system support for the Technologic Systems TS-5500. 2887*4882a593Smuzhiyun 2888*4882a593Smuzhiyunendif # X86_32 2889*4882a593Smuzhiyun 2890*4882a593Smuzhiyunconfig AMD_NB 2891*4882a593Smuzhiyun def_bool y 2892*4882a593Smuzhiyun depends on CPU_SUP_AMD && PCI 2893*4882a593Smuzhiyun 2894*4882a593Smuzhiyunconfig X86_SYSFB 2895*4882a593Smuzhiyun bool "Mark VGA/VBE/EFI FB as generic system framebuffer" 2896*4882a593Smuzhiyun help 2897*4882a593Smuzhiyun Firmwares often provide initial graphics framebuffers so the BIOS, 2898*4882a593Smuzhiyun bootloader or kernel can show basic video-output during boot for 2899*4882a593Smuzhiyun user-guidance and debugging. Historically, x86 used the VESA BIOS 2900*4882a593Smuzhiyun Extensions and EFI-framebuffers for this, which are mostly limited 2901*4882a593Smuzhiyun to x86. 2902*4882a593Smuzhiyun This option, if enabled, marks VGA/VBE/EFI framebuffers as generic 2903*4882a593Smuzhiyun framebuffers so the new generic system-framebuffer drivers can be 2904*4882a593Smuzhiyun used on x86. If the framebuffer is not compatible with the generic 2905*4882a593Smuzhiyun modes, it is advertised as fallback platform framebuffer so legacy 2906*4882a593Smuzhiyun drivers like efifb, vesafb and uvesafb can pick it up. 2907*4882a593Smuzhiyun If this option is not selected, all system framebuffers are always 2908*4882a593Smuzhiyun marked as fallback platform framebuffers as usual. 2909*4882a593Smuzhiyun 2910*4882a593Smuzhiyun Note: Legacy fbdev drivers, including vesafb, efifb, uvesafb, will 2911*4882a593Smuzhiyun not be able to pick up generic system framebuffers if this option 2912*4882a593Smuzhiyun is selected. You are highly encouraged to enable simplefb as 2913*4882a593Smuzhiyun replacement if you select this option. simplefb can correctly deal 2914*4882a593Smuzhiyun with generic system framebuffers. But you should still keep vesafb 2915*4882a593Smuzhiyun and others enabled as fallback if a system framebuffer is 2916*4882a593Smuzhiyun incompatible with simplefb. 2917*4882a593Smuzhiyun 2918*4882a593Smuzhiyun If unsure, say Y. 2919*4882a593Smuzhiyun 2920*4882a593Smuzhiyunendmenu 2921*4882a593Smuzhiyun 2922*4882a593Smuzhiyun 2923*4882a593Smuzhiyunmenu "Binary Emulations" 2924*4882a593Smuzhiyun 2925*4882a593Smuzhiyunconfig IA32_EMULATION 2926*4882a593Smuzhiyun bool "IA32 Emulation" 2927*4882a593Smuzhiyun depends on X86_64 2928*4882a593Smuzhiyun select ARCH_WANT_OLD_COMPAT_IPC 2929*4882a593Smuzhiyun select BINFMT_ELF 2930*4882a593Smuzhiyun select COMPAT_BINFMT_ELF 2931*4882a593Smuzhiyun select COMPAT_OLD_SIGACTION 2932*4882a593Smuzhiyun help 2933*4882a593Smuzhiyun Include code to run legacy 32-bit programs under a 2934*4882a593Smuzhiyun 64-bit kernel. You should likely turn this on, unless you're 2935*4882a593Smuzhiyun 100% sure that you don't have any 32-bit programs left. 2936*4882a593Smuzhiyun 2937*4882a593Smuzhiyunconfig IA32_AOUT 2938*4882a593Smuzhiyun tristate "IA32 a.out support" 2939*4882a593Smuzhiyun depends on IA32_EMULATION 2940*4882a593Smuzhiyun depends on BROKEN 2941*4882a593Smuzhiyun help 2942*4882a593Smuzhiyun Support old a.out binaries in the 32bit emulation. 2943*4882a593Smuzhiyun 2944*4882a593Smuzhiyunconfig X86_X32 2945*4882a593Smuzhiyun bool "x32 ABI for 64-bit mode" 2946*4882a593Smuzhiyun depends on X86_64 2947*4882a593Smuzhiyun # llvm-objcopy does not convert x86_64 .note.gnu.property or 2948*4882a593Smuzhiyun # compressed debug sections to x86_x32 properly: 2949*4882a593Smuzhiyun # https://github.com/ClangBuiltLinux/linux/issues/514 2950*4882a593Smuzhiyun # https://github.com/ClangBuiltLinux/linux/issues/1141 2951*4882a593Smuzhiyun depends on $(success,$(OBJCOPY) --version | head -n1 | grep -qv llvm) 2952*4882a593Smuzhiyun help 2953*4882a593Smuzhiyun Include code to run binaries for the x32 native 32-bit ABI 2954*4882a593Smuzhiyun for 64-bit processors. An x32 process gets access to the 2955*4882a593Smuzhiyun full 64-bit register file and wide data path while leaving 2956*4882a593Smuzhiyun pointers at 32 bits for smaller memory footprint. 2957*4882a593Smuzhiyun 2958*4882a593Smuzhiyun You will need a recent binutils (2.22 or later) with 2959*4882a593Smuzhiyun elf32_x86_64 support enabled to compile a kernel with this 2960*4882a593Smuzhiyun option set. 2961*4882a593Smuzhiyun 2962*4882a593Smuzhiyunconfig COMPAT_32 2963*4882a593Smuzhiyun def_bool y 2964*4882a593Smuzhiyun depends on IA32_EMULATION || X86_32 2965*4882a593Smuzhiyun select HAVE_UID16 2966*4882a593Smuzhiyun select OLD_SIGSUSPEND3 2967*4882a593Smuzhiyun 2968*4882a593Smuzhiyunconfig COMPAT 2969*4882a593Smuzhiyun def_bool y 2970*4882a593Smuzhiyun depends on IA32_EMULATION || X86_X32 2971*4882a593Smuzhiyun 2972*4882a593Smuzhiyunif COMPAT 2973*4882a593Smuzhiyunconfig COMPAT_FOR_U64_ALIGNMENT 2974*4882a593Smuzhiyun def_bool y 2975*4882a593Smuzhiyun 2976*4882a593Smuzhiyunconfig SYSVIPC_COMPAT 2977*4882a593Smuzhiyun def_bool y 2978*4882a593Smuzhiyun depends on SYSVIPC 2979*4882a593Smuzhiyunendif 2980*4882a593Smuzhiyun 2981*4882a593Smuzhiyunendmenu 2982*4882a593Smuzhiyun 2983*4882a593Smuzhiyun 2984*4882a593Smuzhiyunconfig HAVE_ATOMIC_IOMAP 2985*4882a593Smuzhiyun def_bool y 2986*4882a593Smuzhiyun depends on X86_32 2987*4882a593Smuzhiyun 2988*4882a593Smuzhiyunsource "drivers/firmware/Kconfig" 2989*4882a593Smuzhiyun 2990*4882a593Smuzhiyunsource "arch/x86/kvm/Kconfig" 2991*4882a593Smuzhiyun 2992*4882a593Smuzhiyunsource "arch/x86/Kconfig.assembler" 2993