xref: /kernel/linux/linux-5.10/arch/x86/Kconfig (revision 8c2ecf20)
18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci# Select 32 or 64 bit
38c2ecf20Sopenharmony_ciconfig 64BIT
48c2ecf20Sopenharmony_ci	bool "64-bit kernel" if "$(ARCH)" = "x86"
58c2ecf20Sopenharmony_ci	default "$(ARCH)" != "i386"
68c2ecf20Sopenharmony_ci	help
78c2ecf20Sopenharmony_ci	  Say yes to build a 64-bit kernel - formerly known as x86_64
88c2ecf20Sopenharmony_ci	  Say no to build a 32-bit kernel - formerly known as i386
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ciconfig X86_32
118c2ecf20Sopenharmony_ci	def_bool y
128c2ecf20Sopenharmony_ci	depends on !64BIT
138c2ecf20Sopenharmony_ci	# Options that are inherently 32-bit kernel only:
148c2ecf20Sopenharmony_ci	select ARCH_WANT_IPC_PARSE_VERSION
158c2ecf20Sopenharmony_ci	select CLKSRC_I8253
168c2ecf20Sopenharmony_ci	select CLONE_BACKWARDS
178c2ecf20Sopenharmony_ci	select HAVE_DEBUG_STACKOVERFLOW
188c2ecf20Sopenharmony_ci	select MODULES_USE_ELF_REL
198c2ecf20Sopenharmony_ci	select OLD_SIGACTION
208c2ecf20Sopenharmony_ci	select GENERIC_VDSO_32
218c2ecf20Sopenharmony_ci	select ARCH_SPLIT_ARG64
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciconfig X86_64
248c2ecf20Sopenharmony_ci	def_bool y
258c2ecf20Sopenharmony_ci	depends on 64BIT
268c2ecf20Sopenharmony_ci	# Options that are inherently 64-bit kernel only:
278c2ecf20Sopenharmony_ci	select ARCH_HAS_GIGANTIC_PAGE
288c2ecf20Sopenharmony_ci	select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
298c2ecf20Sopenharmony_ci	select ARCH_USE_CMPXCHG_LOCKREF
308c2ecf20Sopenharmony_ci	select HAVE_ARCH_SOFT_DIRTY
318c2ecf20Sopenharmony_ci	select MODULES_USE_ELF_RELA
328c2ecf20Sopenharmony_ci	select NEED_DMA_MAP_STATE
338c2ecf20Sopenharmony_ci	select SWIOTLB
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciconfig FORCE_DYNAMIC_FTRACE
368c2ecf20Sopenharmony_ci	def_bool y
378c2ecf20Sopenharmony_ci	depends on X86_32
388c2ecf20Sopenharmony_ci	depends on FUNCTION_TRACER
398c2ecf20Sopenharmony_ci	select DYNAMIC_FTRACE
408c2ecf20Sopenharmony_ci	help
418c2ecf20Sopenharmony_ci	 We keep the static function tracing (!DYNAMIC_FTRACE) around
428c2ecf20Sopenharmony_ci	 in order to test the non static function tracing in the
438c2ecf20Sopenharmony_ci	 generic code, as other architectures still use it. But we
448c2ecf20Sopenharmony_ci	 only need to keep it around for x86_64. No need to keep it
458c2ecf20Sopenharmony_ci	 for x86_32. For x86_32, force DYNAMIC_FTRACE. 
468c2ecf20Sopenharmony_ci#
478c2ecf20Sopenharmony_ci# Arch settings
488c2ecf20Sopenharmony_ci#
498c2ecf20Sopenharmony_ci# ( Note that options that are marked 'if X86_64' could in principle be
508c2ecf20Sopenharmony_ci#   ported to 32-bit as well. )
518c2ecf20Sopenharmony_ci#
528c2ecf20Sopenharmony_ciconfig X86
538c2ecf20Sopenharmony_ci	def_bool y
548c2ecf20Sopenharmony_ci	#
558c2ecf20Sopenharmony_ci	# Note: keep this list sorted alphabetically
568c2ecf20Sopenharmony_ci	#
578c2ecf20Sopenharmony_ci	select ACPI_LEGACY_TABLES_LOOKUP	if ACPI
588c2ecf20Sopenharmony_ci	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
598c2ecf20Sopenharmony_ci	select ARCH_32BIT_OFF_T			if X86_32
608c2ecf20Sopenharmony_ci	select ARCH_CLOCKSOURCE_INIT
618c2ecf20Sopenharmony_ci	select ARCH_HAS_ACPI_TABLE_UPGRADE	if ACPI
628c2ecf20Sopenharmony_ci	select ARCH_HAS_CPU_FINALIZE_INIT
638c2ecf20Sopenharmony_ci	select ARCH_HAS_DEBUG_VIRTUAL
648c2ecf20Sopenharmony_ci	select ARCH_HAS_DEBUG_VM_PGTABLE	if !X86_PAE
658c2ecf20Sopenharmony_ci	select ARCH_HAS_DEVMEM_IS_ALLOWED
668c2ecf20Sopenharmony_ci	select ARCH_HAS_EARLY_DEBUG		if KGDB
678c2ecf20Sopenharmony_ci	select ARCH_HAS_ELF_RANDOMIZE
688c2ecf20Sopenharmony_ci	select ARCH_HAS_FAST_MULTIPLIER
698c2ecf20Sopenharmony_ci	select ARCH_HAS_FILTER_PGPROT
708c2ecf20Sopenharmony_ci	select ARCH_HAS_FORTIFY_SOURCE
718c2ecf20Sopenharmony_ci	select ARCH_HAS_GCOV_PROFILE_ALL
728c2ecf20Sopenharmony_ci	select ARCH_HAS_KCOV			if X86_64 && STACK_VALIDATION
738c2ecf20Sopenharmony_ci	select ARCH_HAS_MEM_ENCRYPT
748c2ecf20Sopenharmony_ci	select ARCH_HAS_MEMBARRIER_SYNC_CORE
758c2ecf20Sopenharmony_ci	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
768c2ecf20Sopenharmony_ci	select ARCH_HAS_PMEM_API		if X86_64
778c2ecf20Sopenharmony_ci	select ARCH_HAS_PTE_DEVMAP		if X86_64
788c2ecf20Sopenharmony_ci	select ARCH_HAS_PTE_SPECIAL
798c2ecf20Sopenharmony_ci	select ARCH_HAS_UACCESS_FLUSHCACHE	if X86_64
808c2ecf20Sopenharmony_ci	select ARCH_HAS_COPY_MC			if X86_64
818c2ecf20Sopenharmony_ci	select ARCH_HAS_SET_MEMORY
828c2ecf20Sopenharmony_ci	select ARCH_HAS_SET_DIRECT_MAP
838c2ecf20Sopenharmony_ci	select ARCH_HAS_STRICT_KERNEL_RWX
848c2ecf20Sopenharmony_ci	select ARCH_HAS_STRICT_MODULE_RWX
858c2ecf20Sopenharmony_ci	select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
868c2ecf20Sopenharmony_ci	select ARCH_HAS_SYSCALL_WRAPPER
878c2ecf20Sopenharmony_ci	select ARCH_HAS_UBSAN_SANITIZE_ALL
888c2ecf20Sopenharmony_ci	select ARCH_HAS_DEBUG_WX
898c2ecf20Sopenharmony_ci	select ARCH_HAVE_NMI_SAFE_CMPXCHG
908c2ecf20Sopenharmony_ci	select ARCH_MIGHT_HAVE_ACPI_PDC		if ACPI
918c2ecf20Sopenharmony_ci	select ARCH_MIGHT_HAVE_PC_PARPORT
928c2ecf20Sopenharmony_ci	select ARCH_MIGHT_HAVE_PC_SERIO
938c2ecf20Sopenharmony_ci	select ARCH_STACKWALK
948c2ecf20Sopenharmony_ci	select ARCH_SUPPORTS_ACPI
958c2ecf20Sopenharmony_ci	select ARCH_SUPPORTS_ATOMIC_RMW
968c2ecf20Sopenharmony_ci	select ARCH_SUPPORTS_NUMA_BALANCING	if X86_64
978c2ecf20Sopenharmony_ci	select ARCH_USE_BUILTIN_BSWAP
988c2ecf20Sopenharmony_ci	select ARCH_USE_QUEUED_RWLOCKS
998c2ecf20Sopenharmony_ci	select ARCH_USE_QUEUED_SPINLOCKS
1008c2ecf20Sopenharmony_ci	select ARCH_USE_SYM_ANNOTATIONS
1018c2ecf20Sopenharmony_ci	select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
1028c2ecf20Sopenharmony_ci	select ARCH_WANT_DEFAULT_BPF_JIT	if X86_64
1038c2ecf20Sopenharmony_ci	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
1048c2ecf20Sopenharmony_ci	select ARCH_WANT_HUGE_PMD_SHARE
1058c2ecf20Sopenharmony_ci	select ARCH_WANT_LD_ORPHAN_WARN
1068c2ecf20Sopenharmony_ci	select ARCH_WANTS_THP_SWAP		if X86_64
1078c2ecf20Sopenharmony_ci	select BUILDTIME_TABLE_SORT
1088c2ecf20Sopenharmony_ci	select CLKEVT_I8253
1098c2ecf20Sopenharmony_ci	select CLOCKSOURCE_VALIDATE_LAST_CYCLE
1108c2ecf20Sopenharmony_ci	select CLOCKSOURCE_WATCHDOG
1118c2ecf20Sopenharmony_ci	select DCACHE_WORD_ACCESS
1128c2ecf20Sopenharmony_ci	select EDAC_ATOMIC_SCRUB
1138c2ecf20Sopenharmony_ci	select EDAC_SUPPORT
1148c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS
1158c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS_BROADCAST	if X86_64 || (X86_32 && X86_LOCAL_APIC)
1168c2ecf20Sopenharmony_ci	select GENERIC_CLOCKEVENTS_MIN_ADJUST
1178c2ecf20Sopenharmony_ci	select GENERIC_CMOS_UPDATE
1188c2ecf20Sopenharmony_ci	select GENERIC_CPU_AUTOPROBE
1198c2ecf20Sopenharmony_ci	select GENERIC_CPU_VULNERABILITIES
1208c2ecf20Sopenharmony_ci	select GENERIC_EARLY_IOREMAP
1218c2ecf20Sopenharmony_ci	select GENERIC_ENTRY
1228c2ecf20Sopenharmony_ci	select GENERIC_FIND_FIRST_BIT
1238c2ecf20Sopenharmony_ci	select GENERIC_IOMAP
1248c2ecf20Sopenharmony_ci	select GENERIC_IRQ_EFFECTIVE_AFF_MASK	if SMP
1258c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MATRIX_ALLOCATOR	if X86_LOCAL_APIC
1268c2ecf20Sopenharmony_ci	select GENERIC_IRQ_MIGRATION		if SMP
1278c2ecf20Sopenharmony_ci	select GENERIC_IRQ_PROBE
1288c2ecf20Sopenharmony_ci	select GENERIC_IRQ_RESERVATION_MODE
1298c2ecf20Sopenharmony_ci	select GENERIC_IRQ_SHOW
1308c2ecf20Sopenharmony_ci	select GENERIC_PENDING_IRQ		if SMP
1318c2ecf20Sopenharmony_ci	select GENERIC_PTDUMP
1328c2ecf20Sopenharmony_ci	select GENERIC_SMP_IDLE_THREAD
1338c2ecf20Sopenharmony_ci	select GENERIC_STRNCPY_FROM_USER
1348c2ecf20Sopenharmony_ci	select GENERIC_STRNLEN_USER
1358c2ecf20Sopenharmony_ci	select GENERIC_TIME_VSYSCALL
1368c2ecf20Sopenharmony_ci	select GENERIC_GETTIMEOFDAY
1378c2ecf20Sopenharmony_ci	select GENERIC_VDSO_TIME_NS
1388c2ecf20Sopenharmony_ci	select GUP_GET_PTE_LOW_HIGH		if X86_PAE
1398c2ecf20Sopenharmony_ci	select HARDIRQS_SW_RESEND
1408c2ecf20Sopenharmony_ci	select HARDLOCKUP_CHECK_TIMESTAMP	if X86_64
1418c2ecf20Sopenharmony_ci	select HAVE_ACPI_APEI			if ACPI
1428c2ecf20Sopenharmony_ci	select HAVE_ACPI_APEI_NMI		if ACPI
1438c2ecf20Sopenharmony_ci	select HAVE_ALIGNED_STRUCT_PAGE		if SLUB
1448c2ecf20Sopenharmony_ci	select HAVE_ARCH_AUDITSYSCALL
1458c2ecf20Sopenharmony_ci	select HAVE_ARCH_HUGE_VMAP		if X86_64 || X86_PAE
1468c2ecf20Sopenharmony_ci	select HAVE_ARCH_JUMP_LABEL
1478c2ecf20Sopenharmony_ci	select HAVE_ARCH_JUMP_LABEL_RELATIVE
1488c2ecf20Sopenharmony_ci	select HAVE_ARCH_KASAN			if X86_64
1498c2ecf20Sopenharmony_ci	select HAVE_ARCH_KASAN_VMALLOC		if X86_64
1508c2ecf20Sopenharmony_ci	select HAVE_ARCH_KGDB
1518c2ecf20Sopenharmony_ci	select HAVE_ARCH_MMAP_RND_BITS		if MMU
1528c2ecf20Sopenharmony_ci	select HAVE_ARCH_MMAP_RND_COMPAT_BITS	if MMU && COMPAT
1538c2ecf20Sopenharmony_ci	select HAVE_ARCH_COMPAT_MMAP_BASES	if MMU && COMPAT
1548c2ecf20Sopenharmony_ci	select HAVE_ARCH_PREL32_RELOCATIONS
1558c2ecf20Sopenharmony_ci	select HAVE_ARCH_SECCOMP_FILTER
1568c2ecf20Sopenharmony_ci	select HAVE_ARCH_THREAD_STRUCT_WHITELIST
1578c2ecf20Sopenharmony_ci	select HAVE_ARCH_STACKLEAK
1588c2ecf20Sopenharmony_ci	select HAVE_ARCH_TRACEHOOK
1598c2ecf20Sopenharmony_ci	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
1608c2ecf20Sopenharmony_ci	select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
1618c2ecf20Sopenharmony_ci	select HAVE_ARCH_USERFAULTFD_WP         if X86_64 && USERFAULTFD
1628c2ecf20Sopenharmony_ci	select HAVE_ARCH_VMAP_STACK		if X86_64
1638c2ecf20Sopenharmony_ci	select HAVE_ARCH_WITHIN_STACK_FRAMES
1648c2ecf20Sopenharmony_ci	select HAVE_ASM_MODVERSIONS
1658c2ecf20Sopenharmony_ci	select HAVE_CMPXCHG_DOUBLE
1668c2ecf20Sopenharmony_ci	select HAVE_CMPXCHG_LOCAL
1678c2ecf20Sopenharmony_ci	select HAVE_CONTEXT_TRACKING		if X86_64
1688c2ecf20Sopenharmony_ci	select HAVE_C_RECORDMCOUNT
1698c2ecf20Sopenharmony_ci	select HAVE_DEBUG_KMEMLEAK
1708c2ecf20Sopenharmony_ci	select HAVE_DMA_CONTIGUOUS
1718c2ecf20Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE
1728c2ecf20Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE_WITH_REGS
1738c2ecf20Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
1748c2ecf20Sopenharmony_ci	select HAVE_EBPF_JIT
1758c2ecf20Sopenharmony_ci	select HAVE_EFFICIENT_UNALIGNED_ACCESS
1768c2ecf20Sopenharmony_ci	select HAVE_EISA
1778c2ecf20Sopenharmony_ci	select HAVE_EXIT_THREAD
1788c2ecf20Sopenharmony_ci	select HAVE_FAST_GUP
1798c2ecf20Sopenharmony_ci	select HAVE_FENTRY			if X86_64 || DYNAMIC_FTRACE
1808c2ecf20Sopenharmony_ci	select HAVE_FTRACE_MCOUNT_RECORD
1818c2ecf20Sopenharmony_ci	select HAVE_FUNCTION_GRAPH_TRACER
1828c2ecf20Sopenharmony_ci	select HAVE_FUNCTION_TRACER
1838c2ecf20Sopenharmony_ci	select HAVE_GCC_PLUGINS
1848c2ecf20Sopenharmony_ci	select HAVE_HW_BREAKPOINT
1858c2ecf20Sopenharmony_ci	select HAVE_IDE
1868c2ecf20Sopenharmony_ci	select HAVE_IOREMAP_PROT
1878c2ecf20Sopenharmony_ci	select HAVE_IRQ_TIME_ACCOUNTING
1888c2ecf20Sopenharmony_ci	select HAVE_KERNEL_BZIP2
1898c2ecf20Sopenharmony_ci	select HAVE_KERNEL_GZIP
1908c2ecf20Sopenharmony_ci	select HAVE_KERNEL_LZ4
1918c2ecf20Sopenharmony_ci	select HAVE_KERNEL_LZMA
1928c2ecf20Sopenharmony_ci	select HAVE_KERNEL_LZO
1938c2ecf20Sopenharmony_ci	select HAVE_KERNEL_XZ
1948c2ecf20Sopenharmony_ci	select HAVE_KERNEL_ZSTD
1958c2ecf20Sopenharmony_ci	select HAVE_KPROBES
1968c2ecf20Sopenharmony_ci	select HAVE_KPROBES_ON_FTRACE
1978c2ecf20Sopenharmony_ci	select HAVE_FUNCTION_ERROR_INJECTION
1988c2ecf20Sopenharmony_ci	select HAVE_KRETPROBES
1998c2ecf20Sopenharmony_ci	select HAVE_KVM
2008c2ecf20Sopenharmony_ci	select HAVE_LIVEPATCH			if X86_64
2018c2ecf20Sopenharmony_ci	select HAVE_MIXED_BREAKPOINTS_REGS
2028c2ecf20Sopenharmony_ci	select HAVE_MOD_ARCH_SPECIFIC
2038c2ecf20Sopenharmony_ci	select HAVE_MOVE_PMD
2048c2ecf20Sopenharmony_ci	select HAVE_NMI
2058c2ecf20Sopenharmony_ci	select HAVE_OPROFILE
2068c2ecf20Sopenharmony_ci	select HAVE_OPTPROBES
2078c2ecf20Sopenharmony_ci	select HAVE_PCSPKR_PLATFORM
2088c2ecf20Sopenharmony_ci	select HAVE_PERF_EVENTS
2098c2ecf20Sopenharmony_ci	select HAVE_PERF_EVENTS_NMI
2108c2ecf20Sopenharmony_ci	select HAVE_HARDLOCKUP_DETECTOR_PERF	if PERF_EVENTS && HAVE_PERF_EVENTS_NMI
2118c2ecf20Sopenharmony_ci	select HAVE_PCI
2128c2ecf20Sopenharmony_ci	select HAVE_PERF_REGS
2138c2ecf20Sopenharmony_ci	select HAVE_PERF_USER_STACK_DUMP
2148c2ecf20Sopenharmony_ci	select MMU_GATHER_RCU_TABLE_FREE		if PARAVIRT
2158c2ecf20Sopenharmony_ci	select HAVE_POSIX_CPU_TIMERS_TASK_WORK
2168c2ecf20Sopenharmony_ci	select HAVE_REGS_AND_STACK_ACCESS_API
2178c2ecf20Sopenharmony_ci	select HAVE_RELIABLE_STACKTRACE		if X86_64 && (UNWINDER_FRAME_POINTER || UNWINDER_ORC) && STACK_VALIDATION
2188c2ecf20Sopenharmony_ci	select HAVE_FUNCTION_ARG_ACCESS_API
2198c2ecf20Sopenharmony_ci	select HAVE_STACKPROTECTOR		if CC_HAS_SANE_STACKPROTECTOR
2208c2ecf20Sopenharmony_ci	select HAVE_STACK_VALIDATION		if X86_64
2218c2ecf20Sopenharmony_ci	select HAVE_STATIC_CALL
2228c2ecf20Sopenharmony_ci	select HAVE_STATIC_CALL_INLINE		if HAVE_STACK_VALIDATION
2238c2ecf20Sopenharmony_ci	select HAVE_RSEQ
2248c2ecf20Sopenharmony_ci	select HAVE_SYSCALL_TRACEPOINTS
2258c2ecf20Sopenharmony_ci	select HAVE_UNSTABLE_SCHED_CLOCK
2268c2ecf20Sopenharmony_ci	select HAVE_USER_RETURN_NOTIFIER
2278c2ecf20Sopenharmony_ci	select HAVE_GENERIC_VDSO
2288c2ecf20Sopenharmony_ci	select HOTPLUG_SMT			if SMP
2298c2ecf20Sopenharmony_ci	select IRQ_FORCED_THREADING
2308c2ecf20Sopenharmony_ci	select NEED_SG_DMA_LENGTH
2318c2ecf20Sopenharmony_ci	select PCI_DOMAINS			if PCI
2328c2ecf20Sopenharmony_ci	select PCI_LOCKLESS_CONFIG		if PCI
2338c2ecf20Sopenharmony_ci	select PERF_EVENTS
2348c2ecf20Sopenharmony_ci	select RTC_LIB
2358c2ecf20Sopenharmony_ci	select RTC_MC146818_LIB
2368c2ecf20Sopenharmony_ci	select SPARSE_IRQ
2378c2ecf20Sopenharmony_ci	select SRCU
2388c2ecf20Sopenharmony_ci	select STACK_VALIDATION			if HAVE_STACK_VALIDATION && (HAVE_STATIC_CALL_INLINE || RETPOLINE)
2398c2ecf20Sopenharmony_ci	select SYSCTL_EXCEPTION_TRACE
2408c2ecf20Sopenharmony_ci	select THREAD_INFO_IN_TASK
2418c2ecf20Sopenharmony_ci	select USER_STACKTRACE_SUPPORT
2428c2ecf20Sopenharmony_ci	select VIRT_TO_BUS
2438c2ecf20Sopenharmony_ci	select HAVE_ARCH_KCSAN			if X86_64
2448c2ecf20Sopenharmony_ci	select X86_FEATURE_NAMES		if PROC_FS
2458c2ecf20Sopenharmony_ci	select PROC_PID_ARCH_STATUS		if PROC_FS
2468c2ecf20Sopenharmony_ci	imply IMA_SECURE_AND_OR_TRUSTED_BOOT    if EFI
2478c2ecf20Sopenharmony_ci
2488c2ecf20Sopenharmony_ciconfig INSTRUCTION_DECODER
2498c2ecf20Sopenharmony_ci	def_bool y
2508c2ecf20Sopenharmony_ci	depends on KPROBES || PERF_EVENTS || UPROBES
2518c2ecf20Sopenharmony_ci
2528c2ecf20Sopenharmony_ciconfig OUTPUT_FORMAT
2538c2ecf20Sopenharmony_ci	string
2548c2ecf20Sopenharmony_ci	default "elf32-i386" if X86_32
2558c2ecf20Sopenharmony_ci	default "elf64-x86-64" if X86_64
2568c2ecf20Sopenharmony_ci
2578c2ecf20Sopenharmony_ciconfig LOCKDEP_SUPPORT
2588c2ecf20Sopenharmony_ci	def_bool y
2598c2ecf20Sopenharmony_ci
2608c2ecf20Sopenharmony_ciconfig STACKTRACE_SUPPORT
2618c2ecf20Sopenharmony_ci	def_bool y
2628c2ecf20Sopenharmony_ci
2638c2ecf20Sopenharmony_ciconfig MMU
2648c2ecf20Sopenharmony_ci	def_bool y
2658c2ecf20Sopenharmony_ci
2668c2ecf20Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MIN
2678c2ecf20Sopenharmony_ci	default 28 if 64BIT
2688c2ecf20Sopenharmony_ci	default 8
2698c2ecf20Sopenharmony_ci
2708c2ecf20Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MAX
2718c2ecf20Sopenharmony_ci	default 32 if 64BIT
2728c2ecf20Sopenharmony_ci	default 16
2738c2ecf20Sopenharmony_ci
2748c2ecf20Sopenharmony_ciconfig ARCH_MMAP_RND_COMPAT_BITS_MIN
2758c2ecf20Sopenharmony_ci	default 8
2768c2ecf20Sopenharmony_ci
2778c2ecf20Sopenharmony_ciconfig ARCH_MMAP_RND_COMPAT_BITS_MAX
2788c2ecf20Sopenharmony_ci	default 16
2798c2ecf20Sopenharmony_ci
2808c2ecf20Sopenharmony_ciconfig SBUS
2818c2ecf20Sopenharmony_ci	bool
2828c2ecf20Sopenharmony_ci
2838c2ecf20Sopenharmony_ciconfig GENERIC_ISA_DMA
2848c2ecf20Sopenharmony_ci	def_bool y
2858c2ecf20Sopenharmony_ci	depends on ISA_DMA_API
2868c2ecf20Sopenharmony_ci
2878c2ecf20Sopenharmony_ciconfig GENERIC_BUG
2888c2ecf20Sopenharmony_ci	def_bool y
2898c2ecf20Sopenharmony_ci	depends on BUG
2908c2ecf20Sopenharmony_ci	select GENERIC_BUG_RELATIVE_POINTERS if X86_64
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ciconfig GENERIC_BUG_RELATIVE_POINTERS
2938c2ecf20Sopenharmony_ci	bool
2948c2ecf20Sopenharmony_ci
2958c2ecf20Sopenharmony_ciconfig ARCH_MAY_HAVE_PC_FDC
2968c2ecf20Sopenharmony_ci	def_bool y
2978c2ecf20Sopenharmony_ci	depends on ISA_DMA_API
2988c2ecf20Sopenharmony_ci
2998c2ecf20Sopenharmony_ciconfig GENERIC_CALIBRATE_DELAY
3008c2ecf20Sopenharmony_ci	def_bool y
3018c2ecf20Sopenharmony_ci
3028c2ecf20Sopenharmony_ciconfig ARCH_HAS_CPU_RELAX
3038c2ecf20Sopenharmony_ci	def_bool y
3048c2ecf20Sopenharmony_ci
3058c2ecf20Sopenharmony_ciconfig ARCH_HAS_CACHE_LINE_SIZE
3068c2ecf20Sopenharmony_ci	def_bool y
3078c2ecf20Sopenharmony_ci
3088c2ecf20Sopenharmony_ciconfig ARCH_HAS_FILTER_PGPROT
3098c2ecf20Sopenharmony_ci	def_bool y
3108c2ecf20Sopenharmony_ci
3118c2ecf20Sopenharmony_ciconfig HAVE_SETUP_PER_CPU_AREA
3128c2ecf20Sopenharmony_ci	def_bool y
3138c2ecf20Sopenharmony_ci
3148c2ecf20Sopenharmony_ciconfig NEED_PER_CPU_EMBED_FIRST_CHUNK
3158c2ecf20Sopenharmony_ci	def_bool y
3168c2ecf20Sopenharmony_ci
3178c2ecf20Sopenharmony_ciconfig NEED_PER_CPU_PAGE_FIRST_CHUNK
3188c2ecf20Sopenharmony_ci	def_bool y
3198c2ecf20Sopenharmony_ci
3208c2ecf20Sopenharmony_ciconfig ARCH_HIBERNATION_POSSIBLE
3218c2ecf20Sopenharmony_ci	def_bool y
3228c2ecf20Sopenharmony_ci
3238c2ecf20Sopenharmony_ciconfig ARCH_SUSPEND_POSSIBLE
3248c2ecf20Sopenharmony_ci	def_bool y
3258c2ecf20Sopenharmony_ci
3268c2ecf20Sopenharmony_ciconfig ARCH_WANT_GENERAL_HUGETLB
3278c2ecf20Sopenharmony_ci	def_bool y
3288c2ecf20Sopenharmony_ci
3298c2ecf20Sopenharmony_ciconfig ZONE_DMA32
3308c2ecf20Sopenharmony_ci	def_bool y if X86_64
3318c2ecf20Sopenharmony_ci
3328c2ecf20Sopenharmony_ciconfig AUDIT_ARCH
3338c2ecf20Sopenharmony_ci	def_bool y if X86_64
3348c2ecf20Sopenharmony_ci
3358c2ecf20Sopenharmony_ciconfig ARCH_SUPPORTS_DEBUG_PAGEALLOC
3368c2ecf20Sopenharmony_ci	def_bool y
3378c2ecf20Sopenharmony_ci
3388c2ecf20Sopenharmony_ciconfig KASAN_SHADOW_OFFSET
3398c2ecf20Sopenharmony_ci	hex
3408c2ecf20Sopenharmony_ci	depends on KASAN
3418c2ecf20Sopenharmony_ci	default 0xdffffc0000000000
3428c2ecf20Sopenharmony_ci
3438c2ecf20Sopenharmony_ciconfig HAVE_INTEL_TXT
3448c2ecf20Sopenharmony_ci	def_bool y
3458c2ecf20Sopenharmony_ci	depends on INTEL_IOMMU && ACPI
3468c2ecf20Sopenharmony_ci
3478c2ecf20Sopenharmony_ciconfig X86_32_SMP
3488c2ecf20Sopenharmony_ci	def_bool y
3498c2ecf20Sopenharmony_ci	depends on X86_32 && SMP
3508c2ecf20Sopenharmony_ci
3518c2ecf20Sopenharmony_ciconfig X86_64_SMP
3528c2ecf20Sopenharmony_ci	def_bool y
3538c2ecf20Sopenharmony_ci	depends on X86_64 && SMP
3548c2ecf20Sopenharmony_ci
3558c2ecf20Sopenharmony_ciconfig X86_32_LAZY_GS
3568c2ecf20Sopenharmony_ci	def_bool y
3578c2ecf20Sopenharmony_ci	depends on X86_32 && !STACKPROTECTOR
3588c2ecf20Sopenharmony_ci
3598c2ecf20Sopenharmony_ciconfig ARCH_SUPPORTS_UPROBES
3608c2ecf20Sopenharmony_ci	def_bool y
3618c2ecf20Sopenharmony_ci
3628c2ecf20Sopenharmony_ciconfig FIX_EARLYCON_MEM
3638c2ecf20Sopenharmony_ci	def_bool y
3648c2ecf20Sopenharmony_ci
3658c2ecf20Sopenharmony_ciconfig DYNAMIC_PHYSICAL_MASK
3668c2ecf20Sopenharmony_ci	bool
3678c2ecf20Sopenharmony_ci
3688c2ecf20Sopenharmony_ciconfig PGTABLE_LEVELS
3698c2ecf20Sopenharmony_ci	int
3708c2ecf20Sopenharmony_ci	default 5 if X86_5LEVEL
3718c2ecf20Sopenharmony_ci	default 4 if X86_64
3728c2ecf20Sopenharmony_ci	default 3 if X86_PAE
3738c2ecf20Sopenharmony_ci	default 2
3748c2ecf20Sopenharmony_ci
3758c2ecf20Sopenharmony_ciconfig CC_HAS_SANE_STACKPROTECTOR
3768c2ecf20Sopenharmony_ci	bool
3778c2ecf20Sopenharmony_ci	default $(success,$(srctree)/scripts/gcc-x86_64-has-stack-protector.sh $(CC)) if 64BIT
3788c2ecf20Sopenharmony_ci	default $(success,$(srctree)/scripts/gcc-x86_32-has-stack-protector.sh $(CC))
3798c2ecf20Sopenharmony_ci	help
3808c2ecf20Sopenharmony_ci	   We have to make sure stack protector is unconditionally disabled if
3818c2ecf20Sopenharmony_ci	   the compiler produces broken code.
3828c2ecf20Sopenharmony_ci
3838c2ecf20Sopenharmony_cimenu "Processor type and features"
3848c2ecf20Sopenharmony_ci
3858c2ecf20Sopenharmony_ciconfig ZONE_DMA
3868c2ecf20Sopenharmony_ci	bool "DMA memory allocation support" if EXPERT
3878c2ecf20Sopenharmony_ci	default y
3888c2ecf20Sopenharmony_ci	help
3898c2ecf20Sopenharmony_ci	  DMA memory allocation support allows devices with less than 32-bit
3908c2ecf20Sopenharmony_ci	  addressing to allocate within the first 16MB of address space.
3918c2ecf20Sopenharmony_ci	  Disable if no such devices will be used.
3928c2ecf20Sopenharmony_ci
3938c2ecf20Sopenharmony_ci	  If unsure, say Y.
3948c2ecf20Sopenharmony_ci
3958c2ecf20Sopenharmony_ciconfig SMP
3968c2ecf20Sopenharmony_ci	bool "Symmetric multi-processing support"
3978c2ecf20Sopenharmony_ci	help
3988c2ecf20Sopenharmony_ci	  This enables support for systems with more than one CPU. If you have
3998c2ecf20Sopenharmony_ci	  a system with only one CPU, say N. If you have a system with more
4008c2ecf20Sopenharmony_ci	  than one CPU, say Y.
4018c2ecf20Sopenharmony_ci
4028c2ecf20Sopenharmony_ci	  If you say N here, the kernel will run on uni- and multiprocessor
4038c2ecf20Sopenharmony_ci	  machines, but will use only one CPU of a multiprocessor machine. If
4048c2ecf20Sopenharmony_ci	  you say Y here, the kernel will run on many, but not all,
4058c2ecf20Sopenharmony_ci	  uniprocessor machines. On a uniprocessor machine, the kernel
4068c2ecf20Sopenharmony_ci	  will run faster if you say N here.
4078c2ecf20Sopenharmony_ci
4088c2ecf20Sopenharmony_ci	  Note that if you say Y here and choose architecture "586" or
4098c2ecf20Sopenharmony_ci	  "Pentium" under "Processor family", the kernel will not work on 486
4108c2ecf20Sopenharmony_ci	  architectures. Similarly, multiprocessor kernels for the "PPro"
4118c2ecf20Sopenharmony_ci	  architecture may not work on all Pentium based boards.
4128c2ecf20Sopenharmony_ci
4138c2ecf20Sopenharmony_ci	  People using multiprocessor machines who say Y here should also say
4148c2ecf20Sopenharmony_ci	  Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
4158c2ecf20Sopenharmony_ci	  Management" code will be disabled if you say Y here.
4168c2ecf20Sopenharmony_ci
4178c2ecf20Sopenharmony_ci	  See also <file:Documentation/x86/i386/IO-APIC.rst>,
4188c2ecf20Sopenharmony_ci	  <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO available at
4198c2ecf20Sopenharmony_ci	  <http://www.tldp.org/docs.html#howto>.
4208c2ecf20Sopenharmony_ci
4218c2ecf20Sopenharmony_ci	  If you don't know what to do here, say N.
4228c2ecf20Sopenharmony_ci
4238c2ecf20Sopenharmony_ciconfig X86_FEATURE_NAMES
4248c2ecf20Sopenharmony_ci	bool "Processor feature human-readable names" if EMBEDDED
4258c2ecf20Sopenharmony_ci	default y
4268c2ecf20Sopenharmony_ci	help
4278c2ecf20Sopenharmony_ci	  This option compiles in a table of x86 feature bits and corresponding
4288c2ecf20Sopenharmony_ci	  names.  This is required to support /proc/cpuinfo and a few kernel
4298c2ecf20Sopenharmony_ci	  messages.  You can disable this to save space, at the expense of
4308c2ecf20Sopenharmony_ci	  making those few kernel messages show numeric feature bits instead.
4318c2ecf20Sopenharmony_ci
4328c2ecf20Sopenharmony_ci	  If in doubt, say Y.
4338c2ecf20Sopenharmony_ci
4348c2ecf20Sopenharmony_ciconfig X86_X2APIC
4358c2ecf20Sopenharmony_ci	bool "Support x2apic"
4368c2ecf20Sopenharmony_ci	depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
4378c2ecf20Sopenharmony_ci	help
4388c2ecf20Sopenharmony_ci	  This enables x2apic support on CPUs that have this feature.
4398c2ecf20Sopenharmony_ci
4408c2ecf20Sopenharmony_ci	  This allows 32-bit apic IDs (so it can support very large systems),
4418c2ecf20Sopenharmony_ci	  and accesses the local apic via MSRs not via mmio.
4428c2ecf20Sopenharmony_ci
4438c2ecf20Sopenharmony_ci	  If you don't know what to do here, say N.
4448c2ecf20Sopenharmony_ci
4458c2ecf20Sopenharmony_ciconfig X86_MPPARSE
4468c2ecf20Sopenharmony_ci	bool "Enable MPS table" if ACPI || SFI
4478c2ecf20Sopenharmony_ci	default y
4488c2ecf20Sopenharmony_ci	depends on X86_LOCAL_APIC
4498c2ecf20Sopenharmony_ci	help
4508c2ecf20Sopenharmony_ci	  For old smp systems that do not have proper acpi support. Newer systems
4518c2ecf20Sopenharmony_ci	  (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
4528c2ecf20Sopenharmony_ci
4538c2ecf20Sopenharmony_ciconfig GOLDFISH
4548c2ecf20Sopenharmony_ci	def_bool y
4558c2ecf20Sopenharmony_ci	depends on X86_GOLDFISH
4568c2ecf20Sopenharmony_ci
4578c2ecf20Sopenharmony_ciconfig X86_CPU_RESCTRL
4588c2ecf20Sopenharmony_ci	bool "x86 CPU resource control support"
4598c2ecf20Sopenharmony_ci	depends on X86 && (CPU_SUP_INTEL || CPU_SUP_AMD)
4608c2ecf20Sopenharmony_ci	select KERNFS
4618c2ecf20Sopenharmony_ci	select PROC_CPU_RESCTRL		if PROC_FS
4628c2ecf20Sopenharmony_ci	help
4638c2ecf20Sopenharmony_ci	  Enable x86 CPU resource control support.
4648c2ecf20Sopenharmony_ci
4658c2ecf20Sopenharmony_ci	  Provide support for the allocation and monitoring of system resources
4668c2ecf20Sopenharmony_ci	  usage by the CPU.
4678c2ecf20Sopenharmony_ci
4688c2ecf20Sopenharmony_ci	  Intel calls this Intel Resource Director Technology
4698c2ecf20Sopenharmony_ci	  (Intel(R) RDT). More information about RDT can be found in the
4708c2ecf20Sopenharmony_ci	  Intel x86 Architecture Software Developer Manual.
4718c2ecf20Sopenharmony_ci
4728c2ecf20Sopenharmony_ci	  AMD calls this AMD Platform Quality of Service (AMD QoS).
4738c2ecf20Sopenharmony_ci	  More information about AMD QoS can be found in the AMD64 Technology
4748c2ecf20Sopenharmony_ci	  Platform Quality of Service Extensions manual.
4758c2ecf20Sopenharmony_ci
4768c2ecf20Sopenharmony_ci	  Say N if unsure.
4778c2ecf20Sopenharmony_ci
4788c2ecf20Sopenharmony_ciif X86_32
4798c2ecf20Sopenharmony_ciconfig X86_BIGSMP
4808c2ecf20Sopenharmony_ci	bool "Support for big SMP systems with more than 8 CPUs"
4818c2ecf20Sopenharmony_ci	depends on SMP
4828c2ecf20Sopenharmony_ci	help
4838c2ecf20Sopenharmony_ci	  This option is needed for the systems that have more than 8 CPUs.
4848c2ecf20Sopenharmony_ci
4858c2ecf20Sopenharmony_ciconfig X86_EXTENDED_PLATFORM
4868c2ecf20Sopenharmony_ci	bool "Support for extended (non-PC) x86 platforms"
4878c2ecf20Sopenharmony_ci	default y
4888c2ecf20Sopenharmony_ci	help
4898c2ecf20Sopenharmony_ci	  If you disable this option then the kernel will only support
4908c2ecf20Sopenharmony_ci	  standard PC platforms. (which covers the vast majority of
4918c2ecf20Sopenharmony_ci	  systems out there.)
4928c2ecf20Sopenharmony_ci
4938c2ecf20Sopenharmony_ci	  If you enable this option then you'll be able to select support
4948c2ecf20Sopenharmony_ci	  for the following (non-PC) 32 bit x86 platforms:
4958c2ecf20Sopenharmony_ci		Goldfish (Android emulator)
4968c2ecf20Sopenharmony_ci		AMD Elan
4978c2ecf20Sopenharmony_ci		RDC R-321x SoC
4988c2ecf20Sopenharmony_ci		SGI 320/540 (Visual Workstation)
4998c2ecf20Sopenharmony_ci		STA2X11-based (e.g. Northville)
5008c2ecf20Sopenharmony_ci		Moorestown MID devices
5018c2ecf20Sopenharmony_ci
5028c2ecf20Sopenharmony_ci	  If you have one of these systems, or if you want to build a
5038c2ecf20Sopenharmony_ci	  generic distribution kernel, say Y here - otherwise say N.
5048c2ecf20Sopenharmony_ciendif
5058c2ecf20Sopenharmony_ci
5068c2ecf20Sopenharmony_ciif X86_64
5078c2ecf20Sopenharmony_ciconfig X86_EXTENDED_PLATFORM
5088c2ecf20Sopenharmony_ci	bool "Support for extended (non-PC) x86 platforms"
5098c2ecf20Sopenharmony_ci	default y
5108c2ecf20Sopenharmony_ci	help
5118c2ecf20Sopenharmony_ci	  If you disable this option then the kernel will only support
5128c2ecf20Sopenharmony_ci	  standard PC platforms. (which covers the vast majority of
5138c2ecf20Sopenharmony_ci	  systems out there.)
5148c2ecf20Sopenharmony_ci
5158c2ecf20Sopenharmony_ci	  If you enable this option then you'll be able to select support
5168c2ecf20Sopenharmony_ci	  for the following (non-PC) 64 bit x86 platforms:
5178c2ecf20Sopenharmony_ci		Numascale NumaChip
5188c2ecf20Sopenharmony_ci		ScaleMP vSMP
5198c2ecf20Sopenharmony_ci		SGI Ultraviolet
5208c2ecf20Sopenharmony_ci
5218c2ecf20Sopenharmony_ci	  If you have one of these systems, or if you want to build a
5228c2ecf20Sopenharmony_ci	  generic distribution kernel, say Y here - otherwise say N.
5238c2ecf20Sopenharmony_ciendif
5248c2ecf20Sopenharmony_ci# This is an alphabetically sorted list of 64 bit extended platforms
5258c2ecf20Sopenharmony_ci# Please maintain the alphabetic order if and when there are additions
5268c2ecf20Sopenharmony_ciconfig X86_NUMACHIP
5278c2ecf20Sopenharmony_ci	bool "Numascale NumaChip"
5288c2ecf20Sopenharmony_ci	depends on X86_64
5298c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
5308c2ecf20Sopenharmony_ci	depends on NUMA
5318c2ecf20Sopenharmony_ci	depends on SMP
5328c2ecf20Sopenharmony_ci	depends on X86_X2APIC
5338c2ecf20Sopenharmony_ci	depends on PCI_MMCONFIG
5348c2ecf20Sopenharmony_ci	help
5358c2ecf20Sopenharmony_ci	  Adds support for Numascale NumaChip large-SMP systems. Needed to
5368c2ecf20Sopenharmony_ci	  enable more than ~168 cores.
5378c2ecf20Sopenharmony_ci	  If you don't have one of these, you should say N here.
5388c2ecf20Sopenharmony_ci
5398c2ecf20Sopenharmony_ciconfig X86_VSMP
5408c2ecf20Sopenharmony_ci	bool "ScaleMP vSMP"
5418c2ecf20Sopenharmony_ci	select HYPERVISOR_GUEST
5428c2ecf20Sopenharmony_ci	select PARAVIRT
5438c2ecf20Sopenharmony_ci	depends on X86_64 && PCI
5448c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
5458c2ecf20Sopenharmony_ci	depends on SMP
5468c2ecf20Sopenharmony_ci	help
5478c2ecf20Sopenharmony_ci	  Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
5488c2ecf20Sopenharmony_ci	  supposed to run on these EM64T-based machines.  Only choose this option
5498c2ecf20Sopenharmony_ci	  if you have one of these machines.
5508c2ecf20Sopenharmony_ci
5518c2ecf20Sopenharmony_ciconfig X86_UV
5528c2ecf20Sopenharmony_ci	bool "SGI Ultraviolet"
5538c2ecf20Sopenharmony_ci	depends on X86_64
5548c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
5558c2ecf20Sopenharmony_ci	depends on NUMA
5568c2ecf20Sopenharmony_ci	depends on EFI
5578c2ecf20Sopenharmony_ci	depends on KEXEC_CORE
5588c2ecf20Sopenharmony_ci	depends on X86_X2APIC
5598c2ecf20Sopenharmony_ci	depends on PCI
5608c2ecf20Sopenharmony_ci	help
5618c2ecf20Sopenharmony_ci	  This option is needed in order to support SGI Ultraviolet systems.
5628c2ecf20Sopenharmony_ci	  If you don't have one of these, you should say N here.
5638c2ecf20Sopenharmony_ci
5648c2ecf20Sopenharmony_ci# Following is an alphabetically sorted list of 32 bit extended platforms
5658c2ecf20Sopenharmony_ci# Please maintain the alphabetic order if and when there are additions
5668c2ecf20Sopenharmony_ci
5678c2ecf20Sopenharmony_ciconfig X86_GOLDFISH
5688c2ecf20Sopenharmony_ci	bool "Goldfish (Virtual Platform)"
5698c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
5708c2ecf20Sopenharmony_ci	help
5718c2ecf20Sopenharmony_ci	 Enable support for the Goldfish virtual platform used primarily
5728c2ecf20Sopenharmony_ci	 for Android development. Unless you are building for the Android
5738c2ecf20Sopenharmony_ci	 Goldfish emulator say N here.
5748c2ecf20Sopenharmony_ci
5758c2ecf20Sopenharmony_ciconfig X86_INTEL_CE
5768c2ecf20Sopenharmony_ci	bool "CE4100 TV platform"
5778c2ecf20Sopenharmony_ci	depends on PCI
5788c2ecf20Sopenharmony_ci	depends on PCI_GODIRECT
5798c2ecf20Sopenharmony_ci	depends on X86_IO_APIC
5808c2ecf20Sopenharmony_ci	depends on X86_32
5818c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
5828c2ecf20Sopenharmony_ci	select X86_REBOOTFIXUPS
5838c2ecf20Sopenharmony_ci	select OF
5848c2ecf20Sopenharmony_ci	select OF_EARLY_FLATTREE
5858c2ecf20Sopenharmony_ci	help
5868c2ecf20Sopenharmony_ci	  Select for the Intel CE media processor (CE4100) SOC.
5878c2ecf20Sopenharmony_ci	  This option compiles in support for the CE4100 SOC for settop
5888c2ecf20Sopenharmony_ci	  boxes and media devices.
5898c2ecf20Sopenharmony_ci
5908c2ecf20Sopenharmony_ciconfig X86_INTEL_MID
5918c2ecf20Sopenharmony_ci	bool "Intel MID platform support"
5928c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
5938c2ecf20Sopenharmony_ci	depends on X86_PLATFORM_DEVICES
5948c2ecf20Sopenharmony_ci	depends on PCI
5958c2ecf20Sopenharmony_ci	depends on X86_64 || (PCI_GOANY && X86_32)
5968c2ecf20Sopenharmony_ci	depends on X86_IO_APIC
5978c2ecf20Sopenharmony_ci	select SFI
5988c2ecf20Sopenharmony_ci	select I2C
5998c2ecf20Sopenharmony_ci	select DW_APB_TIMER
6008c2ecf20Sopenharmony_ci	select APB_TIMER
6018c2ecf20Sopenharmony_ci	select INTEL_SCU_PCI
6028c2ecf20Sopenharmony_ci	select MFD_INTEL_MSIC
6038c2ecf20Sopenharmony_ci	help
6048c2ecf20Sopenharmony_ci	  Select to build a kernel capable of supporting Intel MID (Mobile
6058c2ecf20Sopenharmony_ci	  Internet Device) platform systems which do not have the PCI legacy
6068c2ecf20Sopenharmony_ci	  interfaces. If you are building for a PC class system say N here.
6078c2ecf20Sopenharmony_ci
6088c2ecf20Sopenharmony_ci	  Intel MID platforms are based on an Intel processor and chipset which
6098c2ecf20Sopenharmony_ci	  consume less power than most of the x86 derivatives.
6108c2ecf20Sopenharmony_ci
6118c2ecf20Sopenharmony_ciconfig X86_INTEL_QUARK
6128c2ecf20Sopenharmony_ci	bool "Intel Quark platform support"
6138c2ecf20Sopenharmony_ci	depends on X86_32
6148c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
6158c2ecf20Sopenharmony_ci	depends on X86_PLATFORM_DEVICES
6168c2ecf20Sopenharmony_ci	depends on X86_TSC
6178c2ecf20Sopenharmony_ci	depends on PCI
6188c2ecf20Sopenharmony_ci	depends on PCI_GOANY
6198c2ecf20Sopenharmony_ci	depends on X86_IO_APIC
6208c2ecf20Sopenharmony_ci	select IOSF_MBI
6218c2ecf20Sopenharmony_ci	select INTEL_IMR
6228c2ecf20Sopenharmony_ci	select COMMON_CLK
6238c2ecf20Sopenharmony_ci	help
6248c2ecf20Sopenharmony_ci	  Select to include support for Quark X1000 SoC.
6258c2ecf20Sopenharmony_ci	  Say Y here if you have a Quark based system such as the Arduino
6268c2ecf20Sopenharmony_ci	  compatible Intel Galileo.
6278c2ecf20Sopenharmony_ci
6288c2ecf20Sopenharmony_ciconfig X86_INTEL_LPSS
6298c2ecf20Sopenharmony_ci	bool "Intel Low Power Subsystem Support"
6308c2ecf20Sopenharmony_ci	depends on X86 && ACPI && PCI
6318c2ecf20Sopenharmony_ci	select COMMON_CLK
6328c2ecf20Sopenharmony_ci	select PINCTRL
6338c2ecf20Sopenharmony_ci	select IOSF_MBI
6348c2ecf20Sopenharmony_ci	help
6358c2ecf20Sopenharmony_ci	  Select to build support for Intel Low Power Subsystem such as
6368c2ecf20Sopenharmony_ci	  found on Intel Lynxpoint PCH. Selecting this option enables
6378c2ecf20Sopenharmony_ci	  things like clock tree (common clock framework) and pincontrol
6388c2ecf20Sopenharmony_ci	  which are needed by the LPSS peripheral drivers.
6398c2ecf20Sopenharmony_ci
6408c2ecf20Sopenharmony_ciconfig X86_AMD_PLATFORM_DEVICE
6418c2ecf20Sopenharmony_ci	bool "AMD ACPI2Platform devices support"
6428c2ecf20Sopenharmony_ci	depends on ACPI
6438c2ecf20Sopenharmony_ci	select COMMON_CLK
6448c2ecf20Sopenharmony_ci	select PINCTRL
6458c2ecf20Sopenharmony_ci	help
6468c2ecf20Sopenharmony_ci	  Select to interpret AMD specific ACPI device to platform device
6478c2ecf20Sopenharmony_ci	  such as I2C, UART, GPIO found on AMD Carrizo and later chipsets.
6488c2ecf20Sopenharmony_ci	  I2C and UART depend on COMMON_CLK to set clock. GPIO driver is
6498c2ecf20Sopenharmony_ci	  implemented under PINCTRL subsystem.
6508c2ecf20Sopenharmony_ci
6518c2ecf20Sopenharmony_ciconfig IOSF_MBI
6528c2ecf20Sopenharmony_ci	tristate "Intel SoC IOSF Sideband support for SoC platforms"
6538c2ecf20Sopenharmony_ci	depends on PCI
6548c2ecf20Sopenharmony_ci	help
6558c2ecf20Sopenharmony_ci	  This option enables sideband register access support for Intel SoC
6568c2ecf20Sopenharmony_ci	  platforms. On these platforms the IOSF sideband is used in lieu of
6578c2ecf20Sopenharmony_ci	  MSR's for some register accesses, mostly but not limited to thermal
6588c2ecf20Sopenharmony_ci	  and power. Drivers may query the availability of this device to
6598c2ecf20Sopenharmony_ci	  determine if they need the sideband in order to work on these
6608c2ecf20Sopenharmony_ci	  platforms. The sideband is available on the following SoC products.
6618c2ecf20Sopenharmony_ci	  This list is not meant to be exclusive.
6628c2ecf20Sopenharmony_ci	   - BayTrail
6638c2ecf20Sopenharmony_ci	   - Braswell
6648c2ecf20Sopenharmony_ci	   - Quark
6658c2ecf20Sopenharmony_ci
6668c2ecf20Sopenharmony_ci	  You should say Y if you are running a kernel on one of these SoC's.
6678c2ecf20Sopenharmony_ci
6688c2ecf20Sopenharmony_ciconfig IOSF_MBI_DEBUG
6698c2ecf20Sopenharmony_ci	bool "Enable IOSF sideband access through debugfs"
6708c2ecf20Sopenharmony_ci	depends on IOSF_MBI && DEBUG_FS
6718c2ecf20Sopenharmony_ci	help
6728c2ecf20Sopenharmony_ci	  Select this option to expose the IOSF sideband access registers (MCR,
6738c2ecf20Sopenharmony_ci	  MDR, MCRX) through debugfs to write and read register information from
6748c2ecf20Sopenharmony_ci	  different units on the SoC. This is most useful for obtaining device
6758c2ecf20Sopenharmony_ci	  state information for debug and analysis. As this is a general access
6768c2ecf20Sopenharmony_ci	  mechanism, users of this option would have specific knowledge of the
6778c2ecf20Sopenharmony_ci	  device they want to access.
6788c2ecf20Sopenharmony_ci
6798c2ecf20Sopenharmony_ci	  If you don't require the option or are in doubt, say N.
6808c2ecf20Sopenharmony_ci
6818c2ecf20Sopenharmony_ciconfig X86_RDC321X
6828c2ecf20Sopenharmony_ci	bool "RDC R-321x SoC"
6838c2ecf20Sopenharmony_ci	depends on X86_32
6848c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
6858c2ecf20Sopenharmony_ci	select M486
6868c2ecf20Sopenharmony_ci	select X86_REBOOTFIXUPS
6878c2ecf20Sopenharmony_ci	help
6888c2ecf20Sopenharmony_ci	  This option is needed for RDC R-321x system-on-chip, also known
6898c2ecf20Sopenharmony_ci	  as R-8610-(G).
6908c2ecf20Sopenharmony_ci	  If you don't have one of these chips, you should say N here.
6918c2ecf20Sopenharmony_ci
6928c2ecf20Sopenharmony_ciconfig X86_32_NON_STANDARD
6938c2ecf20Sopenharmony_ci	bool "Support non-standard 32-bit SMP architectures"
6948c2ecf20Sopenharmony_ci	depends on X86_32 && SMP
6958c2ecf20Sopenharmony_ci	depends on X86_EXTENDED_PLATFORM
6968c2ecf20Sopenharmony_ci	help
6978c2ecf20Sopenharmony_ci	  This option compiles in the bigsmp and STA2X11 default
6988c2ecf20Sopenharmony_ci	  subarchitectures.  It is intended for a generic binary
6998c2ecf20Sopenharmony_ci	  kernel. If you select them all, kernel will probe it one by
7008c2ecf20Sopenharmony_ci	  one and will fallback to default.
7018c2ecf20Sopenharmony_ci
7028c2ecf20Sopenharmony_ci# Alphabetically sorted list of Non standard 32 bit platforms
7038c2ecf20Sopenharmony_ci
7048c2ecf20Sopenharmony_ciconfig X86_SUPPORTS_MEMORY_FAILURE
7058c2ecf20Sopenharmony_ci	def_bool y
7068c2ecf20Sopenharmony_ci	# MCE code calls memory_failure():
7078c2ecf20Sopenharmony_ci	depends on X86_MCE
7088c2ecf20Sopenharmony_ci	# On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
7098c2ecf20Sopenharmony_ci	# On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
7108c2ecf20Sopenharmony_ci	depends on X86_64 || !SPARSEMEM
7118c2ecf20Sopenharmony_ci	select ARCH_SUPPORTS_MEMORY_FAILURE
7128c2ecf20Sopenharmony_ci
7138c2ecf20Sopenharmony_ciconfig STA2X11
7148c2ecf20Sopenharmony_ci	bool "STA2X11 Companion Chip Support"
7158c2ecf20Sopenharmony_ci	depends on X86_32_NON_STANDARD && PCI
7168c2ecf20Sopenharmony_ci	select SWIOTLB
7178c2ecf20Sopenharmony_ci	select MFD_STA2X11
7188c2ecf20Sopenharmony_ci	select GPIOLIB
7198c2ecf20Sopenharmony_ci	help
7208c2ecf20Sopenharmony_ci	  This adds support for boards based on the STA2X11 IO-Hub,
7218c2ecf20Sopenharmony_ci	  a.k.a. "ConneXt". The chip is used in place of the standard
7228c2ecf20Sopenharmony_ci	  PC chipset, so all "standard" peripherals are missing. If this
7238c2ecf20Sopenharmony_ci	  option is selected the kernel will still be able to boot on
7248c2ecf20Sopenharmony_ci	  standard PC machines.
7258c2ecf20Sopenharmony_ci
7268c2ecf20Sopenharmony_ciconfig X86_32_IRIS
7278c2ecf20Sopenharmony_ci	tristate "Eurobraille/Iris poweroff module"
7288c2ecf20Sopenharmony_ci	depends on X86_32
7298c2ecf20Sopenharmony_ci	help
7308c2ecf20Sopenharmony_ci	  The Iris machines from EuroBraille do not have APM or ACPI support
7318c2ecf20Sopenharmony_ci	  to shut themselves down properly.  A special I/O sequence is
7328c2ecf20Sopenharmony_ci	  needed to do so, which is what this module does at
7338c2ecf20Sopenharmony_ci	  kernel shutdown.
7348c2ecf20Sopenharmony_ci
7358c2ecf20Sopenharmony_ci	  This is only for Iris machines from EuroBraille.
7368c2ecf20Sopenharmony_ci
7378c2ecf20Sopenharmony_ci	  If unused, say N.
7388c2ecf20Sopenharmony_ci
7398c2ecf20Sopenharmony_ciconfig SCHED_OMIT_FRAME_POINTER
7408c2ecf20Sopenharmony_ci	def_bool y
7418c2ecf20Sopenharmony_ci	prompt "Single-depth WCHAN output"
7428c2ecf20Sopenharmony_ci	depends on X86
7438c2ecf20Sopenharmony_ci	help
7448c2ecf20Sopenharmony_ci	  Calculate simpler /proc/<PID>/wchan values. If this option
7458c2ecf20Sopenharmony_ci	  is disabled then wchan values will recurse back to the
7468c2ecf20Sopenharmony_ci	  caller function. This provides more accurate wchan values,
7478c2ecf20Sopenharmony_ci	  at the expense of slightly more scheduling overhead.
7488c2ecf20Sopenharmony_ci
7498c2ecf20Sopenharmony_ci	  If in doubt, say "Y".
7508c2ecf20Sopenharmony_ci
7518c2ecf20Sopenharmony_cimenuconfig HYPERVISOR_GUEST
7528c2ecf20Sopenharmony_ci	bool "Linux guest support"
7538c2ecf20Sopenharmony_ci	help
7548c2ecf20Sopenharmony_ci	  Say Y here to enable options for running Linux under various hyper-
7558c2ecf20Sopenharmony_ci	  visors. This option enables basic hypervisor detection and platform
7568c2ecf20Sopenharmony_ci	  setup.
7578c2ecf20Sopenharmony_ci
7588c2ecf20Sopenharmony_ci	  If you say N, all options in this submenu will be skipped and
7598c2ecf20Sopenharmony_ci	  disabled, and Linux guest support won't be built in.
7608c2ecf20Sopenharmony_ci
7618c2ecf20Sopenharmony_ciif HYPERVISOR_GUEST
7628c2ecf20Sopenharmony_ci
7638c2ecf20Sopenharmony_ciconfig PARAVIRT
7648c2ecf20Sopenharmony_ci	bool "Enable paravirtualization code"
7658c2ecf20Sopenharmony_ci	help
7668c2ecf20Sopenharmony_ci	  This changes the kernel so it can modify itself when it is run
7678c2ecf20Sopenharmony_ci	  under a hypervisor, potentially improving performance significantly
7688c2ecf20Sopenharmony_ci	  over full virtualization.  However, when run without a hypervisor
7698c2ecf20Sopenharmony_ci	  the kernel is theoretically slower and slightly larger.
7708c2ecf20Sopenharmony_ci
7718c2ecf20Sopenharmony_ciconfig PARAVIRT_XXL
7728c2ecf20Sopenharmony_ci	bool
7738c2ecf20Sopenharmony_ci
7748c2ecf20Sopenharmony_ciconfig PARAVIRT_DEBUG
7758c2ecf20Sopenharmony_ci	bool "paravirt-ops debugging"
7768c2ecf20Sopenharmony_ci	depends on PARAVIRT && DEBUG_KERNEL
7778c2ecf20Sopenharmony_ci	help
7788c2ecf20Sopenharmony_ci	  Enable to debug paravirt_ops internals.  Specifically, BUG if
7798c2ecf20Sopenharmony_ci	  a paravirt_op is missing when it is called.
7808c2ecf20Sopenharmony_ci
7818c2ecf20Sopenharmony_ciconfig PARAVIRT_SPINLOCKS
7828c2ecf20Sopenharmony_ci	bool "Paravirtualization layer for spinlocks"
7838c2ecf20Sopenharmony_ci	depends on PARAVIRT && SMP
7848c2ecf20Sopenharmony_ci	help
7858c2ecf20Sopenharmony_ci	  Paravirtualized spinlocks allow a pvops backend to replace the
7868c2ecf20Sopenharmony_ci	  spinlock implementation with something virtualization-friendly
7878c2ecf20Sopenharmony_ci	  (for example, block the virtual CPU rather than spinning).
7888c2ecf20Sopenharmony_ci
7898c2ecf20Sopenharmony_ci	  It has a minimal impact on native kernels and gives a nice performance
7908c2ecf20Sopenharmony_ci	  benefit on paravirtualized KVM / Xen kernels.
7918c2ecf20Sopenharmony_ci
7928c2ecf20Sopenharmony_ci	  If you are unsure how to answer this question, answer Y.
7938c2ecf20Sopenharmony_ci
7948c2ecf20Sopenharmony_ciconfig X86_HV_CALLBACK_VECTOR
7958c2ecf20Sopenharmony_ci	def_bool n
7968c2ecf20Sopenharmony_ci
7978c2ecf20Sopenharmony_cisource "arch/x86/xen/Kconfig"
7988c2ecf20Sopenharmony_ci
7998c2ecf20Sopenharmony_ciconfig KVM_GUEST
8008c2ecf20Sopenharmony_ci	bool "KVM Guest support (including kvmclock)"
8018c2ecf20Sopenharmony_ci	depends on PARAVIRT
8028c2ecf20Sopenharmony_ci	select PARAVIRT_CLOCK
8038c2ecf20Sopenharmony_ci	select ARCH_CPUIDLE_HALTPOLL
8048c2ecf20Sopenharmony_ci	select X86_HV_CALLBACK_VECTOR
8058c2ecf20Sopenharmony_ci	default y
8068c2ecf20Sopenharmony_ci	help
8078c2ecf20Sopenharmony_ci	  This option enables various optimizations for running under the KVM
8088c2ecf20Sopenharmony_ci	  hypervisor. It includes a paravirtualized clock, so that instead
8098c2ecf20Sopenharmony_ci	  of relying on a PIT (or probably other) emulation by the
8108c2ecf20Sopenharmony_ci	  underlying device model, the host provides the guest with
8118c2ecf20Sopenharmony_ci	  timing infrastructure such as time of day, and system time
8128c2ecf20Sopenharmony_ci
8138c2ecf20Sopenharmony_ciconfig ARCH_CPUIDLE_HALTPOLL
8148c2ecf20Sopenharmony_ci	def_bool n
8158c2ecf20Sopenharmony_ci	prompt "Disable host haltpoll when loading haltpoll driver"
8168c2ecf20Sopenharmony_ci	help
8178c2ecf20Sopenharmony_ci	  If virtualized under KVM, disable host haltpoll.
8188c2ecf20Sopenharmony_ci
8198c2ecf20Sopenharmony_ciconfig PVH
8208c2ecf20Sopenharmony_ci	bool "Support for running PVH guests"
8218c2ecf20Sopenharmony_ci	help
8228c2ecf20Sopenharmony_ci	  This option enables the PVH entry point for guest virtual machines
8238c2ecf20Sopenharmony_ci	  as specified in the x86/HVM direct boot ABI.
8248c2ecf20Sopenharmony_ci
8258c2ecf20Sopenharmony_ciconfig PARAVIRT_TIME_ACCOUNTING
8268c2ecf20Sopenharmony_ci	bool "Paravirtual steal time accounting"
8278c2ecf20Sopenharmony_ci	depends on PARAVIRT
8288c2ecf20Sopenharmony_ci	help
8298c2ecf20Sopenharmony_ci	  Select this option to enable fine granularity task steal time
8308c2ecf20Sopenharmony_ci	  accounting. Time spent executing other tasks in parallel with
8318c2ecf20Sopenharmony_ci	  the current vCPU is discounted from the vCPU power. To account for
8328c2ecf20Sopenharmony_ci	  that, there can be a small performance impact.
8338c2ecf20Sopenharmony_ci
8348c2ecf20Sopenharmony_ci	  If in doubt, say N here.
8358c2ecf20Sopenharmony_ci
8368c2ecf20Sopenharmony_ciconfig PARAVIRT_CLOCK
8378c2ecf20Sopenharmony_ci	bool
8388c2ecf20Sopenharmony_ci
8398c2ecf20Sopenharmony_ciconfig JAILHOUSE_GUEST
8408c2ecf20Sopenharmony_ci	bool "Jailhouse non-root cell support"
8418c2ecf20Sopenharmony_ci	depends on X86_64 && PCI
8428c2ecf20Sopenharmony_ci	select X86_PM_TIMER
8438c2ecf20Sopenharmony_ci	help
8448c2ecf20Sopenharmony_ci	  This option allows to run Linux as guest in a Jailhouse non-root
8458c2ecf20Sopenharmony_ci	  cell. You can leave this option disabled if you only want to start
8468c2ecf20Sopenharmony_ci	  Jailhouse and run Linux afterwards in the root cell.
8478c2ecf20Sopenharmony_ci
8488c2ecf20Sopenharmony_ciconfig ACRN_GUEST
8498c2ecf20Sopenharmony_ci	bool "ACRN Guest support"
8508c2ecf20Sopenharmony_ci	depends on X86_64
8518c2ecf20Sopenharmony_ci	select X86_HV_CALLBACK_VECTOR
8528c2ecf20Sopenharmony_ci	help
8538c2ecf20Sopenharmony_ci	  This option allows to run Linux as guest in the ACRN hypervisor. ACRN is
8548c2ecf20Sopenharmony_ci	  a flexible, lightweight reference open-source hypervisor, built with
8558c2ecf20Sopenharmony_ci	  real-time and safety-criticality in mind. It is built for embedded
8568c2ecf20Sopenharmony_ci	  IOT with small footprint and real-time features. More details can be
8578c2ecf20Sopenharmony_ci	  found in https://projectacrn.org/.
8588c2ecf20Sopenharmony_ci
8598c2ecf20Sopenharmony_ciendif #HYPERVISOR_GUEST
8608c2ecf20Sopenharmony_ci
8618c2ecf20Sopenharmony_cisource "arch/x86/Kconfig.cpu"
8628c2ecf20Sopenharmony_ci
8638c2ecf20Sopenharmony_ciconfig HPET_TIMER
8648c2ecf20Sopenharmony_ci	def_bool X86_64
8658c2ecf20Sopenharmony_ci	prompt "HPET Timer Support" if X86_32
8668c2ecf20Sopenharmony_ci	help
8678c2ecf20Sopenharmony_ci	  Use the IA-PC HPET (High Precision Event Timer) to manage
8688c2ecf20Sopenharmony_ci	  time in preference to the PIT and RTC, if a HPET is
8698c2ecf20Sopenharmony_ci	  present.
8708c2ecf20Sopenharmony_ci	  HPET is the next generation timer replacing legacy 8254s.
8718c2ecf20Sopenharmony_ci	  The HPET provides a stable time base on SMP
8728c2ecf20Sopenharmony_ci	  systems, unlike the TSC, but it is more expensive to access,
8738c2ecf20Sopenharmony_ci	  as it is off-chip.  The interface used is documented
8748c2ecf20Sopenharmony_ci	  in the HPET spec, revision 1.
8758c2ecf20Sopenharmony_ci
8768c2ecf20Sopenharmony_ci	  You can safely choose Y here.  However, HPET will only be
8778c2ecf20Sopenharmony_ci	  activated if the platform and the BIOS support this feature.
8788c2ecf20Sopenharmony_ci	  Otherwise the 8254 will be used for timing services.
8798c2ecf20Sopenharmony_ci
8808c2ecf20Sopenharmony_ci	  Choose N to continue using the legacy 8254 timer.
8818c2ecf20Sopenharmony_ci
8828c2ecf20Sopenharmony_ciconfig HPET_EMULATE_RTC
8838c2ecf20Sopenharmony_ci	def_bool y
8848c2ecf20Sopenharmony_ci	depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
8858c2ecf20Sopenharmony_ci
8868c2ecf20Sopenharmony_ciconfig APB_TIMER
8878c2ecf20Sopenharmony_ci	def_bool y if X86_INTEL_MID
8888c2ecf20Sopenharmony_ci	prompt "Intel MID APB Timer Support" if X86_INTEL_MID
8898c2ecf20Sopenharmony_ci	select DW_APB_TIMER
8908c2ecf20Sopenharmony_ci	depends on X86_INTEL_MID && SFI
8918c2ecf20Sopenharmony_ci	help
8928c2ecf20Sopenharmony_ci	 APB timer is the replacement for 8254, HPET on X86 MID platforms.
8938c2ecf20Sopenharmony_ci	 The APBT provides a stable time base on SMP
8948c2ecf20Sopenharmony_ci	 systems, unlike the TSC, but it is more expensive to access,
8958c2ecf20Sopenharmony_ci	 as it is off-chip. APB timers are always running regardless of CPU
8968c2ecf20Sopenharmony_ci	 C states, they are used as per CPU clockevent device when possible.
8978c2ecf20Sopenharmony_ci
8988c2ecf20Sopenharmony_ci# Mark as expert because too many people got it wrong.
8998c2ecf20Sopenharmony_ci# The code disables itself when not needed.
9008c2ecf20Sopenharmony_ciconfig DMI
9018c2ecf20Sopenharmony_ci	default y
9028c2ecf20Sopenharmony_ci	select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
9038c2ecf20Sopenharmony_ci	bool "Enable DMI scanning" if EXPERT
9048c2ecf20Sopenharmony_ci	help
9058c2ecf20Sopenharmony_ci	  Enabled scanning of DMI to identify machine quirks. Say Y
9068c2ecf20Sopenharmony_ci	  here unless you have verified that your setup is not
9078c2ecf20Sopenharmony_ci	  affected by entries in the DMI blacklist. Required by PNP
9088c2ecf20Sopenharmony_ci	  BIOS code.
9098c2ecf20Sopenharmony_ci
9108c2ecf20Sopenharmony_ciconfig GART_IOMMU
9118c2ecf20Sopenharmony_ci	bool "Old AMD GART IOMMU support"
9128c2ecf20Sopenharmony_ci	select DMA_OPS
9138c2ecf20Sopenharmony_ci	select IOMMU_HELPER
9148c2ecf20Sopenharmony_ci	select SWIOTLB
9158c2ecf20Sopenharmony_ci	depends on X86_64 && PCI && AMD_NB
9168c2ecf20Sopenharmony_ci	help
9178c2ecf20Sopenharmony_ci	  Provides a driver for older AMD Athlon64/Opteron/Turion/Sempron
9188c2ecf20Sopenharmony_ci	  GART based hardware IOMMUs.
9198c2ecf20Sopenharmony_ci
9208c2ecf20Sopenharmony_ci	  The GART supports full DMA access for devices with 32-bit access
9218c2ecf20Sopenharmony_ci	  limitations, on systems with more than 3 GB. This is usually needed
9228c2ecf20Sopenharmony_ci	  for USB, sound, many IDE/SATA chipsets and some other devices.
9238c2ecf20Sopenharmony_ci
9248c2ecf20Sopenharmony_ci	  Newer systems typically have a modern AMD IOMMU, supported via
9258c2ecf20Sopenharmony_ci	  the CONFIG_AMD_IOMMU=y config option.
9268c2ecf20Sopenharmony_ci
9278c2ecf20Sopenharmony_ci	  In normal configurations this driver is only active when needed:
9288c2ecf20Sopenharmony_ci	  there's more than 3 GB of memory and the system contains a
9298c2ecf20Sopenharmony_ci	  32-bit limited device.
9308c2ecf20Sopenharmony_ci
9318c2ecf20Sopenharmony_ci	  If unsure, say Y.
9328c2ecf20Sopenharmony_ci
9338c2ecf20Sopenharmony_ciconfig MAXSMP
9348c2ecf20Sopenharmony_ci	bool "Enable Maximum number of SMP Processors and NUMA Nodes"
9358c2ecf20Sopenharmony_ci	depends on X86_64 && SMP && DEBUG_KERNEL
9368c2ecf20Sopenharmony_ci	select CPUMASK_OFFSTACK
9378c2ecf20Sopenharmony_ci	help
9388c2ecf20Sopenharmony_ci	  Enable maximum number of CPUS and NUMA Nodes for this architecture.
9398c2ecf20Sopenharmony_ci	  If unsure, say N.
9408c2ecf20Sopenharmony_ci
9418c2ecf20Sopenharmony_ci#
9428c2ecf20Sopenharmony_ci# The maximum number of CPUs supported:
9438c2ecf20Sopenharmony_ci#
9448c2ecf20Sopenharmony_ci# The main config value is NR_CPUS, which defaults to NR_CPUS_DEFAULT,
9458c2ecf20Sopenharmony_ci# and which can be configured interactively in the
9468c2ecf20Sopenharmony_ci# [NR_CPUS_RANGE_BEGIN ... NR_CPUS_RANGE_END] range.
9478c2ecf20Sopenharmony_ci#
9488c2ecf20Sopenharmony_ci# The ranges are different on 32-bit and 64-bit kernels, depending on
9498c2ecf20Sopenharmony_ci# hardware capabilities and scalability features of the kernel.
9508c2ecf20Sopenharmony_ci#
9518c2ecf20Sopenharmony_ci# ( If MAXSMP is enabled we just use the highest possible value and disable
9528c2ecf20Sopenharmony_ci#   interactive configuration. )
9538c2ecf20Sopenharmony_ci#
9548c2ecf20Sopenharmony_ci
9558c2ecf20Sopenharmony_ciconfig NR_CPUS_RANGE_BEGIN
9568c2ecf20Sopenharmony_ci	int
9578c2ecf20Sopenharmony_ci	default NR_CPUS_RANGE_END if MAXSMP
9588c2ecf20Sopenharmony_ci	default    1 if !SMP
9598c2ecf20Sopenharmony_ci	default    2
9608c2ecf20Sopenharmony_ci
9618c2ecf20Sopenharmony_ciconfig NR_CPUS_RANGE_END
9628c2ecf20Sopenharmony_ci	int
9638c2ecf20Sopenharmony_ci	depends on X86_32
9648c2ecf20Sopenharmony_ci	default   64 if  SMP &&  X86_BIGSMP
9658c2ecf20Sopenharmony_ci	default    8 if  SMP && !X86_BIGSMP
9668c2ecf20Sopenharmony_ci	default    1 if !SMP
9678c2ecf20Sopenharmony_ci
9688c2ecf20Sopenharmony_ciconfig NR_CPUS_RANGE_END
9698c2ecf20Sopenharmony_ci	int
9708c2ecf20Sopenharmony_ci	depends on X86_64
9718c2ecf20Sopenharmony_ci	default 8192 if  SMP && CPUMASK_OFFSTACK
9728c2ecf20Sopenharmony_ci	default  512 if  SMP && !CPUMASK_OFFSTACK
9738c2ecf20Sopenharmony_ci	default    1 if !SMP
9748c2ecf20Sopenharmony_ci
9758c2ecf20Sopenharmony_ciconfig NR_CPUS_DEFAULT
9768c2ecf20Sopenharmony_ci	int
9778c2ecf20Sopenharmony_ci	depends on X86_32
9788c2ecf20Sopenharmony_ci	default   32 if  X86_BIGSMP
9798c2ecf20Sopenharmony_ci	default    8 if  SMP
9808c2ecf20Sopenharmony_ci	default    1 if !SMP
9818c2ecf20Sopenharmony_ci
9828c2ecf20Sopenharmony_ciconfig NR_CPUS_DEFAULT
9838c2ecf20Sopenharmony_ci	int
9848c2ecf20Sopenharmony_ci	depends on X86_64
9858c2ecf20Sopenharmony_ci	default 8192 if  MAXSMP
9868c2ecf20Sopenharmony_ci	default   64 if  SMP
9878c2ecf20Sopenharmony_ci	default    1 if !SMP
9888c2ecf20Sopenharmony_ci
9898c2ecf20Sopenharmony_ciconfig NR_CPUS
9908c2ecf20Sopenharmony_ci	int "Maximum number of CPUs" if SMP && !MAXSMP
9918c2ecf20Sopenharmony_ci	range NR_CPUS_RANGE_BEGIN NR_CPUS_RANGE_END
9928c2ecf20Sopenharmony_ci	default NR_CPUS_DEFAULT
9938c2ecf20Sopenharmony_ci	help
9948c2ecf20Sopenharmony_ci	  This allows you to specify the maximum number of CPUs which this
9958c2ecf20Sopenharmony_ci	  kernel will support.  If CPUMASK_OFFSTACK is enabled, the maximum
9968c2ecf20Sopenharmony_ci	  supported value is 8192, otherwise the maximum value is 512.  The
9978c2ecf20Sopenharmony_ci	  minimum value which makes sense is 2.
9988c2ecf20Sopenharmony_ci
9998c2ecf20Sopenharmony_ci	  This is purely to save memory: each supported CPU adds about 8KB
10008c2ecf20Sopenharmony_ci	  to the kernel image.
10018c2ecf20Sopenharmony_ci
10028c2ecf20Sopenharmony_ciconfig SCHED_SMT
10038c2ecf20Sopenharmony_ci	def_bool y if SMP
10048c2ecf20Sopenharmony_ci
10058c2ecf20Sopenharmony_ciconfig SCHED_MC
10068c2ecf20Sopenharmony_ci	def_bool y
10078c2ecf20Sopenharmony_ci	prompt "Multi-core scheduler support"
10088c2ecf20Sopenharmony_ci	depends on SMP
10098c2ecf20Sopenharmony_ci	help
10108c2ecf20Sopenharmony_ci	  Multi-core scheduler support improves the CPU scheduler's decision
10118c2ecf20Sopenharmony_ci	  making when dealing with multi-core CPU chips at a cost of slightly
10128c2ecf20Sopenharmony_ci	  increased overhead in some places. If unsure say N here.
10138c2ecf20Sopenharmony_ci
10148c2ecf20Sopenharmony_ciconfig SCHED_MC_PRIO
10158c2ecf20Sopenharmony_ci	bool "CPU core priorities scheduler support"
10168c2ecf20Sopenharmony_ci	depends on SCHED_MC && CPU_SUP_INTEL
10178c2ecf20Sopenharmony_ci	select X86_INTEL_PSTATE
10188c2ecf20Sopenharmony_ci	select CPU_FREQ
10198c2ecf20Sopenharmony_ci	default y
10208c2ecf20Sopenharmony_ci	help
10218c2ecf20Sopenharmony_ci	  Intel Turbo Boost Max Technology 3.0 enabled CPUs have a
10228c2ecf20Sopenharmony_ci	  core ordering determined at manufacturing time, which allows
10238c2ecf20Sopenharmony_ci	  certain cores to reach higher turbo frequencies (when running
10248c2ecf20Sopenharmony_ci	  single threaded workloads) than others.
10258c2ecf20Sopenharmony_ci
10268c2ecf20Sopenharmony_ci	  Enabling this kernel feature teaches the scheduler about
10278c2ecf20Sopenharmony_ci	  the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the
10288c2ecf20Sopenharmony_ci	  scheduler's CPU selection logic accordingly, so that higher
10298c2ecf20Sopenharmony_ci	  overall system performance can be achieved.
10308c2ecf20Sopenharmony_ci
10318c2ecf20Sopenharmony_ci	  This feature will have no effect on CPUs without this feature.
10328c2ecf20Sopenharmony_ci
10338c2ecf20Sopenharmony_ci	  If unsure say Y here.
10348c2ecf20Sopenharmony_ci
10358c2ecf20Sopenharmony_ciconfig UP_LATE_INIT
10368c2ecf20Sopenharmony_ci	def_bool y
10378c2ecf20Sopenharmony_ci	depends on !SMP && X86_LOCAL_APIC
10388c2ecf20Sopenharmony_ci
10398c2ecf20Sopenharmony_ciconfig X86_UP_APIC
10408c2ecf20Sopenharmony_ci	bool "Local APIC support on uniprocessors" if !PCI_MSI
10418c2ecf20Sopenharmony_ci	default PCI_MSI
10428c2ecf20Sopenharmony_ci	depends on X86_32 && !SMP && !X86_32_NON_STANDARD
10438c2ecf20Sopenharmony_ci	help
10448c2ecf20Sopenharmony_ci	  A local APIC (Advanced Programmable Interrupt Controller) is an
10458c2ecf20Sopenharmony_ci	  integrated interrupt controller in the CPU. If you have a single-CPU
10468c2ecf20Sopenharmony_ci	  system which has a processor with a local APIC, you can say Y here to
10478c2ecf20Sopenharmony_ci	  enable and use it. If you say Y here even though your machine doesn't
10488c2ecf20Sopenharmony_ci	  have a local APIC, then the kernel will still run with no slowdown at
10498c2ecf20Sopenharmony_ci	  all. The local APIC supports CPU-generated self-interrupts (timer,
10508c2ecf20Sopenharmony_ci	  performance counters), and the NMI watchdog which detects hard
10518c2ecf20Sopenharmony_ci	  lockups.
10528c2ecf20Sopenharmony_ci
10538c2ecf20Sopenharmony_ciconfig X86_UP_IOAPIC
10548c2ecf20Sopenharmony_ci	bool "IO-APIC support on uniprocessors"
10558c2ecf20Sopenharmony_ci	depends on X86_UP_APIC
10568c2ecf20Sopenharmony_ci	help
10578c2ecf20Sopenharmony_ci	  An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
10588c2ecf20Sopenharmony_ci	  SMP-capable replacement for PC-style interrupt controllers. Most
10598c2ecf20Sopenharmony_ci	  SMP systems and many recent uniprocessor systems have one.
10608c2ecf20Sopenharmony_ci
10618c2ecf20Sopenharmony_ci	  If you have a single-CPU system with an IO-APIC, you can say Y here
10628c2ecf20Sopenharmony_ci	  to use it. If you say Y here even though your machine doesn't have
10638c2ecf20Sopenharmony_ci	  an IO-APIC, then the kernel will still run with no slowdown at all.
10648c2ecf20Sopenharmony_ci
10658c2ecf20Sopenharmony_ciconfig X86_LOCAL_APIC
10668c2ecf20Sopenharmony_ci	def_bool y
10678c2ecf20Sopenharmony_ci	depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
10688c2ecf20Sopenharmony_ci	select IRQ_DOMAIN_HIERARCHY
10698c2ecf20Sopenharmony_ci	select PCI_MSI_IRQ_DOMAIN if PCI_MSI
10708c2ecf20Sopenharmony_ci
10718c2ecf20Sopenharmony_ciconfig X86_IO_APIC
10728c2ecf20Sopenharmony_ci	def_bool y
10738c2ecf20Sopenharmony_ci	depends on X86_LOCAL_APIC || X86_UP_IOAPIC
10748c2ecf20Sopenharmony_ci
10758c2ecf20Sopenharmony_ciconfig X86_REROUTE_FOR_BROKEN_BOOT_IRQS
10768c2ecf20Sopenharmony_ci	bool "Reroute for broken boot IRQs"
10778c2ecf20Sopenharmony_ci	depends on X86_IO_APIC
10788c2ecf20Sopenharmony_ci	help
10798c2ecf20Sopenharmony_ci	  This option enables a workaround that fixes a source of
10808c2ecf20Sopenharmony_ci	  spurious interrupts. This is recommended when threaded
10818c2ecf20Sopenharmony_ci	  interrupt handling is used on systems where the generation of
10828c2ecf20Sopenharmony_ci	  superfluous "boot interrupts" cannot be disabled.
10838c2ecf20Sopenharmony_ci
10848c2ecf20Sopenharmony_ci	  Some chipsets generate a legacy INTx "boot IRQ" when the IRQ
10858c2ecf20Sopenharmony_ci	  entry in the chipset's IO-APIC is masked (as, e.g. the RT
10868c2ecf20Sopenharmony_ci	  kernel does during interrupt handling). On chipsets where this
10878c2ecf20Sopenharmony_ci	  boot IRQ generation cannot be disabled, this workaround keeps
10888c2ecf20Sopenharmony_ci	  the original IRQ line masked so that only the equivalent "boot
10898c2ecf20Sopenharmony_ci	  IRQ" is delivered to the CPUs. The workaround also tells the
10908c2ecf20Sopenharmony_ci	  kernel to set up the IRQ handler on the boot IRQ line. In this
10918c2ecf20Sopenharmony_ci	  way only one interrupt is delivered to the kernel. Otherwise
10928c2ecf20Sopenharmony_ci	  the spurious second interrupt may cause the kernel to bring
10938c2ecf20Sopenharmony_ci	  down (vital) interrupt lines.
10948c2ecf20Sopenharmony_ci
10958c2ecf20Sopenharmony_ci	  Only affects "broken" chipsets. Interrupt sharing may be
10968c2ecf20Sopenharmony_ci	  increased on these systems.
10978c2ecf20Sopenharmony_ci
10988c2ecf20Sopenharmony_ciconfig X86_MCE
10998c2ecf20Sopenharmony_ci	bool "Machine Check / overheating reporting"
11008c2ecf20Sopenharmony_ci	select GENERIC_ALLOCATOR
11018c2ecf20Sopenharmony_ci	default y
11028c2ecf20Sopenharmony_ci	help
11038c2ecf20Sopenharmony_ci	  Machine Check support allows the processor to notify the
11048c2ecf20Sopenharmony_ci	  kernel if it detects a problem (e.g. overheating, data corruption).
11058c2ecf20Sopenharmony_ci	  The action the kernel takes depends on the severity of the problem,
11068c2ecf20Sopenharmony_ci	  ranging from warning messages to halting the machine.
11078c2ecf20Sopenharmony_ci
11088c2ecf20Sopenharmony_ciconfig X86_MCELOG_LEGACY
11098c2ecf20Sopenharmony_ci	bool "Support for deprecated /dev/mcelog character device"
11108c2ecf20Sopenharmony_ci	depends on X86_MCE
11118c2ecf20Sopenharmony_ci	help
11128c2ecf20Sopenharmony_ci	  Enable support for /dev/mcelog which is needed by the old mcelog
11138c2ecf20Sopenharmony_ci	  userspace logging daemon. Consider switching to the new generation
11148c2ecf20Sopenharmony_ci	  rasdaemon solution.
11158c2ecf20Sopenharmony_ci
11168c2ecf20Sopenharmony_ciconfig X86_MCE_INTEL
11178c2ecf20Sopenharmony_ci	def_bool y
11188c2ecf20Sopenharmony_ci	prompt "Intel MCE features"
11198c2ecf20Sopenharmony_ci	depends on X86_MCE && X86_LOCAL_APIC
11208c2ecf20Sopenharmony_ci	help
11218c2ecf20Sopenharmony_ci	   Additional support for intel specific MCE features such as
11228c2ecf20Sopenharmony_ci	   the thermal monitor.
11238c2ecf20Sopenharmony_ci
11248c2ecf20Sopenharmony_ciconfig X86_MCE_AMD
11258c2ecf20Sopenharmony_ci	def_bool y
11268c2ecf20Sopenharmony_ci	prompt "AMD MCE features"
11278c2ecf20Sopenharmony_ci	depends on X86_MCE && X86_LOCAL_APIC && AMD_NB
11288c2ecf20Sopenharmony_ci	help
11298c2ecf20Sopenharmony_ci	   Additional support for AMD specific MCE features such as
11308c2ecf20Sopenharmony_ci	   the DRAM Error Threshold.
11318c2ecf20Sopenharmony_ci
11328c2ecf20Sopenharmony_ciconfig X86_ANCIENT_MCE
11338c2ecf20Sopenharmony_ci	bool "Support for old Pentium 5 / WinChip machine checks"
11348c2ecf20Sopenharmony_ci	depends on X86_32 && X86_MCE
11358c2ecf20Sopenharmony_ci	help
11368c2ecf20Sopenharmony_ci	  Include support for machine check handling on old Pentium 5 or WinChip
11378c2ecf20Sopenharmony_ci	  systems. These typically need to be enabled explicitly on the command
11388c2ecf20Sopenharmony_ci	  line.
11398c2ecf20Sopenharmony_ci
11408c2ecf20Sopenharmony_ciconfig X86_MCE_THRESHOLD
11418c2ecf20Sopenharmony_ci	depends on X86_MCE_AMD || X86_MCE_INTEL
11428c2ecf20Sopenharmony_ci	def_bool y
11438c2ecf20Sopenharmony_ci
11448c2ecf20Sopenharmony_ciconfig X86_MCE_INJECT
11458c2ecf20Sopenharmony_ci	depends on X86_MCE && X86_LOCAL_APIC && DEBUG_FS
11468c2ecf20Sopenharmony_ci	tristate "Machine check injector support"
11478c2ecf20Sopenharmony_ci	help
11488c2ecf20Sopenharmony_ci	  Provide support for injecting machine checks for testing purposes.
11498c2ecf20Sopenharmony_ci	  If you don't know what a machine check is and you don't do kernel
11508c2ecf20Sopenharmony_ci	  QA it is safe to say n.
11518c2ecf20Sopenharmony_ci
11528c2ecf20Sopenharmony_ciconfig X86_THERMAL_VECTOR
11538c2ecf20Sopenharmony_ci	def_bool y
11548c2ecf20Sopenharmony_ci	depends on X86_MCE_INTEL
11558c2ecf20Sopenharmony_ci
11568c2ecf20Sopenharmony_cisource "arch/x86/events/Kconfig"
11578c2ecf20Sopenharmony_ci
11588c2ecf20Sopenharmony_ciconfig X86_LEGACY_VM86
11598c2ecf20Sopenharmony_ci	bool "Legacy VM86 support"
11608c2ecf20Sopenharmony_ci	depends on X86_32
11618c2ecf20Sopenharmony_ci	help
11628c2ecf20Sopenharmony_ci	  This option allows user programs to put the CPU into V8086
11638c2ecf20Sopenharmony_ci	  mode, which is an 80286-era approximation of 16-bit real mode.
11648c2ecf20Sopenharmony_ci
11658c2ecf20Sopenharmony_ci	  Some very old versions of X and/or vbetool require this option
11668c2ecf20Sopenharmony_ci	  for user mode setting.  Similarly, DOSEMU will use it if
11678c2ecf20Sopenharmony_ci	  available to accelerate real mode DOS programs.  However, any
11688c2ecf20Sopenharmony_ci	  recent version of DOSEMU, X, or vbetool should be fully
11698c2ecf20Sopenharmony_ci	  functional even without kernel VM86 support, as they will all
11708c2ecf20Sopenharmony_ci	  fall back to software emulation. Nevertheless, if you are using
11718c2ecf20Sopenharmony_ci	  a 16-bit DOS program where 16-bit performance matters, vm86
11728c2ecf20Sopenharmony_ci	  mode might be faster than emulation and you might want to
11738c2ecf20Sopenharmony_ci	  enable this option.
11748c2ecf20Sopenharmony_ci
11758c2ecf20Sopenharmony_ci	  Note that any app that works on a 64-bit kernel is unlikely to
11768c2ecf20Sopenharmony_ci	  need this option, as 64-bit kernels don't, and can't, support
11778c2ecf20Sopenharmony_ci	  V8086 mode. This option is also unrelated to 16-bit protected
11788c2ecf20Sopenharmony_ci	  mode and is not needed to run most 16-bit programs under Wine.
11798c2ecf20Sopenharmony_ci
11808c2ecf20Sopenharmony_ci	  Enabling this option increases the complexity of the kernel
11818c2ecf20Sopenharmony_ci	  and slows down exception handling a tiny bit.
11828c2ecf20Sopenharmony_ci
11838c2ecf20Sopenharmony_ci	  If unsure, say N here.
11848c2ecf20Sopenharmony_ci
11858c2ecf20Sopenharmony_ciconfig VM86
11868c2ecf20Sopenharmony_ci	bool
11878c2ecf20Sopenharmony_ci	default X86_LEGACY_VM86
11888c2ecf20Sopenharmony_ci
11898c2ecf20Sopenharmony_ciconfig X86_16BIT
11908c2ecf20Sopenharmony_ci	bool "Enable support for 16-bit segments" if EXPERT
11918c2ecf20Sopenharmony_ci	default y
11928c2ecf20Sopenharmony_ci	depends on MODIFY_LDT_SYSCALL
11938c2ecf20Sopenharmony_ci	help
11948c2ecf20Sopenharmony_ci	  This option is required by programs like Wine to run 16-bit
11958c2ecf20Sopenharmony_ci	  protected mode legacy code on x86 processors.  Disabling
11968c2ecf20Sopenharmony_ci	  this option saves about 300 bytes on i386, or around 6K text
11978c2ecf20Sopenharmony_ci	  plus 16K runtime memory on x86-64,
11988c2ecf20Sopenharmony_ci
11998c2ecf20Sopenharmony_ciconfig X86_ESPFIX32
12008c2ecf20Sopenharmony_ci	def_bool y
12018c2ecf20Sopenharmony_ci	depends on X86_16BIT && X86_32
12028c2ecf20Sopenharmony_ci
12038c2ecf20Sopenharmony_ciconfig X86_ESPFIX64
12048c2ecf20Sopenharmony_ci	def_bool y
12058c2ecf20Sopenharmony_ci	depends on X86_16BIT && X86_64
12068c2ecf20Sopenharmony_ci
12078c2ecf20Sopenharmony_ciconfig X86_VSYSCALL_EMULATION
12088c2ecf20Sopenharmony_ci	bool "Enable vsyscall emulation" if EXPERT
12098c2ecf20Sopenharmony_ci	default y
12108c2ecf20Sopenharmony_ci	depends on X86_64
12118c2ecf20Sopenharmony_ci	help
12128c2ecf20Sopenharmony_ci	 This enables emulation of the legacy vsyscall page.  Disabling
12138c2ecf20Sopenharmony_ci	 it is roughly equivalent to booting with vsyscall=none, except
12148c2ecf20Sopenharmony_ci	 that it will also disable the helpful warning if a program
12158c2ecf20Sopenharmony_ci	 tries to use a vsyscall.  With this option set to N, offending
12168c2ecf20Sopenharmony_ci	 programs will just segfault, citing addresses of the form
12178c2ecf20Sopenharmony_ci	 0xffffffffff600?00.
12188c2ecf20Sopenharmony_ci
12198c2ecf20Sopenharmony_ci	 This option is required by many programs built before 2013, and
12208c2ecf20Sopenharmony_ci	 care should be used even with newer programs if set to N.
12218c2ecf20Sopenharmony_ci
12228c2ecf20Sopenharmony_ci	 Disabling this option saves about 7K of kernel size and
12238c2ecf20Sopenharmony_ci	 possibly 4K of additional runtime pagetable memory.
12248c2ecf20Sopenharmony_ci
12258c2ecf20Sopenharmony_ciconfig X86_IOPL_IOPERM
12268c2ecf20Sopenharmony_ci	bool "IOPERM and IOPL Emulation"
12278c2ecf20Sopenharmony_ci	default y
12288c2ecf20Sopenharmony_ci	help
12298c2ecf20Sopenharmony_ci	  This enables the ioperm() and iopl() syscalls which are necessary
12308c2ecf20Sopenharmony_ci	  for legacy applications.
12318c2ecf20Sopenharmony_ci
12328c2ecf20Sopenharmony_ci	  Legacy IOPL support is an overbroad mechanism which allows user
12338c2ecf20Sopenharmony_ci	  space aside of accessing all 65536 I/O ports also to disable
12348c2ecf20Sopenharmony_ci	  interrupts. To gain this access the caller needs CAP_SYS_RAWIO
12358c2ecf20Sopenharmony_ci	  capabilities and permission from potentially active security
12368c2ecf20Sopenharmony_ci	  modules.
12378c2ecf20Sopenharmony_ci
12388c2ecf20Sopenharmony_ci	  The emulation restricts the functionality of the syscall to
12398c2ecf20Sopenharmony_ci	  only allowing the full range I/O port access, but prevents the
12408c2ecf20Sopenharmony_ci	  ability to disable interrupts from user space which would be
12418c2ecf20Sopenharmony_ci	  granted if the hardware IOPL mechanism would be used.
12428c2ecf20Sopenharmony_ci
12438c2ecf20Sopenharmony_ciconfig TOSHIBA
12448c2ecf20Sopenharmony_ci	tristate "Toshiba Laptop support"
12458c2ecf20Sopenharmony_ci	depends on X86_32
12468c2ecf20Sopenharmony_ci	help
12478c2ecf20Sopenharmony_ci	  This adds a driver to safely access the System Management Mode of
12488c2ecf20Sopenharmony_ci	  the CPU on Toshiba portables with a genuine Toshiba BIOS. It does
12498c2ecf20Sopenharmony_ci	  not work on models with a Phoenix BIOS. The System Management Mode
12508c2ecf20Sopenharmony_ci	  is used to set the BIOS and power saving options on Toshiba portables.
12518c2ecf20Sopenharmony_ci
12528c2ecf20Sopenharmony_ci	  For information on utilities to make use of this driver see the
12538c2ecf20Sopenharmony_ci	  Toshiba Linux utilities web site at:
12548c2ecf20Sopenharmony_ci	  <http://www.buzzard.org.uk/toshiba/>.
12558c2ecf20Sopenharmony_ci
12568c2ecf20Sopenharmony_ci	  Say Y if you intend to run this kernel on a Toshiba portable.
12578c2ecf20Sopenharmony_ci	  Say N otherwise.
12588c2ecf20Sopenharmony_ci
12598c2ecf20Sopenharmony_ciconfig I8K
12608c2ecf20Sopenharmony_ci	tristate "Dell i8k legacy laptop support"
12618c2ecf20Sopenharmony_ci	depends on HWMON
12628c2ecf20Sopenharmony_ci	depends on PROC_FS
12638c2ecf20Sopenharmony_ci	select SENSORS_DELL_SMM
12648c2ecf20Sopenharmony_ci	help
12658c2ecf20Sopenharmony_ci	  This option enables legacy /proc/i8k userspace interface in hwmon
12668c2ecf20Sopenharmony_ci	  dell-smm-hwmon driver. Character file /proc/i8k reports bios version,
12678c2ecf20Sopenharmony_ci	  temperature and allows controlling fan speeds of Dell laptops via
12688c2ecf20Sopenharmony_ci	  System Management Mode. For old Dell laptops (like Dell Inspiron 8000)
12698c2ecf20Sopenharmony_ci	  it reports also power and hotkey status. For fan speed control is
12708c2ecf20Sopenharmony_ci	  needed userspace package i8kutils.
12718c2ecf20Sopenharmony_ci
12728c2ecf20Sopenharmony_ci	  Say Y if you intend to run this kernel on old Dell laptops or want to
12738c2ecf20Sopenharmony_ci	  use userspace package i8kutils.
12748c2ecf20Sopenharmony_ci	  Say N otherwise.
12758c2ecf20Sopenharmony_ci
12768c2ecf20Sopenharmony_ciconfig X86_REBOOTFIXUPS
12778c2ecf20Sopenharmony_ci	bool "Enable X86 board specific fixups for reboot"
12788c2ecf20Sopenharmony_ci	depends on X86_32
12798c2ecf20Sopenharmony_ci	help
12808c2ecf20Sopenharmony_ci	  This enables chipset and/or board specific fixups to be done
12818c2ecf20Sopenharmony_ci	  in order to get reboot to work correctly. This is only needed on
12828c2ecf20Sopenharmony_ci	  some combinations of hardware and BIOS. The symptom, for which
12838c2ecf20Sopenharmony_ci	  this config is intended, is when reboot ends with a stalled/hung
12848c2ecf20Sopenharmony_ci	  system.
12858c2ecf20Sopenharmony_ci
12868c2ecf20Sopenharmony_ci	  Currently, the only fixup is for the Geode machines using
12878c2ecf20Sopenharmony_ci	  CS5530A and CS5536 chipsets and the RDC R-321x SoC.
12888c2ecf20Sopenharmony_ci
12898c2ecf20Sopenharmony_ci	  Say Y if you want to enable the fixup. Currently, it's safe to
12908c2ecf20Sopenharmony_ci	  enable this option even if you don't need it.
12918c2ecf20Sopenharmony_ci	  Say N otherwise.
12928c2ecf20Sopenharmony_ci
12938c2ecf20Sopenharmony_ciconfig MICROCODE
12948c2ecf20Sopenharmony_ci	bool "CPU microcode loading support"
12958c2ecf20Sopenharmony_ci	default y
12968c2ecf20Sopenharmony_ci	depends on CPU_SUP_AMD || CPU_SUP_INTEL
12978c2ecf20Sopenharmony_ci	help
12988c2ecf20Sopenharmony_ci	  If you say Y here, you will be able to update the microcode on
12998c2ecf20Sopenharmony_ci	  Intel and AMD processors. The Intel support is for the IA32 family,
13008c2ecf20Sopenharmony_ci	  e.g. Pentium Pro, Pentium II, Pentium III, Pentium 4, Xeon etc. The
13018c2ecf20Sopenharmony_ci	  AMD support is for families 0x10 and later. You will obviously need
13028c2ecf20Sopenharmony_ci	  the actual microcode binary data itself which is not shipped with
13038c2ecf20Sopenharmony_ci	  the Linux kernel.
13048c2ecf20Sopenharmony_ci
13058c2ecf20Sopenharmony_ci	  The preferred method to load microcode from a detached initrd is described
13068c2ecf20Sopenharmony_ci	  in Documentation/x86/microcode.rst. For that you need to enable
13078c2ecf20Sopenharmony_ci	  CONFIG_BLK_DEV_INITRD in order for the loader to be able to scan the
13088c2ecf20Sopenharmony_ci	  initrd for microcode blobs.
13098c2ecf20Sopenharmony_ci
13108c2ecf20Sopenharmony_ci	  In addition, you can build the microcode into the kernel. For that you
13118c2ecf20Sopenharmony_ci	  need to add the vendor-supplied microcode to the CONFIG_EXTRA_FIRMWARE
13128c2ecf20Sopenharmony_ci	  config option.
13138c2ecf20Sopenharmony_ci
13148c2ecf20Sopenharmony_ciconfig MICROCODE_INTEL
13158c2ecf20Sopenharmony_ci	bool "Intel microcode loading support"
13168c2ecf20Sopenharmony_ci	depends on CPU_SUP_INTEL && MICROCODE
13178c2ecf20Sopenharmony_ci	default MICROCODE
13188c2ecf20Sopenharmony_ci	help
13198c2ecf20Sopenharmony_ci	  This options enables microcode patch loading support for Intel
13208c2ecf20Sopenharmony_ci	  processors.
13218c2ecf20Sopenharmony_ci
13228c2ecf20Sopenharmony_ci	  For the current Intel microcode data package go to
13238c2ecf20Sopenharmony_ci	  <https://downloadcenter.intel.com> and search for
13248c2ecf20Sopenharmony_ci	  'Linux Processor Microcode Data File'.
13258c2ecf20Sopenharmony_ci
13268c2ecf20Sopenharmony_ciconfig MICROCODE_AMD
13278c2ecf20Sopenharmony_ci	bool "AMD microcode loading support"
13288c2ecf20Sopenharmony_ci	depends on CPU_SUP_AMD && MICROCODE
13298c2ecf20Sopenharmony_ci	help
13308c2ecf20Sopenharmony_ci	  If you select this option, microcode patch loading support for AMD
13318c2ecf20Sopenharmony_ci	  processors will be enabled.
13328c2ecf20Sopenharmony_ci
13338c2ecf20Sopenharmony_ciconfig MICROCODE_LATE_LOADING
13348c2ecf20Sopenharmony_ci	bool "Late microcode loading (DANGEROUS)"
13358c2ecf20Sopenharmony_ci	default n
13368c2ecf20Sopenharmony_ci	depends on MICROCODE
13378c2ecf20Sopenharmony_ci	help
13388c2ecf20Sopenharmony_ci	  Loading microcode late, when the system is up and executing instructions
13398c2ecf20Sopenharmony_ci	  is a tricky business and should be avoided if possible. Just the sequence
13408c2ecf20Sopenharmony_ci	  of synchronizing all cores and SMT threads is one fragile dance which does
13418c2ecf20Sopenharmony_ci	  not guarantee that cores might not softlock after the loading. Therefore,
13428c2ecf20Sopenharmony_ci	  use this at your own risk. Late loading taints the kernel too.
13438c2ecf20Sopenharmony_ci
13448c2ecf20Sopenharmony_ciconfig X86_MSR
13458c2ecf20Sopenharmony_ci	tristate "/dev/cpu/*/msr - Model-specific register support"
13468c2ecf20Sopenharmony_ci	help
13478c2ecf20Sopenharmony_ci	  This device gives privileged processes access to the x86
13488c2ecf20Sopenharmony_ci	  Model-Specific Registers (MSRs).  It is a character device with
13498c2ecf20Sopenharmony_ci	  major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
13508c2ecf20Sopenharmony_ci	  MSR accesses are directed to a specific CPU on multi-processor
13518c2ecf20Sopenharmony_ci	  systems.
13528c2ecf20Sopenharmony_ci
13538c2ecf20Sopenharmony_ciconfig X86_CPUID
13548c2ecf20Sopenharmony_ci	tristate "/dev/cpu/*/cpuid - CPU information support"
13558c2ecf20Sopenharmony_ci	help
13568c2ecf20Sopenharmony_ci	  This device gives processes access to the x86 CPUID instruction to
13578c2ecf20Sopenharmony_ci	  be executed on a specific processor.  It is a character device
13588c2ecf20Sopenharmony_ci	  with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
13598c2ecf20Sopenharmony_ci	  /dev/cpu/31/cpuid.
13608c2ecf20Sopenharmony_ci
13618c2ecf20Sopenharmony_cichoice
13628c2ecf20Sopenharmony_ci	prompt "High Memory Support"
13638c2ecf20Sopenharmony_ci	default HIGHMEM4G
13648c2ecf20Sopenharmony_ci	depends on X86_32
13658c2ecf20Sopenharmony_ci
13668c2ecf20Sopenharmony_ciconfig NOHIGHMEM
13678c2ecf20Sopenharmony_ci	bool "off"
13688c2ecf20Sopenharmony_ci	help
13698c2ecf20Sopenharmony_ci	  Linux can use up to 64 Gigabytes of physical memory on x86 systems.
13708c2ecf20Sopenharmony_ci	  However, the address space of 32-bit x86 processors is only 4
13718c2ecf20Sopenharmony_ci	  Gigabytes large. That means that, if you have a large amount of
13728c2ecf20Sopenharmony_ci	  physical memory, not all of it can be "permanently mapped" by the
13738c2ecf20Sopenharmony_ci	  kernel. The physical memory that's not permanently mapped is called
13748c2ecf20Sopenharmony_ci	  "high memory".
13758c2ecf20Sopenharmony_ci
13768c2ecf20Sopenharmony_ci	  If you are compiling a kernel which will never run on a machine with
13778c2ecf20Sopenharmony_ci	  more than 1 Gigabyte total physical RAM, answer "off" here (default
13788c2ecf20Sopenharmony_ci	  choice and suitable for most users). This will result in a "3GB/1GB"
13798c2ecf20Sopenharmony_ci	  split: 3GB are mapped so that each process sees a 3GB virtual memory
13808c2ecf20Sopenharmony_ci	  space and the remaining part of the 4GB virtual memory space is used
13818c2ecf20Sopenharmony_ci	  by the kernel to permanently map as much physical memory as
13828c2ecf20Sopenharmony_ci	  possible.
13838c2ecf20Sopenharmony_ci
13848c2ecf20Sopenharmony_ci	  If the machine has between 1 and 4 Gigabytes physical RAM, then
13858c2ecf20Sopenharmony_ci	  answer "4GB" here.
13868c2ecf20Sopenharmony_ci
13878c2ecf20Sopenharmony_ci	  If more than 4 Gigabytes is used then answer "64GB" here. This
13888c2ecf20Sopenharmony_ci	  selection turns Intel PAE (Physical Address Extension) mode on.
13898c2ecf20Sopenharmony_ci	  PAE implements 3-level paging on IA32 processors. PAE is fully
13908c2ecf20Sopenharmony_ci	  supported by Linux, PAE mode is implemented on all recent Intel
13918c2ecf20Sopenharmony_ci	  processors (Pentium Pro and better). NOTE: If you say "64GB" here,
13928c2ecf20Sopenharmony_ci	  then the kernel will not boot on CPUs that don't support PAE!
13938c2ecf20Sopenharmony_ci
13948c2ecf20Sopenharmony_ci	  The actual amount of total physical memory will either be
13958c2ecf20Sopenharmony_ci	  auto detected or can be forced by using a kernel command line option
13968c2ecf20Sopenharmony_ci	  such as "mem=256M". (Try "man bootparam" or see the documentation of
13978c2ecf20Sopenharmony_ci	  your boot loader (lilo or loadlin) about how to pass options to the
13988c2ecf20Sopenharmony_ci	  kernel at boot time.)
13998c2ecf20Sopenharmony_ci
14008c2ecf20Sopenharmony_ci	  If unsure, say "off".
14018c2ecf20Sopenharmony_ci
14028c2ecf20Sopenharmony_ciconfig HIGHMEM4G
14038c2ecf20Sopenharmony_ci	bool "4GB"
14048c2ecf20Sopenharmony_ci	help
14058c2ecf20Sopenharmony_ci	  Select this if you have a 32-bit processor and between 1 and 4
14068c2ecf20Sopenharmony_ci	  gigabytes of physical RAM.
14078c2ecf20Sopenharmony_ci
14088c2ecf20Sopenharmony_ciconfig HIGHMEM64G
14098c2ecf20Sopenharmony_ci	bool "64GB"
14108c2ecf20Sopenharmony_ci	depends on !M486SX && !M486 && !M586 && !M586TSC && !M586MMX && !MGEODE_LX && !MGEODEGX1 && !MCYRIXIII && !MELAN && !MWINCHIPC6 && !MWINCHIP3D && !MK6
14118c2ecf20Sopenharmony_ci	select X86_PAE
14128c2ecf20Sopenharmony_ci	help
14138c2ecf20Sopenharmony_ci	  Select this if you have a 32-bit processor and more than 4
14148c2ecf20Sopenharmony_ci	  gigabytes of physical RAM.
14158c2ecf20Sopenharmony_ci
14168c2ecf20Sopenharmony_ciendchoice
14178c2ecf20Sopenharmony_ci
14188c2ecf20Sopenharmony_cichoice
14198c2ecf20Sopenharmony_ci	prompt "Memory split" if EXPERT
14208c2ecf20Sopenharmony_ci	default VMSPLIT_3G
14218c2ecf20Sopenharmony_ci	depends on X86_32
14228c2ecf20Sopenharmony_ci	help
14238c2ecf20Sopenharmony_ci	  Select the desired split between kernel and user memory.
14248c2ecf20Sopenharmony_ci
14258c2ecf20Sopenharmony_ci	  If the address range available to the kernel is less than the
14268c2ecf20Sopenharmony_ci	  physical memory installed, the remaining memory will be available
14278c2ecf20Sopenharmony_ci	  as "high memory". Accessing high memory is a little more costly
14288c2ecf20Sopenharmony_ci	  than low memory, as it needs to be mapped into the kernel first.
14298c2ecf20Sopenharmony_ci	  Note that increasing the kernel address space limits the range
14308c2ecf20Sopenharmony_ci	  available to user programs, making the address space there
14318c2ecf20Sopenharmony_ci	  tighter.  Selecting anything other than the default 3G/1G split
14328c2ecf20Sopenharmony_ci	  will also likely make your kernel incompatible with binary-only
14338c2ecf20Sopenharmony_ci	  kernel modules.
14348c2ecf20Sopenharmony_ci
14358c2ecf20Sopenharmony_ci	  If you are not absolutely sure what you are doing, leave this
14368c2ecf20Sopenharmony_ci	  option alone!
14378c2ecf20Sopenharmony_ci
14388c2ecf20Sopenharmony_ci	config VMSPLIT_3G
14398c2ecf20Sopenharmony_ci		bool "3G/1G user/kernel split"
14408c2ecf20Sopenharmony_ci	config VMSPLIT_3G_OPT
14418c2ecf20Sopenharmony_ci		depends on !X86_PAE
14428c2ecf20Sopenharmony_ci		bool "3G/1G user/kernel split (for full 1G low memory)"
14438c2ecf20Sopenharmony_ci	config VMSPLIT_2G
14448c2ecf20Sopenharmony_ci		bool "2G/2G user/kernel split"
14458c2ecf20Sopenharmony_ci	config VMSPLIT_2G_OPT
14468c2ecf20Sopenharmony_ci		depends on !X86_PAE
14478c2ecf20Sopenharmony_ci		bool "2G/2G user/kernel split (for full 2G low memory)"
14488c2ecf20Sopenharmony_ci	config VMSPLIT_1G
14498c2ecf20Sopenharmony_ci		bool "1G/3G user/kernel split"
14508c2ecf20Sopenharmony_ciendchoice
14518c2ecf20Sopenharmony_ci
14528c2ecf20Sopenharmony_ciconfig PAGE_OFFSET
14538c2ecf20Sopenharmony_ci	hex
14548c2ecf20Sopenharmony_ci	default 0xB0000000 if VMSPLIT_3G_OPT
14558c2ecf20Sopenharmony_ci	default 0x80000000 if VMSPLIT_2G
14568c2ecf20Sopenharmony_ci	default 0x78000000 if VMSPLIT_2G_OPT
14578c2ecf20Sopenharmony_ci	default 0x40000000 if VMSPLIT_1G
14588c2ecf20Sopenharmony_ci	default 0xC0000000
14598c2ecf20Sopenharmony_ci	depends on X86_32
14608c2ecf20Sopenharmony_ci
14618c2ecf20Sopenharmony_ciconfig HIGHMEM
14628c2ecf20Sopenharmony_ci	def_bool y
14638c2ecf20Sopenharmony_ci	depends on X86_32 && (HIGHMEM64G || HIGHMEM4G)
14648c2ecf20Sopenharmony_ci
14658c2ecf20Sopenharmony_ciconfig X86_PAE
14668c2ecf20Sopenharmony_ci	bool "PAE (Physical Address Extension) Support"
14678c2ecf20Sopenharmony_ci	depends on X86_32 && !HIGHMEM4G
14688c2ecf20Sopenharmony_ci	select PHYS_ADDR_T_64BIT
14698c2ecf20Sopenharmony_ci	select SWIOTLB
14708c2ecf20Sopenharmony_ci	help
14718c2ecf20Sopenharmony_ci	  PAE is required for NX support, and furthermore enables
14728c2ecf20Sopenharmony_ci	  larger swapspace support for non-overcommit purposes. It
14738c2ecf20Sopenharmony_ci	  has the cost of more pagetable lookup overhead, and also
14748c2ecf20Sopenharmony_ci	  consumes more pagetable space per process.
14758c2ecf20Sopenharmony_ci
14768c2ecf20Sopenharmony_ciconfig X86_5LEVEL
14778c2ecf20Sopenharmony_ci	bool "Enable 5-level page tables support"
14788c2ecf20Sopenharmony_ci	default y
14798c2ecf20Sopenharmony_ci	select DYNAMIC_MEMORY_LAYOUT
14808c2ecf20Sopenharmony_ci	select SPARSEMEM_VMEMMAP
14818c2ecf20Sopenharmony_ci	depends on X86_64
14828c2ecf20Sopenharmony_ci	help
14838c2ecf20Sopenharmony_ci	  5-level paging enables access to larger address space:
14848c2ecf20Sopenharmony_ci	  upto 128 PiB of virtual address space and 4 PiB of
14858c2ecf20Sopenharmony_ci	  physical address space.
14868c2ecf20Sopenharmony_ci
14878c2ecf20Sopenharmony_ci	  It will be supported by future Intel CPUs.
14888c2ecf20Sopenharmony_ci
14898c2ecf20Sopenharmony_ci	  A kernel with the option enabled can be booted on machines that
14908c2ecf20Sopenharmony_ci	  support 4- or 5-level paging.
14918c2ecf20Sopenharmony_ci
14928c2ecf20Sopenharmony_ci	  See Documentation/x86/x86_64/5level-paging.rst for more
14938c2ecf20Sopenharmony_ci	  information.
14948c2ecf20Sopenharmony_ci
14958c2ecf20Sopenharmony_ci	  Say N if unsure.
14968c2ecf20Sopenharmony_ci
14978c2ecf20Sopenharmony_ciconfig X86_DIRECT_GBPAGES
14988c2ecf20Sopenharmony_ci	def_bool y
14998c2ecf20Sopenharmony_ci	depends on X86_64
15008c2ecf20Sopenharmony_ci	help
15018c2ecf20Sopenharmony_ci	  Certain kernel features effectively disable kernel
15028c2ecf20Sopenharmony_ci	  linear 1 GB mappings (even if the CPU otherwise
15038c2ecf20Sopenharmony_ci	  supports them), so don't confuse the user by printing
15048c2ecf20Sopenharmony_ci	  that we have them enabled.
15058c2ecf20Sopenharmony_ci
15068c2ecf20Sopenharmony_ciconfig X86_CPA_STATISTICS
15078c2ecf20Sopenharmony_ci	bool "Enable statistic for Change Page Attribute"
15088c2ecf20Sopenharmony_ci	depends on DEBUG_FS
15098c2ecf20Sopenharmony_ci	help
15108c2ecf20Sopenharmony_ci	  Expose statistics about the Change Page Attribute mechanism, which
15118c2ecf20Sopenharmony_ci	  helps to determine the effectiveness of preserving large and huge
15128c2ecf20Sopenharmony_ci	  page mappings when mapping protections are changed.
15138c2ecf20Sopenharmony_ci
15148c2ecf20Sopenharmony_ciconfig AMD_MEM_ENCRYPT
15158c2ecf20Sopenharmony_ci	bool "AMD Secure Memory Encryption (SME) support"
15168c2ecf20Sopenharmony_ci	depends on X86_64 && CPU_SUP_AMD
15178c2ecf20Sopenharmony_ci	select DMA_COHERENT_POOL
15188c2ecf20Sopenharmony_ci	select DYNAMIC_PHYSICAL_MASK
15198c2ecf20Sopenharmony_ci	select ARCH_USE_MEMREMAP_PROT
15208c2ecf20Sopenharmony_ci	select ARCH_HAS_FORCE_DMA_UNENCRYPTED
15218c2ecf20Sopenharmony_ci	select INSTRUCTION_DECODER
15228c2ecf20Sopenharmony_ci	select ARCH_HAS_CC_PLATFORM
15238c2ecf20Sopenharmony_ci	help
15248c2ecf20Sopenharmony_ci	  Say yes to enable support for the encryption of system memory.
15258c2ecf20Sopenharmony_ci	  This requires an AMD processor that supports Secure Memory
15268c2ecf20Sopenharmony_ci	  Encryption (SME).
15278c2ecf20Sopenharmony_ci
15288c2ecf20Sopenharmony_ciconfig AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
15298c2ecf20Sopenharmony_ci	bool "Activate AMD Secure Memory Encryption (SME) by default"
15308c2ecf20Sopenharmony_ci	depends on AMD_MEM_ENCRYPT
15318c2ecf20Sopenharmony_ci	help
15328c2ecf20Sopenharmony_ci	  Say yes to have system memory encrypted by default if running on
15338c2ecf20Sopenharmony_ci	  an AMD processor that supports Secure Memory Encryption (SME).
15348c2ecf20Sopenharmony_ci
15358c2ecf20Sopenharmony_ci	  If set to Y, then the encryption of system memory can be
15368c2ecf20Sopenharmony_ci	  deactivated with the mem_encrypt=off command line option.
15378c2ecf20Sopenharmony_ci
15388c2ecf20Sopenharmony_ci	  If set to N, then the encryption of system memory can be
15398c2ecf20Sopenharmony_ci	  activated with the mem_encrypt=on command line option.
15408c2ecf20Sopenharmony_ci
15418c2ecf20Sopenharmony_ci# Common NUMA Features
15428c2ecf20Sopenharmony_ciconfig NUMA
15438c2ecf20Sopenharmony_ci	bool "NUMA Memory Allocation and Scheduler Support"
15448c2ecf20Sopenharmony_ci	depends on SMP
15458c2ecf20Sopenharmony_ci	depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
15468c2ecf20Sopenharmony_ci	default y if X86_BIGSMP
15478c2ecf20Sopenharmony_ci	help
15488c2ecf20Sopenharmony_ci	  Enable NUMA (Non-Uniform Memory Access) support.
15498c2ecf20Sopenharmony_ci
15508c2ecf20Sopenharmony_ci	  The kernel will try to allocate memory used by a CPU on the
15518c2ecf20Sopenharmony_ci	  local memory controller of the CPU and add some more
15528c2ecf20Sopenharmony_ci	  NUMA awareness to the kernel.
15538c2ecf20Sopenharmony_ci
15548c2ecf20Sopenharmony_ci	  For 64-bit this is recommended if the system is Intel Core i7
15558c2ecf20Sopenharmony_ci	  (or later), AMD Opteron, or EM64T NUMA.
15568c2ecf20Sopenharmony_ci
15578c2ecf20Sopenharmony_ci	  For 32-bit this is only needed if you boot a 32-bit
15588c2ecf20Sopenharmony_ci	  kernel on a 64-bit NUMA platform.
15598c2ecf20Sopenharmony_ci
15608c2ecf20Sopenharmony_ci	  Otherwise, you should say N.
15618c2ecf20Sopenharmony_ci
15628c2ecf20Sopenharmony_ciconfig AMD_NUMA
15638c2ecf20Sopenharmony_ci	def_bool y
15648c2ecf20Sopenharmony_ci	prompt "Old style AMD Opteron NUMA detection"
15658c2ecf20Sopenharmony_ci	depends on X86_64 && NUMA && PCI
15668c2ecf20Sopenharmony_ci	help
15678c2ecf20Sopenharmony_ci	  Enable AMD NUMA node topology detection.  You should say Y here if
15688c2ecf20Sopenharmony_ci	  you have a multi processor AMD system. This uses an old method to
15698c2ecf20Sopenharmony_ci	  read the NUMA configuration directly from the builtin Northbridge
15708c2ecf20Sopenharmony_ci	  of Opteron. It is recommended to use X86_64_ACPI_NUMA instead,
15718c2ecf20Sopenharmony_ci	  which also takes priority if both are compiled in.
15728c2ecf20Sopenharmony_ci
15738c2ecf20Sopenharmony_ciconfig X86_64_ACPI_NUMA
15748c2ecf20Sopenharmony_ci	def_bool y
15758c2ecf20Sopenharmony_ci	prompt "ACPI NUMA detection"
15768c2ecf20Sopenharmony_ci	depends on X86_64 && NUMA && ACPI && PCI
15778c2ecf20Sopenharmony_ci	select ACPI_NUMA
15788c2ecf20Sopenharmony_ci	help
15798c2ecf20Sopenharmony_ci	  Enable ACPI SRAT based node topology detection.
15808c2ecf20Sopenharmony_ci
15818c2ecf20Sopenharmony_ciconfig NUMA_EMU
15828c2ecf20Sopenharmony_ci	bool "NUMA emulation"
15838c2ecf20Sopenharmony_ci	depends on NUMA
15848c2ecf20Sopenharmony_ci	help
15858c2ecf20Sopenharmony_ci	  Enable NUMA emulation. A flat machine will be split
15868c2ecf20Sopenharmony_ci	  into virtual nodes when booted with "numa=fake=N", where N is the
15878c2ecf20Sopenharmony_ci	  number of nodes. This is only useful for debugging.
15888c2ecf20Sopenharmony_ci
15898c2ecf20Sopenharmony_ciconfig NODES_SHIFT
15908c2ecf20Sopenharmony_ci	int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
15918c2ecf20Sopenharmony_ci	range 1 10
15928c2ecf20Sopenharmony_ci	default "10" if MAXSMP
15938c2ecf20Sopenharmony_ci	default "6" if X86_64
15948c2ecf20Sopenharmony_ci	default "3"
15958c2ecf20Sopenharmony_ci	depends on NEED_MULTIPLE_NODES
15968c2ecf20Sopenharmony_ci	help
15978c2ecf20Sopenharmony_ci	  Specify the maximum number of NUMA Nodes available on the target
15988c2ecf20Sopenharmony_ci	  system.  Increases memory reserved to accommodate various tables.
15998c2ecf20Sopenharmony_ci
16008c2ecf20Sopenharmony_ciconfig ARCH_FLATMEM_ENABLE
16018c2ecf20Sopenharmony_ci	def_bool y
16028c2ecf20Sopenharmony_ci	depends on X86_32 && !NUMA
16038c2ecf20Sopenharmony_ci
16048c2ecf20Sopenharmony_ciconfig ARCH_SPARSEMEM_ENABLE
16058c2ecf20Sopenharmony_ci	def_bool y
16068c2ecf20Sopenharmony_ci	depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD
16078c2ecf20Sopenharmony_ci	select SPARSEMEM_STATIC if X86_32
16088c2ecf20Sopenharmony_ci	select SPARSEMEM_VMEMMAP_ENABLE if X86_64
16098c2ecf20Sopenharmony_ci
16108c2ecf20Sopenharmony_ciconfig ARCH_SPARSEMEM_DEFAULT
16118c2ecf20Sopenharmony_ci	def_bool X86_64 || (NUMA && X86_32)
16128c2ecf20Sopenharmony_ci
16138c2ecf20Sopenharmony_ciconfig ARCH_SELECT_MEMORY_MODEL
16148c2ecf20Sopenharmony_ci	def_bool y
16158c2ecf20Sopenharmony_ci	depends on ARCH_SPARSEMEM_ENABLE
16168c2ecf20Sopenharmony_ci
16178c2ecf20Sopenharmony_ciconfig ARCH_MEMORY_PROBE
16188c2ecf20Sopenharmony_ci	bool "Enable sysfs memory/probe interface"
16198c2ecf20Sopenharmony_ci	depends on X86_64 && MEMORY_HOTPLUG
16208c2ecf20Sopenharmony_ci	help
16218c2ecf20Sopenharmony_ci	  This option enables a sysfs memory/probe interface for testing.
16228c2ecf20Sopenharmony_ci	  See Documentation/admin-guide/mm/memory-hotplug.rst for more information.
16238c2ecf20Sopenharmony_ci	  If you are unsure how to answer this question, answer N.
16248c2ecf20Sopenharmony_ci
16258c2ecf20Sopenharmony_ciconfig ARCH_PROC_KCORE_TEXT
16268c2ecf20Sopenharmony_ci	def_bool y
16278c2ecf20Sopenharmony_ci	depends on X86_64 && PROC_KCORE
16288c2ecf20Sopenharmony_ci
16298c2ecf20Sopenharmony_ciconfig ILLEGAL_POINTER_VALUE
16308c2ecf20Sopenharmony_ci	hex
16318c2ecf20Sopenharmony_ci	default 0 if X86_32
16328c2ecf20Sopenharmony_ci	default 0xdead000000000000 if X86_64
16338c2ecf20Sopenharmony_ci
16348c2ecf20Sopenharmony_ciconfig X86_PMEM_LEGACY_DEVICE
16358c2ecf20Sopenharmony_ci	bool
16368c2ecf20Sopenharmony_ci
16378c2ecf20Sopenharmony_ciconfig X86_PMEM_LEGACY
16388c2ecf20Sopenharmony_ci	tristate "Support non-standard NVDIMMs and ADR protected memory"
16398c2ecf20Sopenharmony_ci	depends on PHYS_ADDR_T_64BIT
16408c2ecf20Sopenharmony_ci	depends on BLK_DEV
16418c2ecf20Sopenharmony_ci	select X86_PMEM_LEGACY_DEVICE
16428c2ecf20Sopenharmony_ci	select NUMA_KEEP_MEMINFO if NUMA
16438c2ecf20Sopenharmony_ci	select LIBNVDIMM
16448c2ecf20Sopenharmony_ci	help
16458c2ecf20Sopenharmony_ci	  Treat memory marked using the non-standard e820 type of 12 as used
16468c2ecf20Sopenharmony_ci	  by the Intel Sandy Bridge-EP reference BIOS as protected memory.
16478c2ecf20Sopenharmony_ci	  The kernel will offer these regions to the 'pmem' driver so
16488c2ecf20Sopenharmony_ci	  they can be used for persistent storage.
16498c2ecf20Sopenharmony_ci
16508c2ecf20Sopenharmony_ci	  Say Y if unsure.
16518c2ecf20Sopenharmony_ci
16528c2ecf20Sopenharmony_ciconfig HIGHPTE
16538c2ecf20Sopenharmony_ci	bool "Allocate 3rd-level pagetables from highmem"
16548c2ecf20Sopenharmony_ci	depends on HIGHMEM
16558c2ecf20Sopenharmony_ci	help
16568c2ecf20Sopenharmony_ci	  The VM uses one page table entry for each page of physical memory.
16578c2ecf20Sopenharmony_ci	  For systems with a lot of RAM, this can be wasteful of precious
16588c2ecf20Sopenharmony_ci	  low memory.  Setting this option will put user-space page table
16598c2ecf20Sopenharmony_ci	  entries in high memory.
16608c2ecf20Sopenharmony_ci
16618c2ecf20Sopenharmony_ciconfig X86_CHECK_BIOS_CORRUPTION
16628c2ecf20Sopenharmony_ci	bool "Check for low memory corruption"
16638c2ecf20Sopenharmony_ci	help
16648c2ecf20Sopenharmony_ci	  Periodically check for memory corruption in low memory, which
16658c2ecf20Sopenharmony_ci	  is suspected to be caused by BIOS.  Even when enabled in the
16668c2ecf20Sopenharmony_ci	  configuration, it is disabled at runtime.  Enable it by
16678c2ecf20Sopenharmony_ci	  setting "memory_corruption_check=1" on the kernel command
16688c2ecf20Sopenharmony_ci	  line.  By default it scans the low 64k of memory every 60
16698c2ecf20Sopenharmony_ci	  seconds; see the memory_corruption_check_size and
16708c2ecf20Sopenharmony_ci	  memory_corruption_check_period parameters in
16718c2ecf20Sopenharmony_ci	  Documentation/admin-guide/kernel-parameters.rst to adjust this.
16728c2ecf20Sopenharmony_ci
16738c2ecf20Sopenharmony_ci	  When enabled with the default parameters, this option has
16748c2ecf20Sopenharmony_ci	  almost no overhead, as it reserves a relatively small amount
16758c2ecf20Sopenharmony_ci	  of memory and scans it infrequently.  It both detects corruption
16768c2ecf20Sopenharmony_ci	  and prevents it from affecting the running system.
16778c2ecf20Sopenharmony_ci
16788c2ecf20Sopenharmony_ci	  It is, however, intended as a diagnostic tool; if repeatable
16798c2ecf20Sopenharmony_ci	  BIOS-originated corruption always affects the same memory,
16808c2ecf20Sopenharmony_ci	  you can use memmap= to prevent the kernel from using that
16818c2ecf20Sopenharmony_ci	  memory.
16828c2ecf20Sopenharmony_ci
16838c2ecf20Sopenharmony_ciconfig X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
16848c2ecf20Sopenharmony_ci	bool "Set the default setting of memory_corruption_check"
16858c2ecf20Sopenharmony_ci	depends on X86_CHECK_BIOS_CORRUPTION
16868c2ecf20Sopenharmony_ci	default y
16878c2ecf20Sopenharmony_ci	help
16888c2ecf20Sopenharmony_ci	  Set whether the default state of memory_corruption_check is
16898c2ecf20Sopenharmony_ci	  on or off.
16908c2ecf20Sopenharmony_ci
16918c2ecf20Sopenharmony_ciconfig X86_RESERVE_LOW
16928c2ecf20Sopenharmony_ci	int "Amount of low memory, in kilobytes, to reserve for the BIOS"
16938c2ecf20Sopenharmony_ci	default 64
16948c2ecf20Sopenharmony_ci	range 4 640
16958c2ecf20Sopenharmony_ci	help
16968c2ecf20Sopenharmony_ci	  Specify the amount of low memory to reserve for the BIOS.
16978c2ecf20Sopenharmony_ci
16988c2ecf20Sopenharmony_ci	  The first page contains BIOS data structures that the kernel
16998c2ecf20Sopenharmony_ci	  must not use, so that page must always be reserved.
17008c2ecf20Sopenharmony_ci
17018c2ecf20Sopenharmony_ci	  By default we reserve the first 64K of physical RAM, as a
17028c2ecf20Sopenharmony_ci	  number of BIOSes are known to corrupt that memory range
17038c2ecf20Sopenharmony_ci	  during events such as suspend/resume or monitor cable
17048c2ecf20Sopenharmony_ci	  insertion, so it must not be used by the kernel.
17058c2ecf20Sopenharmony_ci
17068c2ecf20Sopenharmony_ci	  You can set this to 4 if you are absolutely sure that you
17078c2ecf20Sopenharmony_ci	  trust the BIOS to get all its memory reservations and usages
17088c2ecf20Sopenharmony_ci	  right.  If you know your BIOS have problems beyond the
17098c2ecf20Sopenharmony_ci	  default 64K area, you can set this to 640 to avoid using the
17108c2ecf20Sopenharmony_ci	  entire low memory range.
17118c2ecf20Sopenharmony_ci
17128c2ecf20Sopenharmony_ci	  If you have doubts about the BIOS (e.g. suspend/resume does
17138c2ecf20Sopenharmony_ci	  not work or there's kernel crashes after certain hardware
17148c2ecf20Sopenharmony_ci	  hotplug events) then you might want to enable
17158c2ecf20Sopenharmony_ci	  X86_CHECK_BIOS_CORRUPTION=y to allow the kernel to check
17168c2ecf20Sopenharmony_ci	  typical corruption patterns.
17178c2ecf20Sopenharmony_ci
17188c2ecf20Sopenharmony_ci	  Leave this to the default value of 64 if you are unsure.
17198c2ecf20Sopenharmony_ci
17208c2ecf20Sopenharmony_ciconfig MATH_EMULATION
17218c2ecf20Sopenharmony_ci	bool
17228c2ecf20Sopenharmony_ci	depends on MODIFY_LDT_SYSCALL
17238c2ecf20Sopenharmony_ci	prompt "Math emulation" if X86_32 && (M486SX || MELAN)
17248c2ecf20Sopenharmony_ci	help
17258c2ecf20Sopenharmony_ci	  Linux can emulate a math coprocessor (used for floating point
17268c2ecf20Sopenharmony_ci	  operations) if you don't have one. 486DX and Pentium processors have
17278c2ecf20Sopenharmony_ci	  a math coprocessor built in, 486SX and 386 do not, unless you added
17288c2ecf20Sopenharmony_ci	  a 487DX or 387, respectively. (The messages during boot time can
17298c2ecf20Sopenharmony_ci	  give you some hints here ["man dmesg"].) Everyone needs either a
17308c2ecf20Sopenharmony_ci	  coprocessor or this emulation.
17318c2ecf20Sopenharmony_ci
17328c2ecf20Sopenharmony_ci	  If you don't have a math coprocessor, you need to say Y here; if you
17338c2ecf20Sopenharmony_ci	  say Y here even though you have a coprocessor, the coprocessor will
17348c2ecf20Sopenharmony_ci	  be used nevertheless. (This behavior can be changed with the kernel
17358c2ecf20Sopenharmony_ci	  command line option "no387", which comes handy if your coprocessor
17368c2ecf20Sopenharmony_ci	  is broken. Try "man bootparam" or see the documentation of your boot
17378c2ecf20Sopenharmony_ci	  loader (lilo or loadlin) about how to pass options to the kernel at
17388c2ecf20Sopenharmony_ci	  boot time.) This means that it is a good idea to say Y here if you
17398c2ecf20Sopenharmony_ci	  intend to use this kernel on different machines.
17408c2ecf20Sopenharmony_ci
17418c2ecf20Sopenharmony_ci	  More information about the internals of the Linux math coprocessor
17428c2ecf20Sopenharmony_ci	  emulation can be found in <file:arch/x86/math-emu/README>.
17438c2ecf20Sopenharmony_ci
17448c2ecf20Sopenharmony_ci	  If you are not sure, say Y; apart from resulting in a 66 KB bigger
17458c2ecf20Sopenharmony_ci	  kernel, it won't hurt.
17468c2ecf20Sopenharmony_ci
17478c2ecf20Sopenharmony_ciconfig MTRR
17488c2ecf20Sopenharmony_ci	def_bool y
17498c2ecf20Sopenharmony_ci	prompt "MTRR (Memory Type Range Register) support" if EXPERT
17508c2ecf20Sopenharmony_ci	help
17518c2ecf20Sopenharmony_ci	  On Intel P6 family processors (Pentium Pro, Pentium II and later)
17528c2ecf20Sopenharmony_ci	  the Memory Type Range Registers (MTRRs) may be used to control
17538c2ecf20Sopenharmony_ci	  processor access to memory ranges. This is most useful if you have
17548c2ecf20Sopenharmony_ci	  a video (VGA) card on a PCI or AGP bus. Enabling write-combining
17558c2ecf20Sopenharmony_ci	  allows bus write transfers to be combined into a larger transfer
17568c2ecf20Sopenharmony_ci	  before bursting over the PCI/AGP bus. This can increase performance
17578c2ecf20Sopenharmony_ci	  of image write operations 2.5 times or more. Saying Y here creates a
17588c2ecf20Sopenharmony_ci	  /proc/mtrr file which may be used to manipulate your processor's
17598c2ecf20Sopenharmony_ci	  MTRRs. Typically the X server should use this.
17608c2ecf20Sopenharmony_ci
17618c2ecf20Sopenharmony_ci	  This code has a reasonably generic interface so that similar
17628c2ecf20Sopenharmony_ci	  control registers on other processors can be easily supported
17638c2ecf20Sopenharmony_ci	  as well:
17648c2ecf20Sopenharmony_ci
17658c2ecf20Sopenharmony_ci	  The Cyrix 6x86, 6x86MX and M II processors have Address Range
17668c2ecf20Sopenharmony_ci	  Registers (ARRs) which provide a similar functionality to MTRRs. For
17678c2ecf20Sopenharmony_ci	  these, the ARRs are used to emulate the MTRRs.
17688c2ecf20Sopenharmony_ci	  The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
17698c2ecf20Sopenharmony_ci	  MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
17708c2ecf20Sopenharmony_ci	  write-combining. All of these processors are supported by this code
17718c2ecf20Sopenharmony_ci	  and it makes sense to say Y here if you have one of them.
17728c2ecf20Sopenharmony_ci
17738c2ecf20Sopenharmony_ci	  Saying Y here also fixes a problem with buggy SMP BIOSes which only
17748c2ecf20Sopenharmony_ci	  set the MTRRs for the boot CPU and not for the secondary CPUs. This
17758c2ecf20Sopenharmony_ci	  can lead to all sorts of problems, so it's good to say Y here.
17768c2ecf20Sopenharmony_ci
17778c2ecf20Sopenharmony_ci	  You can safely say Y even if your machine doesn't have MTRRs, you'll
17788c2ecf20Sopenharmony_ci	  just add about 9 KB to your kernel.
17798c2ecf20Sopenharmony_ci
17808c2ecf20Sopenharmony_ci	  See <file:Documentation/x86/mtrr.rst> for more information.
17818c2ecf20Sopenharmony_ci
17828c2ecf20Sopenharmony_ciconfig MTRR_SANITIZER
17838c2ecf20Sopenharmony_ci	def_bool y
17848c2ecf20Sopenharmony_ci	prompt "MTRR cleanup support"
17858c2ecf20Sopenharmony_ci	depends on MTRR
17868c2ecf20Sopenharmony_ci	help
17878c2ecf20Sopenharmony_ci	  Convert MTRR layout from continuous to discrete, so X drivers can
17888c2ecf20Sopenharmony_ci	  add writeback entries.
17898c2ecf20Sopenharmony_ci
17908c2ecf20Sopenharmony_ci	  Can be disabled with disable_mtrr_cleanup on the kernel command line.
17918c2ecf20Sopenharmony_ci	  The largest mtrr entry size for a continuous block can be set with
17928c2ecf20Sopenharmony_ci	  mtrr_chunk_size.
17938c2ecf20Sopenharmony_ci
17948c2ecf20Sopenharmony_ci	  If unsure, say Y.
17958c2ecf20Sopenharmony_ci
17968c2ecf20Sopenharmony_ciconfig MTRR_SANITIZER_ENABLE_DEFAULT
17978c2ecf20Sopenharmony_ci	int "MTRR cleanup enable value (0-1)"
17988c2ecf20Sopenharmony_ci	range 0 1
17998c2ecf20Sopenharmony_ci	default "0"
18008c2ecf20Sopenharmony_ci	depends on MTRR_SANITIZER
18018c2ecf20Sopenharmony_ci	help
18028c2ecf20Sopenharmony_ci	  Enable mtrr cleanup default value
18038c2ecf20Sopenharmony_ci
18048c2ecf20Sopenharmony_ciconfig MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
18058c2ecf20Sopenharmony_ci	int "MTRR cleanup spare reg num (0-7)"
18068c2ecf20Sopenharmony_ci	range 0 7
18078c2ecf20Sopenharmony_ci	default "1"
18088c2ecf20Sopenharmony_ci	depends on MTRR_SANITIZER
18098c2ecf20Sopenharmony_ci	help
18108c2ecf20Sopenharmony_ci	  mtrr cleanup spare entries default, it can be changed via
18118c2ecf20Sopenharmony_ci	  mtrr_spare_reg_nr=N on the kernel command line.
18128c2ecf20Sopenharmony_ci
18138c2ecf20Sopenharmony_ciconfig X86_PAT
18148c2ecf20Sopenharmony_ci	def_bool y
18158c2ecf20Sopenharmony_ci	prompt "x86 PAT support" if EXPERT
18168c2ecf20Sopenharmony_ci	depends on MTRR
18178c2ecf20Sopenharmony_ci	help
18188c2ecf20Sopenharmony_ci	  Use PAT attributes to setup page level cache control.
18198c2ecf20Sopenharmony_ci
18208c2ecf20Sopenharmony_ci	  PATs are the modern equivalents of MTRRs and are much more
18218c2ecf20Sopenharmony_ci	  flexible than MTRRs.
18228c2ecf20Sopenharmony_ci
18238c2ecf20Sopenharmony_ci	  Say N here if you see bootup problems (boot crash, boot hang,
18248c2ecf20Sopenharmony_ci	  spontaneous reboots) or a non-working video driver.
18258c2ecf20Sopenharmony_ci
18268c2ecf20Sopenharmony_ci	  If unsure, say Y.
18278c2ecf20Sopenharmony_ci
18288c2ecf20Sopenharmony_ciconfig ARCH_USES_PG_UNCACHED
18298c2ecf20Sopenharmony_ci	def_bool y
18308c2ecf20Sopenharmony_ci	depends on X86_PAT
18318c2ecf20Sopenharmony_ci
18328c2ecf20Sopenharmony_ciconfig ARCH_RANDOM
18338c2ecf20Sopenharmony_ci	def_bool y
18348c2ecf20Sopenharmony_ci	prompt "x86 architectural random number generator" if EXPERT
18358c2ecf20Sopenharmony_ci	help
18368c2ecf20Sopenharmony_ci	  Enable the x86 architectural RDRAND instruction
18378c2ecf20Sopenharmony_ci	  (Intel Bull Mountain technology) to generate random numbers.
18388c2ecf20Sopenharmony_ci	  If supported, this is a high bandwidth, cryptographically
18398c2ecf20Sopenharmony_ci	  secure hardware random number generator.
18408c2ecf20Sopenharmony_ci
18418c2ecf20Sopenharmony_ciconfig X86_SMAP
18428c2ecf20Sopenharmony_ci	def_bool y
18438c2ecf20Sopenharmony_ci	prompt "Supervisor Mode Access Prevention" if EXPERT
18448c2ecf20Sopenharmony_ci	help
18458c2ecf20Sopenharmony_ci	  Supervisor Mode Access Prevention (SMAP) is a security
18468c2ecf20Sopenharmony_ci	  feature in newer Intel processors.  There is a small
18478c2ecf20Sopenharmony_ci	  performance cost if this enabled and turned on; there is
18488c2ecf20Sopenharmony_ci	  also a small increase in the kernel size if this is enabled.
18498c2ecf20Sopenharmony_ci
18508c2ecf20Sopenharmony_ci	  If unsure, say Y.
18518c2ecf20Sopenharmony_ci
18528c2ecf20Sopenharmony_ciconfig X86_UMIP
18538c2ecf20Sopenharmony_ci	def_bool y
18548c2ecf20Sopenharmony_ci	prompt "User Mode Instruction Prevention" if EXPERT
18558c2ecf20Sopenharmony_ci	help
18568c2ecf20Sopenharmony_ci	  User Mode Instruction Prevention (UMIP) is a security feature in
18578c2ecf20Sopenharmony_ci	  some x86 processors. If enabled, a general protection fault is
18588c2ecf20Sopenharmony_ci	  issued if the SGDT, SLDT, SIDT, SMSW or STR instructions are
18598c2ecf20Sopenharmony_ci	  executed in user mode. These instructions unnecessarily expose
18608c2ecf20Sopenharmony_ci	  information about the hardware state.
18618c2ecf20Sopenharmony_ci
18628c2ecf20Sopenharmony_ci	  The vast majority of applications do not use these instructions.
18638c2ecf20Sopenharmony_ci	  For the very few that do, software emulation is provided in
18648c2ecf20Sopenharmony_ci	  specific cases in protected and virtual-8086 modes. Emulated
18658c2ecf20Sopenharmony_ci	  results are dummy.
18668c2ecf20Sopenharmony_ci
18678c2ecf20Sopenharmony_ciconfig X86_INTEL_MEMORY_PROTECTION_KEYS
18688c2ecf20Sopenharmony_ci	prompt "Memory Protection Keys"
18698c2ecf20Sopenharmony_ci	def_bool y
18708c2ecf20Sopenharmony_ci	# Note: only available in 64-bit mode
18718c2ecf20Sopenharmony_ci	depends on X86_64 && (CPU_SUP_INTEL || CPU_SUP_AMD)
18728c2ecf20Sopenharmony_ci	select ARCH_USES_HIGH_VMA_FLAGS
18738c2ecf20Sopenharmony_ci	select ARCH_HAS_PKEYS
18748c2ecf20Sopenharmony_ci	help
18758c2ecf20Sopenharmony_ci	  Memory Protection Keys provides a mechanism for enforcing
18768c2ecf20Sopenharmony_ci	  page-based protections, but without requiring modification of the
18778c2ecf20Sopenharmony_ci	  page tables when an application changes protection domains.
18788c2ecf20Sopenharmony_ci
18798c2ecf20Sopenharmony_ci	  For details, see Documentation/core-api/protection-keys.rst
18808c2ecf20Sopenharmony_ci
18818c2ecf20Sopenharmony_ci	  If unsure, say y.
18828c2ecf20Sopenharmony_ci
18838c2ecf20Sopenharmony_cichoice
18848c2ecf20Sopenharmony_ci	prompt "TSX enable mode"
18858c2ecf20Sopenharmony_ci	depends on CPU_SUP_INTEL
18868c2ecf20Sopenharmony_ci	default X86_INTEL_TSX_MODE_OFF
18878c2ecf20Sopenharmony_ci	help
18888c2ecf20Sopenharmony_ci	  Intel's TSX (Transactional Synchronization Extensions) feature
18898c2ecf20Sopenharmony_ci	  allows to optimize locking protocols through lock elision which
18908c2ecf20Sopenharmony_ci	  can lead to a noticeable performance boost.
18918c2ecf20Sopenharmony_ci
18928c2ecf20Sopenharmony_ci	  On the other hand it has been shown that TSX can be exploited
18938c2ecf20Sopenharmony_ci	  to form side channel attacks (e.g. TAA) and chances are there
18948c2ecf20Sopenharmony_ci	  will be more of those attacks discovered in the future.
18958c2ecf20Sopenharmony_ci
18968c2ecf20Sopenharmony_ci	  Therefore TSX is not enabled by default (aka tsx=off). An admin
18978c2ecf20Sopenharmony_ci	  might override this decision by tsx=on the command line parameter.
18988c2ecf20Sopenharmony_ci	  Even with TSX enabled, the kernel will attempt to enable the best
18998c2ecf20Sopenharmony_ci	  possible TAA mitigation setting depending on the microcode available
19008c2ecf20Sopenharmony_ci	  for the particular machine.
19018c2ecf20Sopenharmony_ci
19028c2ecf20Sopenharmony_ci	  This option allows to set the default tsx mode between tsx=on, =off
19038c2ecf20Sopenharmony_ci	  and =auto. See Documentation/admin-guide/kernel-parameters.txt for more
19048c2ecf20Sopenharmony_ci	  details.
19058c2ecf20Sopenharmony_ci
19068c2ecf20Sopenharmony_ci	  Say off if not sure, auto if TSX is in use but it should be used on safe
19078c2ecf20Sopenharmony_ci	  platforms or on if TSX is in use and the security aspect of tsx is not
19088c2ecf20Sopenharmony_ci	  relevant.
19098c2ecf20Sopenharmony_ci
19108c2ecf20Sopenharmony_ciconfig X86_INTEL_TSX_MODE_OFF
19118c2ecf20Sopenharmony_ci	bool "off"
19128c2ecf20Sopenharmony_ci	help
19138c2ecf20Sopenharmony_ci	  TSX is disabled if possible - equals to tsx=off command line parameter.
19148c2ecf20Sopenharmony_ci
19158c2ecf20Sopenharmony_ciconfig X86_INTEL_TSX_MODE_ON
19168c2ecf20Sopenharmony_ci	bool "on"
19178c2ecf20Sopenharmony_ci	help
19188c2ecf20Sopenharmony_ci	  TSX is always enabled on TSX capable HW - equals the tsx=on command
19198c2ecf20Sopenharmony_ci	  line parameter.
19208c2ecf20Sopenharmony_ci
19218c2ecf20Sopenharmony_ciconfig X86_INTEL_TSX_MODE_AUTO
19228c2ecf20Sopenharmony_ci	bool "auto"
19238c2ecf20Sopenharmony_ci	help
19248c2ecf20Sopenharmony_ci	  TSX is enabled on TSX capable HW that is believed to be safe against
19258c2ecf20Sopenharmony_ci	  side channel attacks- equals the tsx=auto command line parameter.
19268c2ecf20Sopenharmony_ciendchoice
19278c2ecf20Sopenharmony_ci
19288c2ecf20Sopenharmony_ciconfig EFI
19298c2ecf20Sopenharmony_ci	bool "EFI runtime service support"
19308c2ecf20Sopenharmony_ci	depends on ACPI
19318c2ecf20Sopenharmony_ci	select UCS2_STRING
19328c2ecf20Sopenharmony_ci	select EFI_RUNTIME_WRAPPERS
19338c2ecf20Sopenharmony_ci	select ARCH_USE_MEMREMAP_PROT
19348c2ecf20Sopenharmony_ci	help
19358c2ecf20Sopenharmony_ci	  This enables the kernel to use EFI runtime services that are
19368c2ecf20Sopenharmony_ci	  available (such as the EFI variable services).
19378c2ecf20Sopenharmony_ci
19388c2ecf20Sopenharmony_ci	  This option is only useful on systems that have EFI firmware.
19398c2ecf20Sopenharmony_ci	  In addition, you should use the latest ELILO loader available
19408c2ecf20Sopenharmony_ci	  at <http://elilo.sourceforge.net> in order to take advantage
19418c2ecf20Sopenharmony_ci	  of EFI runtime services. However, even with this option, the
19428c2ecf20Sopenharmony_ci	  resultant kernel should continue to boot on existing non-EFI
19438c2ecf20Sopenharmony_ci	  platforms.
19448c2ecf20Sopenharmony_ci
19458c2ecf20Sopenharmony_ciconfig EFI_STUB
19468c2ecf20Sopenharmony_ci	bool "EFI stub support"
19478c2ecf20Sopenharmony_ci	depends on EFI && !X86_USE_3DNOW
19488c2ecf20Sopenharmony_ci	select RELOCATABLE
19498c2ecf20Sopenharmony_ci	help
19508c2ecf20Sopenharmony_ci	  This kernel feature allows a bzImage to be loaded directly
19518c2ecf20Sopenharmony_ci	  by EFI firmware without the use of a bootloader.
19528c2ecf20Sopenharmony_ci
19538c2ecf20Sopenharmony_ci	  See Documentation/admin-guide/efi-stub.rst for more information.
19548c2ecf20Sopenharmony_ci
19558c2ecf20Sopenharmony_ciconfig EFI_MIXED
19568c2ecf20Sopenharmony_ci	bool "EFI mixed-mode support"
19578c2ecf20Sopenharmony_ci	depends on EFI_STUB && X86_64
19588c2ecf20Sopenharmony_ci	help
19598c2ecf20Sopenharmony_ci	   Enabling this feature allows a 64-bit kernel to be booted
19608c2ecf20Sopenharmony_ci	   on a 32-bit firmware, provided that your CPU supports 64-bit
19618c2ecf20Sopenharmony_ci	   mode.
19628c2ecf20Sopenharmony_ci
19638c2ecf20Sopenharmony_ci	   Note that it is not possible to boot a mixed-mode enabled
19648c2ecf20Sopenharmony_ci	   kernel via the EFI boot stub - a bootloader that supports
19658c2ecf20Sopenharmony_ci	   the EFI handover protocol must be used.
19668c2ecf20Sopenharmony_ci
19678c2ecf20Sopenharmony_ci	   If unsure, say N.
19688c2ecf20Sopenharmony_ci
19698c2ecf20Sopenharmony_cisource "kernel/Kconfig.hz"
19708c2ecf20Sopenharmony_ci
19718c2ecf20Sopenharmony_ciconfig KEXEC
19728c2ecf20Sopenharmony_ci	bool "kexec system call"
19738c2ecf20Sopenharmony_ci	select KEXEC_CORE
19748c2ecf20Sopenharmony_ci	help
19758c2ecf20Sopenharmony_ci	  kexec is a system call that implements the ability to shutdown your
19768c2ecf20Sopenharmony_ci	  current kernel, and to start another kernel.  It is like a reboot
19778c2ecf20Sopenharmony_ci	  but it is independent of the system firmware.   And like a reboot
19788c2ecf20Sopenharmony_ci	  you can start any kernel with it, not just Linux.
19798c2ecf20Sopenharmony_ci
19808c2ecf20Sopenharmony_ci	  The name comes from the similarity to the exec system call.
19818c2ecf20Sopenharmony_ci
19828c2ecf20Sopenharmony_ci	  It is an ongoing process to be certain the hardware in a machine
19838c2ecf20Sopenharmony_ci	  is properly shutdown, so do not be surprised if this code does not
19848c2ecf20Sopenharmony_ci	  initially work for you.  As of this writing the exact hardware
19858c2ecf20Sopenharmony_ci	  interface is strongly in flux, so no good recommendation can be
19868c2ecf20Sopenharmony_ci	  made.
19878c2ecf20Sopenharmony_ci
19888c2ecf20Sopenharmony_ciconfig KEXEC_FILE
19898c2ecf20Sopenharmony_ci	bool "kexec file based system call"
19908c2ecf20Sopenharmony_ci	select KEXEC_CORE
19918c2ecf20Sopenharmony_ci	select BUILD_BIN2C
19928c2ecf20Sopenharmony_ci	depends on X86_64
19938c2ecf20Sopenharmony_ci	depends on CRYPTO=y
19948c2ecf20Sopenharmony_ci	depends on CRYPTO_SHA256=y
19958c2ecf20Sopenharmony_ci	help
19968c2ecf20Sopenharmony_ci	  This is new version of kexec system call. This system call is
19978c2ecf20Sopenharmony_ci	  file based and takes file descriptors as system call argument
19988c2ecf20Sopenharmony_ci	  for kernel and initramfs as opposed to list of segments as
19998c2ecf20Sopenharmony_ci	  accepted by previous system call.
20008c2ecf20Sopenharmony_ci
20018c2ecf20Sopenharmony_ciconfig ARCH_HAS_KEXEC_PURGATORY
20028c2ecf20Sopenharmony_ci	def_bool KEXEC_FILE
20038c2ecf20Sopenharmony_ci
20048c2ecf20Sopenharmony_ciconfig KEXEC_SIG
20058c2ecf20Sopenharmony_ci	bool "Verify kernel signature during kexec_file_load() syscall"
20068c2ecf20Sopenharmony_ci	depends on KEXEC_FILE
20078c2ecf20Sopenharmony_ci	help
20088c2ecf20Sopenharmony_ci
20098c2ecf20Sopenharmony_ci	  This option makes the kexec_file_load() syscall check for a valid
20108c2ecf20Sopenharmony_ci	  signature of the kernel image.  The image can still be loaded without
20118c2ecf20Sopenharmony_ci	  a valid signature unless you also enable KEXEC_SIG_FORCE, though if
20128c2ecf20Sopenharmony_ci	  there's a signature that we can check, then it must be valid.
20138c2ecf20Sopenharmony_ci
20148c2ecf20Sopenharmony_ci	  In addition to this option, you need to enable signature
20158c2ecf20Sopenharmony_ci	  verification for the corresponding kernel image type being
20168c2ecf20Sopenharmony_ci	  loaded in order for this to work.
20178c2ecf20Sopenharmony_ci
20188c2ecf20Sopenharmony_ciconfig KEXEC_SIG_FORCE
20198c2ecf20Sopenharmony_ci	bool "Require a valid signature in kexec_file_load() syscall"
20208c2ecf20Sopenharmony_ci	depends on KEXEC_SIG
20218c2ecf20Sopenharmony_ci	help
20228c2ecf20Sopenharmony_ci	  This option makes kernel signature verification mandatory for
20238c2ecf20Sopenharmony_ci	  the kexec_file_load() syscall.
20248c2ecf20Sopenharmony_ci
20258c2ecf20Sopenharmony_ciconfig KEXEC_BZIMAGE_VERIFY_SIG
20268c2ecf20Sopenharmony_ci	bool "Enable bzImage signature verification support"
20278c2ecf20Sopenharmony_ci	depends on KEXEC_SIG
20288c2ecf20Sopenharmony_ci	depends on SIGNED_PE_FILE_VERIFICATION
20298c2ecf20Sopenharmony_ci	select SYSTEM_TRUSTED_KEYRING
20308c2ecf20Sopenharmony_ci	help
20318c2ecf20Sopenharmony_ci	  Enable bzImage signature verification support.
20328c2ecf20Sopenharmony_ci
20338c2ecf20Sopenharmony_ciconfig CRASH_DUMP
20348c2ecf20Sopenharmony_ci	bool "kernel crash dumps"
20358c2ecf20Sopenharmony_ci	depends on X86_64 || (X86_32 && HIGHMEM)
20368c2ecf20Sopenharmony_ci	help
20378c2ecf20Sopenharmony_ci	  Generate crash dump after being started by kexec.
20388c2ecf20Sopenharmony_ci	  This should be normally only set in special crash dump kernels
20398c2ecf20Sopenharmony_ci	  which are loaded in the main kernel with kexec-tools into
20408c2ecf20Sopenharmony_ci	  a specially reserved region and then later executed after
20418c2ecf20Sopenharmony_ci	  a crash by kdump/kexec. The crash dump kernel must be compiled
20428c2ecf20Sopenharmony_ci	  to a memory address not used by the main kernel or BIOS using
20438c2ecf20Sopenharmony_ci	  PHYSICAL_START, or it must be built as a relocatable image
20448c2ecf20Sopenharmony_ci	  (CONFIG_RELOCATABLE=y).
20458c2ecf20Sopenharmony_ci	  For more details see Documentation/admin-guide/kdump/kdump.rst
20468c2ecf20Sopenharmony_ci
20478c2ecf20Sopenharmony_ciconfig KEXEC_JUMP
20488c2ecf20Sopenharmony_ci	bool "kexec jump"
20498c2ecf20Sopenharmony_ci	depends on KEXEC && HIBERNATION
20508c2ecf20Sopenharmony_ci	help
20518c2ecf20Sopenharmony_ci	  Jump between original kernel and kexeced kernel and invoke
20528c2ecf20Sopenharmony_ci	  code in physical address mode via KEXEC
20538c2ecf20Sopenharmony_ci
20548c2ecf20Sopenharmony_ciconfig PHYSICAL_START
20558c2ecf20Sopenharmony_ci	hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
20568c2ecf20Sopenharmony_ci	default "0x1000000"
20578c2ecf20Sopenharmony_ci	help
20588c2ecf20Sopenharmony_ci	  This gives the physical address where the kernel is loaded.
20598c2ecf20Sopenharmony_ci
20608c2ecf20Sopenharmony_ci	  If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
20618c2ecf20Sopenharmony_ci	  bzImage will decompress itself to above physical address and
20628c2ecf20Sopenharmony_ci	  run from there. Otherwise, bzImage will run from the address where
20638c2ecf20Sopenharmony_ci	  it has been loaded by the boot loader and will ignore above physical
20648c2ecf20Sopenharmony_ci	  address.
20658c2ecf20Sopenharmony_ci
20668c2ecf20Sopenharmony_ci	  In normal kdump cases one does not have to set/change this option
20678c2ecf20Sopenharmony_ci	  as now bzImage can be compiled as a completely relocatable image
20688c2ecf20Sopenharmony_ci	  (CONFIG_RELOCATABLE=y) and be used to load and run from a different
20698c2ecf20Sopenharmony_ci	  address. This option is mainly useful for the folks who don't want
20708c2ecf20Sopenharmony_ci	  to use a bzImage for capturing the crash dump and want to use a
20718c2ecf20Sopenharmony_ci	  vmlinux instead. vmlinux is not relocatable hence a kernel needs
20728c2ecf20Sopenharmony_ci	  to be specifically compiled to run from a specific memory area
20738c2ecf20Sopenharmony_ci	  (normally a reserved region) and this option comes handy.
20748c2ecf20Sopenharmony_ci
20758c2ecf20Sopenharmony_ci	  So if you are using bzImage for capturing the crash dump,
20768c2ecf20Sopenharmony_ci	  leave the value here unchanged to 0x1000000 and set
20778c2ecf20Sopenharmony_ci	  CONFIG_RELOCATABLE=y.  Otherwise if you plan to use vmlinux
20788c2ecf20Sopenharmony_ci	  for capturing the crash dump change this value to start of
20798c2ecf20Sopenharmony_ci	  the reserved region.  In other words, it can be set based on
20808c2ecf20Sopenharmony_ci	  the "X" value as specified in the "crashkernel=YM@XM"
20818c2ecf20Sopenharmony_ci	  command line boot parameter passed to the panic-ed
20828c2ecf20Sopenharmony_ci	  kernel. Please take a look at Documentation/admin-guide/kdump/kdump.rst
20838c2ecf20Sopenharmony_ci	  for more details about crash dumps.
20848c2ecf20Sopenharmony_ci
20858c2ecf20Sopenharmony_ci	  Usage of bzImage for capturing the crash dump is recommended as
20868c2ecf20Sopenharmony_ci	  one does not have to build two kernels. Same kernel can be used
20878c2ecf20Sopenharmony_ci	  as production kernel and capture kernel. Above option should have
20888c2ecf20Sopenharmony_ci	  gone away after relocatable bzImage support is introduced. But it
20898c2ecf20Sopenharmony_ci	  is present because there are users out there who continue to use
20908c2ecf20Sopenharmony_ci	  vmlinux for dump capture. This option should go away down the
20918c2ecf20Sopenharmony_ci	  line.
20928c2ecf20Sopenharmony_ci
20938c2ecf20Sopenharmony_ci	  Don't change this unless you know what you are doing.
20948c2ecf20Sopenharmony_ci
20958c2ecf20Sopenharmony_ciconfig RELOCATABLE
20968c2ecf20Sopenharmony_ci	bool "Build a relocatable kernel"
20978c2ecf20Sopenharmony_ci	default y
20988c2ecf20Sopenharmony_ci	help
20998c2ecf20Sopenharmony_ci	  This builds a kernel image that retains relocation information
21008c2ecf20Sopenharmony_ci	  so it can be loaded someplace besides the default 1MB.
21018c2ecf20Sopenharmony_ci	  The relocations tend to make the kernel binary about 10% larger,
21028c2ecf20Sopenharmony_ci	  but are discarded at runtime.
21038c2ecf20Sopenharmony_ci
21048c2ecf20Sopenharmony_ci	  One use is for the kexec on panic case where the recovery kernel
21058c2ecf20Sopenharmony_ci	  must live at a different physical address than the primary
21068c2ecf20Sopenharmony_ci	  kernel.
21078c2ecf20Sopenharmony_ci
21088c2ecf20Sopenharmony_ci	  Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
21098c2ecf20Sopenharmony_ci	  it has been loaded at and the compile time physical address
21108c2ecf20Sopenharmony_ci	  (CONFIG_PHYSICAL_START) is used as the minimum location.
21118c2ecf20Sopenharmony_ci
21128c2ecf20Sopenharmony_ciconfig RANDOMIZE_BASE
21138c2ecf20Sopenharmony_ci	bool "Randomize the address of the kernel image (KASLR)"
21148c2ecf20Sopenharmony_ci	depends on RELOCATABLE
21158c2ecf20Sopenharmony_ci	default y
21168c2ecf20Sopenharmony_ci	help
21178c2ecf20Sopenharmony_ci	  In support of Kernel Address Space Layout Randomization (KASLR),
21188c2ecf20Sopenharmony_ci	  this randomizes the physical address at which the kernel image
21198c2ecf20Sopenharmony_ci	  is decompressed and the virtual address where the kernel
21208c2ecf20Sopenharmony_ci	  image is mapped, as a security feature that deters exploit
21218c2ecf20Sopenharmony_ci	  attempts relying on knowledge of the location of kernel
21228c2ecf20Sopenharmony_ci	  code internals.
21238c2ecf20Sopenharmony_ci
21248c2ecf20Sopenharmony_ci	  On 64-bit, the kernel physical and virtual addresses are
21258c2ecf20Sopenharmony_ci	  randomized separately. The physical address will be anywhere
21268c2ecf20Sopenharmony_ci	  between 16MB and the top of physical memory (up to 64TB). The
21278c2ecf20Sopenharmony_ci	  virtual address will be randomized from 16MB up to 1GB (9 bits
21288c2ecf20Sopenharmony_ci	  of entropy). Note that this also reduces the memory space
21298c2ecf20Sopenharmony_ci	  available to kernel modules from 1.5GB to 1GB.
21308c2ecf20Sopenharmony_ci
21318c2ecf20Sopenharmony_ci	  On 32-bit, the kernel physical and virtual addresses are
21328c2ecf20Sopenharmony_ci	  randomized together. They will be randomized from 16MB up to
21338c2ecf20Sopenharmony_ci	  512MB (8 bits of entropy).
21348c2ecf20Sopenharmony_ci
21358c2ecf20Sopenharmony_ci	  Entropy is generated using the RDRAND instruction if it is
21368c2ecf20Sopenharmony_ci	  supported. If RDTSC is supported, its value is mixed into
21378c2ecf20Sopenharmony_ci	  the entropy pool as well. If neither RDRAND nor RDTSC are
21388c2ecf20Sopenharmony_ci	  supported, then entropy is read from the i8254 timer. The
21398c2ecf20Sopenharmony_ci	  usable entropy is limited by the kernel being built using
21408c2ecf20Sopenharmony_ci	  2GB addressing, and that PHYSICAL_ALIGN must be at a
21418c2ecf20Sopenharmony_ci	  minimum of 2MB. As a result, only 10 bits of entropy are
21428c2ecf20Sopenharmony_ci	  theoretically possible, but the implementations are further
21438c2ecf20Sopenharmony_ci	  limited due to memory layouts.
21448c2ecf20Sopenharmony_ci
21458c2ecf20Sopenharmony_ci	  If unsure, say Y.
21468c2ecf20Sopenharmony_ci
21478c2ecf20Sopenharmony_ci# Relocation on x86 needs some additional build support
21488c2ecf20Sopenharmony_ciconfig X86_NEED_RELOCS
21498c2ecf20Sopenharmony_ci	def_bool y
21508c2ecf20Sopenharmony_ci	depends on RANDOMIZE_BASE || (X86_32 && RELOCATABLE)
21518c2ecf20Sopenharmony_ci
21528c2ecf20Sopenharmony_ciconfig PHYSICAL_ALIGN
21538c2ecf20Sopenharmony_ci	hex "Alignment value to which kernel should be aligned"
21548c2ecf20Sopenharmony_ci	default "0x200000"
21558c2ecf20Sopenharmony_ci	range 0x2000 0x1000000 if X86_32
21568c2ecf20Sopenharmony_ci	range 0x200000 0x1000000 if X86_64
21578c2ecf20Sopenharmony_ci	help
21588c2ecf20Sopenharmony_ci	  This value puts the alignment restrictions on physical address
21598c2ecf20Sopenharmony_ci	  where kernel is loaded and run from. Kernel is compiled for an
21608c2ecf20Sopenharmony_ci	  address which meets above alignment restriction.
21618c2ecf20Sopenharmony_ci
21628c2ecf20Sopenharmony_ci	  If bootloader loads the kernel at a non-aligned address and
21638c2ecf20Sopenharmony_ci	  CONFIG_RELOCATABLE is set, kernel will move itself to nearest
21648c2ecf20Sopenharmony_ci	  address aligned to above value and run from there.
21658c2ecf20Sopenharmony_ci
21668c2ecf20Sopenharmony_ci	  If bootloader loads the kernel at a non-aligned address and
21678c2ecf20Sopenharmony_ci	  CONFIG_RELOCATABLE is not set, kernel will ignore the run time
21688c2ecf20Sopenharmony_ci	  load address and decompress itself to the address it has been
21698c2ecf20Sopenharmony_ci	  compiled for and run from there. The address for which kernel is
21708c2ecf20Sopenharmony_ci	  compiled already meets above alignment restrictions. Hence the
21718c2ecf20Sopenharmony_ci	  end result is that kernel runs from a physical address meeting
21728c2ecf20Sopenharmony_ci	  above alignment restrictions.
21738c2ecf20Sopenharmony_ci
21748c2ecf20Sopenharmony_ci	  On 32-bit this value must be a multiple of 0x2000. On 64-bit
21758c2ecf20Sopenharmony_ci	  this value must be a multiple of 0x200000.
21768c2ecf20Sopenharmony_ci
21778c2ecf20Sopenharmony_ci	  Don't change this unless you know what you are doing.
21788c2ecf20Sopenharmony_ci
21798c2ecf20Sopenharmony_ciconfig DYNAMIC_MEMORY_LAYOUT
21808c2ecf20Sopenharmony_ci	bool
21818c2ecf20Sopenharmony_ci	help
21828c2ecf20Sopenharmony_ci	  This option makes base addresses of vmalloc and vmemmap as well as
21838c2ecf20Sopenharmony_ci	  __PAGE_OFFSET movable during boot.
21848c2ecf20Sopenharmony_ci
21858c2ecf20Sopenharmony_ciconfig RANDOMIZE_MEMORY
21868c2ecf20Sopenharmony_ci	bool "Randomize the kernel memory sections"
21878c2ecf20Sopenharmony_ci	depends on X86_64
21888c2ecf20Sopenharmony_ci	depends on RANDOMIZE_BASE
21898c2ecf20Sopenharmony_ci	select DYNAMIC_MEMORY_LAYOUT
21908c2ecf20Sopenharmony_ci	default RANDOMIZE_BASE
21918c2ecf20Sopenharmony_ci	help
21928c2ecf20Sopenharmony_ci	   Randomizes the base virtual address of kernel memory sections
21938c2ecf20Sopenharmony_ci	   (physical memory mapping, vmalloc & vmemmap). This security feature
21948c2ecf20Sopenharmony_ci	   makes exploits relying on predictable memory locations less reliable.
21958c2ecf20Sopenharmony_ci
21968c2ecf20Sopenharmony_ci	   The order of allocations remains unchanged. Entropy is generated in
21978c2ecf20Sopenharmony_ci	   the same way as RANDOMIZE_BASE. Current implementation in the optimal
21988c2ecf20Sopenharmony_ci	   configuration have in average 30,000 different possible virtual
21998c2ecf20Sopenharmony_ci	   addresses for each memory section.
22008c2ecf20Sopenharmony_ci
22018c2ecf20Sopenharmony_ci	   If unsure, say Y.
22028c2ecf20Sopenharmony_ci
22038c2ecf20Sopenharmony_ciconfig RANDOMIZE_MEMORY_PHYSICAL_PADDING
22048c2ecf20Sopenharmony_ci	hex "Physical memory mapping padding" if EXPERT
22058c2ecf20Sopenharmony_ci	depends on RANDOMIZE_MEMORY
22068c2ecf20Sopenharmony_ci	default "0xa" if MEMORY_HOTPLUG
22078c2ecf20Sopenharmony_ci	default "0x0"
22088c2ecf20Sopenharmony_ci	range 0x1 0x40 if MEMORY_HOTPLUG
22098c2ecf20Sopenharmony_ci	range 0x0 0x40
22108c2ecf20Sopenharmony_ci	help
22118c2ecf20Sopenharmony_ci	   Define the padding in terabytes added to the existing physical
22128c2ecf20Sopenharmony_ci	   memory size during kernel memory randomization. It is useful
22138c2ecf20Sopenharmony_ci	   for memory hotplug support but reduces the entropy available for
22148c2ecf20Sopenharmony_ci	   address randomization.
22158c2ecf20Sopenharmony_ci
22168c2ecf20Sopenharmony_ci	   If unsure, leave at the default value.
22178c2ecf20Sopenharmony_ci
22188c2ecf20Sopenharmony_ciconfig HOTPLUG_CPU
22198c2ecf20Sopenharmony_ci	def_bool y
22208c2ecf20Sopenharmony_ci	depends on SMP
22218c2ecf20Sopenharmony_ci
22228c2ecf20Sopenharmony_ciconfig BOOTPARAM_HOTPLUG_CPU0
22238c2ecf20Sopenharmony_ci	bool "Set default setting of cpu0_hotpluggable"
22248c2ecf20Sopenharmony_ci	depends on HOTPLUG_CPU
22258c2ecf20Sopenharmony_ci	help
22268c2ecf20Sopenharmony_ci	  Set whether default state of cpu0_hotpluggable is on or off.
22278c2ecf20Sopenharmony_ci
22288c2ecf20Sopenharmony_ci	  Say Y here to enable CPU0 hotplug by default. If this switch
22298c2ecf20Sopenharmony_ci	  is turned on, there is no need to give cpu0_hotplug kernel
22308c2ecf20Sopenharmony_ci	  parameter and the CPU0 hotplug feature is enabled by default.
22318c2ecf20Sopenharmony_ci
22328c2ecf20Sopenharmony_ci	  Please note: there are two known CPU0 dependencies if you want
22338c2ecf20Sopenharmony_ci	  to enable the CPU0 hotplug feature either by this switch or by
22348c2ecf20Sopenharmony_ci	  cpu0_hotplug kernel parameter.
22358c2ecf20Sopenharmony_ci
22368c2ecf20Sopenharmony_ci	  First, resume from hibernate or suspend always starts from CPU0.
22378c2ecf20Sopenharmony_ci	  So hibernate and suspend are prevented if CPU0 is offline.
22388c2ecf20Sopenharmony_ci
22398c2ecf20Sopenharmony_ci	  Second dependency is PIC interrupts always go to CPU0. CPU0 can not
22408c2ecf20Sopenharmony_ci	  offline if any interrupt can not migrate out of CPU0. There may
22418c2ecf20Sopenharmony_ci	  be other CPU0 dependencies.
22428c2ecf20Sopenharmony_ci
22438c2ecf20Sopenharmony_ci	  Please make sure the dependencies are under your control before
22448c2ecf20Sopenharmony_ci	  you enable this feature.
22458c2ecf20Sopenharmony_ci
22468c2ecf20Sopenharmony_ci	  Say N if you don't want to enable CPU0 hotplug feature by default.
22478c2ecf20Sopenharmony_ci	  You still can enable the CPU0 hotplug feature at boot by kernel
22488c2ecf20Sopenharmony_ci	  parameter cpu0_hotplug.
22498c2ecf20Sopenharmony_ci
22508c2ecf20Sopenharmony_ciconfig DEBUG_HOTPLUG_CPU0
22518c2ecf20Sopenharmony_ci	def_bool n
22528c2ecf20Sopenharmony_ci	prompt "Debug CPU0 hotplug"
22538c2ecf20Sopenharmony_ci	depends on HOTPLUG_CPU
22548c2ecf20Sopenharmony_ci	help
22558c2ecf20Sopenharmony_ci	  Enabling this option offlines CPU0 (if CPU0 can be offlined) as
22568c2ecf20Sopenharmony_ci	  soon as possible and boots up userspace with CPU0 offlined. User
22578c2ecf20Sopenharmony_ci	  can online CPU0 back after boot time.
22588c2ecf20Sopenharmony_ci
22598c2ecf20Sopenharmony_ci	  To debug CPU0 hotplug, you need to enable CPU0 offline/online
22608c2ecf20Sopenharmony_ci	  feature by either turning on CONFIG_BOOTPARAM_HOTPLUG_CPU0 during
22618c2ecf20Sopenharmony_ci	  compilation or giving cpu0_hotplug kernel parameter at boot.
22628c2ecf20Sopenharmony_ci
22638c2ecf20Sopenharmony_ci	  If unsure, say N.
22648c2ecf20Sopenharmony_ci
22658c2ecf20Sopenharmony_ciconfig COMPAT_VDSO
22668c2ecf20Sopenharmony_ci	def_bool n
22678c2ecf20Sopenharmony_ci	prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
22688c2ecf20Sopenharmony_ci	depends on COMPAT_32
22698c2ecf20Sopenharmony_ci	help
22708c2ecf20Sopenharmony_ci	  Certain buggy versions of glibc will crash if they are
22718c2ecf20Sopenharmony_ci	  presented with a 32-bit vDSO that is not mapped at the address
22728c2ecf20Sopenharmony_ci	  indicated in its segment table.
22738c2ecf20Sopenharmony_ci
22748c2ecf20Sopenharmony_ci	  The bug was introduced by f866314b89d56845f55e6f365e18b31ec978ec3a
22758c2ecf20Sopenharmony_ci	  and fixed by 3b3ddb4f7db98ec9e912ccdf54d35df4aa30e04a and
22768c2ecf20Sopenharmony_ci	  49ad572a70b8aeb91e57483a11dd1b77e31c4468.  Glibc 2.3.3 is
22778c2ecf20Sopenharmony_ci	  the only released version with the bug, but OpenSUSE 9
22788c2ecf20Sopenharmony_ci	  contains a buggy "glibc 2.3.2".
22798c2ecf20Sopenharmony_ci
22808c2ecf20Sopenharmony_ci	  The symptom of the bug is that everything crashes on startup, saying:
22818c2ecf20Sopenharmony_ci	  dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!
22828c2ecf20Sopenharmony_ci
22838c2ecf20Sopenharmony_ci	  Saying Y here changes the default value of the vdso32 boot
22848c2ecf20Sopenharmony_ci	  option from 1 to 0, which turns off the 32-bit vDSO entirely.
22858c2ecf20Sopenharmony_ci	  This works around the glibc bug but hurts performance.
22868c2ecf20Sopenharmony_ci
22878c2ecf20Sopenharmony_ci	  If unsure, say N: if you are compiling your own kernel, you
22888c2ecf20Sopenharmony_ci	  are unlikely to be using a buggy version of glibc.
22898c2ecf20Sopenharmony_ci
22908c2ecf20Sopenharmony_cichoice
22918c2ecf20Sopenharmony_ci	prompt "vsyscall table for legacy applications"
22928c2ecf20Sopenharmony_ci	depends on X86_64
22938c2ecf20Sopenharmony_ci	default LEGACY_VSYSCALL_XONLY
22948c2ecf20Sopenharmony_ci	help
22958c2ecf20Sopenharmony_ci	  Legacy user code that does not know how to find the vDSO expects
22968c2ecf20Sopenharmony_ci	  to be able to issue three syscalls by calling fixed addresses in
22978c2ecf20Sopenharmony_ci	  kernel space. Since this location is not randomized with ASLR,
22988c2ecf20Sopenharmony_ci	  it can be used to assist security vulnerability exploitation.
22998c2ecf20Sopenharmony_ci
23008c2ecf20Sopenharmony_ci	  This setting can be changed at boot time via the kernel command
23018c2ecf20Sopenharmony_ci	  line parameter vsyscall=[emulate|xonly|none].
23028c2ecf20Sopenharmony_ci
23038c2ecf20Sopenharmony_ci	  On a system with recent enough glibc (2.14 or newer) and no
23048c2ecf20Sopenharmony_ci	  static binaries, you can say None without a performance penalty
23058c2ecf20Sopenharmony_ci	  to improve security.
23068c2ecf20Sopenharmony_ci
23078c2ecf20Sopenharmony_ci	  If unsure, select "Emulate execution only".
23088c2ecf20Sopenharmony_ci
23098c2ecf20Sopenharmony_ci	config LEGACY_VSYSCALL_EMULATE
23108c2ecf20Sopenharmony_ci		bool "Full emulation"
23118c2ecf20Sopenharmony_ci		help
23128c2ecf20Sopenharmony_ci		  The kernel traps and emulates calls into the fixed vsyscall
23138c2ecf20Sopenharmony_ci		  address mapping. This makes the mapping non-executable, but
23148c2ecf20Sopenharmony_ci		  it still contains readable known contents, which could be
23158c2ecf20Sopenharmony_ci		  used in certain rare security vulnerability exploits. This
23168c2ecf20Sopenharmony_ci		  configuration is recommended when using legacy userspace
23178c2ecf20Sopenharmony_ci		  that still uses vsyscalls along with legacy binary
23188c2ecf20Sopenharmony_ci		  instrumentation tools that require code to be readable.
23198c2ecf20Sopenharmony_ci
23208c2ecf20Sopenharmony_ci		  An example of this type of legacy userspace is running
23218c2ecf20Sopenharmony_ci		  Pin on an old binary that still uses vsyscalls.
23228c2ecf20Sopenharmony_ci
23238c2ecf20Sopenharmony_ci	config LEGACY_VSYSCALL_XONLY
23248c2ecf20Sopenharmony_ci		bool "Emulate execution only"
23258c2ecf20Sopenharmony_ci		help
23268c2ecf20Sopenharmony_ci		  The kernel traps and emulates calls into the fixed vsyscall
23278c2ecf20Sopenharmony_ci		  address mapping and does not allow reads.  This
23288c2ecf20Sopenharmony_ci		  configuration is recommended when userspace might use the
23298c2ecf20Sopenharmony_ci		  legacy vsyscall area but support for legacy binary
23308c2ecf20Sopenharmony_ci		  instrumentation of legacy code is not needed.  It mitigates
23318c2ecf20Sopenharmony_ci		  certain uses of the vsyscall area as an ASLR-bypassing
23328c2ecf20Sopenharmony_ci		  buffer.
23338c2ecf20Sopenharmony_ci
23348c2ecf20Sopenharmony_ci	config LEGACY_VSYSCALL_NONE
23358c2ecf20Sopenharmony_ci		bool "None"
23368c2ecf20Sopenharmony_ci		help
23378c2ecf20Sopenharmony_ci		  There will be no vsyscall mapping at all. This will
23388c2ecf20Sopenharmony_ci		  eliminate any risk of ASLR bypass due to the vsyscall
23398c2ecf20Sopenharmony_ci		  fixed address mapping. Attempts to use the vsyscalls
23408c2ecf20Sopenharmony_ci		  will be reported to dmesg, so that either old or
23418c2ecf20Sopenharmony_ci		  malicious userspace programs can be identified.
23428c2ecf20Sopenharmony_ci
23438c2ecf20Sopenharmony_ciendchoice
23448c2ecf20Sopenharmony_ci
23458c2ecf20Sopenharmony_ciconfig CMDLINE_BOOL
23468c2ecf20Sopenharmony_ci	bool "Built-in kernel command line"
23478c2ecf20Sopenharmony_ci	help
23488c2ecf20Sopenharmony_ci	  Allow for specifying boot arguments to the kernel at
23498c2ecf20Sopenharmony_ci	  build time.  On some systems (e.g. embedded ones), it is
23508c2ecf20Sopenharmony_ci	  necessary or convenient to provide some or all of the
23518c2ecf20Sopenharmony_ci	  kernel boot arguments with the kernel itself (that is,
23528c2ecf20Sopenharmony_ci	  to not rely on the boot loader to provide them.)
23538c2ecf20Sopenharmony_ci
23548c2ecf20Sopenharmony_ci	  To compile command line arguments into the kernel,
23558c2ecf20Sopenharmony_ci	  set this option to 'Y', then fill in the
23568c2ecf20Sopenharmony_ci	  boot arguments in CONFIG_CMDLINE.
23578c2ecf20Sopenharmony_ci
23588c2ecf20Sopenharmony_ci	  Systems with fully functional boot loaders (i.e. non-embedded)
23598c2ecf20Sopenharmony_ci	  should leave this option set to 'N'.
23608c2ecf20Sopenharmony_ci
23618c2ecf20Sopenharmony_ciconfig CMDLINE
23628c2ecf20Sopenharmony_ci	string "Built-in kernel command string"
23638c2ecf20Sopenharmony_ci	depends on CMDLINE_BOOL
23648c2ecf20Sopenharmony_ci	default ""
23658c2ecf20Sopenharmony_ci	help
23668c2ecf20Sopenharmony_ci	  Enter arguments here that should be compiled into the kernel
23678c2ecf20Sopenharmony_ci	  image and used at boot time.  If the boot loader provides a
23688c2ecf20Sopenharmony_ci	  command line at boot time, it is appended to this string to
23698c2ecf20Sopenharmony_ci	  form the full kernel command line, when the system boots.
23708c2ecf20Sopenharmony_ci
23718c2ecf20Sopenharmony_ci	  However, you can use the CONFIG_CMDLINE_OVERRIDE option to
23728c2ecf20Sopenharmony_ci	  change this behavior.
23738c2ecf20Sopenharmony_ci
23748c2ecf20Sopenharmony_ci	  In most cases, the command line (whether built-in or provided
23758c2ecf20Sopenharmony_ci	  by the boot loader) should specify the device for the root
23768c2ecf20Sopenharmony_ci	  file system.
23778c2ecf20Sopenharmony_ci
23788c2ecf20Sopenharmony_ciconfig CMDLINE_OVERRIDE
23798c2ecf20Sopenharmony_ci	bool "Built-in command line overrides boot loader arguments"
23808c2ecf20Sopenharmony_ci	depends on CMDLINE_BOOL && CMDLINE != ""
23818c2ecf20Sopenharmony_ci	help
23828c2ecf20Sopenharmony_ci	  Set this option to 'Y' to have the kernel ignore the boot loader
23838c2ecf20Sopenharmony_ci	  command line, and use ONLY the built-in command line.
23848c2ecf20Sopenharmony_ci
23858c2ecf20Sopenharmony_ci	  This is used to work around broken boot loaders.  This should
23868c2ecf20Sopenharmony_ci	  be set to 'N' under normal conditions.
23878c2ecf20Sopenharmony_ci
23888c2ecf20Sopenharmony_ciconfig MODIFY_LDT_SYSCALL
23898c2ecf20Sopenharmony_ci	bool "Enable the LDT (local descriptor table)" if EXPERT
23908c2ecf20Sopenharmony_ci	default y
23918c2ecf20Sopenharmony_ci	help
23928c2ecf20Sopenharmony_ci	  Linux can allow user programs to install a per-process x86
23938c2ecf20Sopenharmony_ci	  Local Descriptor Table (LDT) using the modify_ldt(2) system
23948c2ecf20Sopenharmony_ci	  call.  This is required to run 16-bit or segmented code such as
23958c2ecf20Sopenharmony_ci	  DOSEMU or some Wine programs.  It is also used by some very old
23968c2ecf20Sopenharmony_ci	  threading libraries.
23978c2ecf20Sopenharmony_ci
23988c2ecf20Sopenharmony_ci	  Enabling this feature adds a small amount of overhead to
23998c2ecf20Sopenharmony_ci	  context switches and increases the low-level kernel attack
24008c2ecf20Sopenharmony_ci	  surface.  Disabling it removes the modify_ldt(2) system call.
24018c2ecf20Sopenharmony_ci
24028c2ecf20Sopenharmony_ci	  Saying 'N' here may make sense for embedded or server kernels.
24038c2ecf20Sopenharmony_ci
24048c2ecf20Sopenharmony_cisource "kernel/livepatch/Kconfig"
24058c2ecf20Sopenharmony_ci
24068c2ecf20Sopenharmony_ciendmenu
24078c2ecf20Sopenharmony_ci
24088c2ecf20Sopenharmony_ciconfig CC_HAS_SLS
24098c2ecf20Sopenharmony_ci	def_bool $(cc-option,-mharden-sls=all)
24108c2ecf20Sopenharmony_ci
24118c2ecf20Sopenharmony_ciconfig CC_HAS_RETURN_THUNK
24128c2ecf20Sopenharmony_ci	def_bool $(cc-option,-mfunction-return=thunk-extern)
24138c2ecf20Sopenharmony_ci
24148c2ecf20Sopenharmony_cimenuconfig SPECULATION_MITIGATIONS
24158c2ecf20Sopenharmony_ci	bool "Mitigations for speculative execution vulnerabilities"
24168c2ecf20Sopenharmony_ci	default y
24178c2ecf20Sopenharmony_ci	help
24188c2ecf20Sopenharmony_ci	  Say Y here to enable options which enable mitigations for
24198c2ecf20Sopenharmony_ci	  speculative execution hardware vulnerabilities.
24208c2ecf20Sopenharmony_ci
24218c2ecf20Sopenharmony_ci	  If you say N, all mitigations will be disabled. You really
24228c2ecf20Sopenharmony_ci	  should know what you are doing to say so.
24238c2ecf20Sopenharmony_ci
24248c2ecf20Sopenharmony_ciif SPECULATION_MITIGATIONS
24258c2ecf20Sopenharmony_ci
24268c2ecf20Sopenharmony_ciconfig PAGE_TABLE_ISOLATION
24278c2ecf20Sopenharmony_ci	bool "Remove the kernel mapping in user mode"
24288c2ecf20Sopenharmony_ci	default y
24298c2ecf20Sopenharmony_ci	depends on (X86_64 || X86_PAE)
24308c2ecf20Sopenharmony_ci	help
24318c2ecf20Sopenharmony_ci	  This feature reduces the number of hardware side channels by
24328c2ecf20Sopenharmony_ci	  ensuring that the majority of kernel addresses are not mapped
24338c2ecf20Sopenharmony_ci	  into userspace.
24348c2ecf20Sopenharmony_ci
24358c2ecf20Sopenharmony_ci	  See Documentation/x86/pti.rst for more details.
24368c2ecf20Sopenharmony_ci
24378c2ecf20Sopenharmony_ciconfig RETPOLINE
24388c2ecf20Sopenharmony_ci	bool "Avoid speculative indirect branches in kernel"
24398c2ecf20Sopenharmony_ci	default y
24408c2ecf20Sopenharmony_ci	help
24418c2ecf20Sopenharmony_ci	  Compile kernel with the retpoline compiler options to guard against
24428c2ecf20Sopenharmony_ci	  kernel-to-user data leaks by avoiding speculative indirect
24438c2ecf20Sopenharmony_ci	  branches. Requires a compiler with -mindirect-branch=thunk-extern
24448c2ecf20Sopenharmony_ci	  support for full protection. The kernel may run slower.
24458c2ecf20Sopenharmony_ci
24468c2ecf20Sopenharmony_ciconfig RETHUNK
24478c2ecf20Sopenharmony_ci	bool "Enable return-thunks"
24488c2ecf20Sopenharmony_ci	depends on RETPOLINE && CC_HAS_RETURN_THUNK
24498c2ecf20Sopenharmony_ci	default y if X86_64
24508c2ecf20Sopenharmony_ci	help
24518c2ecf20Sopenharmony_ci	  Compile the kernel with the return-thunks compiler option to guard
24528c2ecf20Sopenharmony_ci	  against kernel-to-user data leaks by avoiding return speculation.
24538c2ecf20Sopenharmony_ci	  Requires a compiler with -mfunction-return=thunk-extern
24548c2ecf20Sopenharmony_ci	  support for full protection. The kernel may run slower.
24558c2ecf20Sopenharmony_ci
24568c2ecf20Sopenharmony_ciconfig CPU_UNRET_ENTRY
24578c2ecf20Sopenharmony_ci	bool "Enable UNRET on kernel entry"
24588c2ecf20Sopenharmony_ci	depends on CPU_SUP_AMD && RETHUNK && X86_64
24598c2ecf20Sopenharmony_ci	default y
24608c2ecf20Sopenharmony_ci	help
24618c2ecf20Sopenharmony_ci	  Compile the kernel with support for the retbleed=unret mitigation.
24628c2ecf20Sopenharmony_ci
24638c2ecf20Sopenharmony_ciconfig CPU_IBPB_ENTRY
24648c2ecf20Sopenharmony_ci	bool "Enable IBPB on kernel entry"
24658c2ecf20Sopenharmony_ci	depends on CPU_SUP_AMD && X86_64
24668c2ecf20Sopenharmony_ci	default y
24678c2ecf20Sopenharmony_ci	help
24688c2ecf20Sopenharmony_ci	  Compile the kernel with support for the retbleed=ibpb mitigation.
24698c2ecf20Sopenharmony_ci
24708c2ecf20Sopenharmony_ciconfig CPU_IBRS_ENTRY
24718c2ecf20Sopenharmony_ci	bool "Enable IBRS on kernel entry"
24728c2ecf20Sopenharmony_ci	depends on CPU_SUP_INTEL && X86_64
24738c2ecf20Sopenharmony_ci	default y
24748c2ecf20Sopenharmony_ci	help
24758c2ecf20Sopenharmony_ci	  Compile the kernel with support for the spectre_v2=ibrs mitigation.
24768c2ecf20Sopenharmony_ci	  This mitigates both spectre_v2 and retbleed at great cost to
24778c2ecf20Sopenharmony_ci	  performance.
24788c2ecf20Sopenharmony_ci
24798c2ecf20Sopenharmony_ciconfig CPU_SRSO
24808c2ecf20Sopenharmony_ci	bool "Mitigate speculative RAS overflow on AMD"
24818c2ecf20Sopenharmony_ci	depends on CPU_SUP_AMD && X86_64 && RETHUNK
24828c2ecf20Sopenharmony_ci	default y
24838c2ecf20Sopenharmony_ci	help
24848c2ecf20Sopenharmony_ci	  Enable the SRSO mitigation needed on AMD Zen1-4 machines.
24858c2ecf20Sopenharmony_ci
24868c2ecf20Sopenharmony_ciconfig SLS
24878c2ecf20Sopenharmony_ci	bool "Mitigate Straight-Line-Speculation"
24888c2ecf20Sopenharmony_ci	depends on CC_HAS_SLS && X86_64
24898c2ecf20Sopenharmony_ci	default n
24908c2ecf20Sopenharmony_ci	help
24918c2ecf20Sopenharmony_ci	  Compile the kernel with straight-line-speculation options to guard
24928c2ecf20Sopenharmony_ci	  against straight line speculation. The kernel image might be slightly
24938c2ecf20Sopenharmony_ci	  larger.
24948c2ecf20Sopenharmony_ci
24958c2ecf20Sopenharmony_ciconfig GDS_FORCE_MITIGATION
24968c2ecf20Sopenharmony_ci	bool "Force GDS Mitigation"
24978c2ecf20Sopenharmony_ci	depends on CPU_SUP_INTEL
24988c2ecf20Sopenharmony_ci	default n
24998c2ecf20Sopenharmony_ci	help
25008c2ecf20Sopenharmony_ci	  Gather Data Sampling (GDS) is a hardware vulnerability which allows
25018c2ecf20Sopenharmony_ci	  unprivileged speculative access to data which was previously stored in
25028c2ecf20Sopenharmony_ci	  vector registers.
25038c2ecf20Sopenharmony_ci
25048c2ecf20Sopenharmony_ci	  This option is equivalent to setting gather_data_sampling=force on the
25058c2ecf20Sopenharmony_ci	  command line. The microcode mitigation is used if present, otherwise
25068c2ecf20Sopenharmony_ci	  AVX is disabled as a mitigation. On affected systems that are missing
25078c2ecf20Sopenharmony_ci	  the microcode any userspace code that unconditionally uses AVX will
25088c2ecf20Sopenharmony_ci	  break with this option set.
25098c2ecf20Sopenharmony_ci
25108c2ecf20Sopenharmony_ci	  Setting this option on systems not vulnerable to GDS has no effect.
25118c2ecf20Sopenharmony_ci
25128c2ecf20Sopenharmony_ci	  If in doubt, say N.
25138c2ecf20Sopenharmony_ci
25148c2ecf20Sopenharmony_ciconfig MITIGATION_RFDS
25158c2ecf20Sopenharmony_ci	bool "RFDS Mitigation"
25168c2ecf20Sopenharmony_ci	depends on CPU_SUP_INTEL
25178c2ecf20Sopenharmony_ci	default y
25188c2ecf20Sopenharmony_ci	help
25198c2ecf20Sopenharmony_ci	  Enable mitigation for Register File Data Sampling (RFDS) by default.
25208c2ecf20Sopenharmony_ci	  RFDS is a hardware vulnerability which affects Intel Atom CPUs. It
25218c2ecf20Sopenharmony_ci	  allows unprivileged speculative access to stale data previously
25228c2ecf20Sopenharmony_ci	  stored in floating point, vector and integer registers.
25238c2ecf20Sopenharmony_ci	  See also <file:Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst>
25248c2ecf20Sopenharmony_ci
25258c2ecf20Sopenharmony_ciendif
25268c2ecf20Sopenharmony_ci
25278c2ecf20Sopenharmony_ciconfig ARCH_HAS_ADD_PAGES
25288c2ecf20Sopenharmony_ci	def_bool y
25298c2ecf20Sopenharmony_ci	depends on X86_64 && ARCH_ENABLE_MEMORY_HOTPLUG
25308c2ecf20Sopenharmony_ci
25318c2ecf20Sopenharmony_ciconfig ARCH_ENABLE_MEMORY_HOTPLUG
25328c2ecf20Sopenharmony_ci	def_bool y
25338c2ecf20Sopenharmony_ci	depends on X86_64 || (X86_32 && HIGHMEM)
25348c2ecf20Sopenharmony_ci
25358c2ecf20Sopenharmony_ciconfig ARCH_ENABLE_MEMORY_HOTREMOVE
25368c2ecf20Sopenharmony_ci	def_bool y
25378c2ecf20Sopenharmony_ci	depends on MEMORY_HOTPLUG
25388c2ecf20Sopenharmony_ci
25398c2ecf20Sopenharmony_ciconfig USE_PERCPU_NUMA_NODE_ID
25408c2ecf20Sopenharmony_ci	def_bool y
25418c2ecf20Sopenharmony_ci	depends on NUMA
25428c2ecf20Sopenharmony_ci
25438c2ecf20Sopenharmony_ciconfig ARCH_ENABLE_SPLIT_PMD_PTLOCK
25448c2ecf20Sopenharmony_ci	def_bool y
25458c2ecf20Sopenharmony_ci	depends on X86_64 || X86_PAE
25468c2ecf20Sopenharmony_ci
25478c2ecf20Sopenharmony_ciconfig ARCH_ENABLE_HUGEPAGE_MIGRATION
25488c2ecf20Sopenharmony_ci	def_bool y
25498c2ecf20Sopenharmony_ci	depends on X86_64 && HUGETLB_PAGE && MIGRATION
25508c2ecf20Sopenharmony_ci
25518c2ecf20Sopenharmony_ciconfig ARCH_ENABLE_THP_MIGRATION
25528c2ecf20Sopenharmony_ci	def_bool y
25538c2ecf20Sopenharmony_ci	depends on X86_64 && TRANSPARENT_HUGEPAGE
25548c2ecf20Sopenharmony_ci
25558c2ecf20Sopenharmony_cimenu "Power management and ACPI options"
25568c2ecf20Sopenharmony_ci
25578c2ecf20Sopenharmony_ciconfig ARCH_HIBERNATION_HEADER
25588c2ecf20Sopenharmony_ci	def_bool y
25598c2ecf20Sopenharmony_ci	depends on HIBERNATION
25608c2ecf20Sopenharmony_ci
25618c2ecf20Sopenharmony_cisource "kernel/power/Kconfig"
25628c2ecf20Sopenharmony_ci
25638c2ecf20Sopenharmony_cisource "drivers/acpi/Kconfig"
25648c2ecf20Sopenharmony_ci
25658c2ecf20Sopenharmony_cisource "drivers/sfi/Kconfig"
25668c2ecf20Sopenharmony_ci
25678c2ecf20Sopenharmony_ciconfig X86_APM_BOOT
25688c2ecf20Sopenharmony_ci	def_bool y
25698c2ecf20Sopenharmony_ci	depends on APM
25708c2ecf20Sopenharmony_ci
25718c2ecf20Sopenharmony_cimenuconfig APM
25728c2ecf20Sopenharmony_ci	tristate "APM (Advanced Power Management) BIOS support"
25738c2ecf20Sopenharmony_ci	depends on X86_32 && PM_SLEEP
25748c2ecf20Sopenharmony_ci	help
25758c2ecf20Sopenharmony_ci	  APM is a BIOS specification for saving power using several different
25768c2ecf20Sopenharmony_ci	  techniques. This is mostly useful for battery powered laptops with
25778c2ecf20Sopenharmony_ci	  APM compliant BIOSes. If you say Y here, the system time will be
25788c2ecf20Sopenharmony_ci	  reset after a RESUME operation, the /proc/apm device will provide
25798c2ecf20Sopenharmony_ci	  battery status information, and user-space programs will receive
25808c2ecf20Sopenharmony_ci	  notification of APM "events" (e.g. battery status change).
25818c2ecf20Sopenharmony_ci
25828c2ecf20Sopenharmony_ci	  If you select "Y" here, you can disable actual use of the APM
25838c2ecf20Sopenharmony_ci	  BIOS by passing the "apm=off" option to the kernel at boot time.
25848c2ecf20Sopenharmony_ci
25858c2ecf20Sopenharmony_ci	  Note that the APM support is almost completely disabled for
25868c2ecf20Sopenharmony_ci	  machines with more than one CPU.
25878c2ecf20Sopenharmony_ci
25888c2ecf20Sopenharmony_ci	  In order to use APM, you will need supporting software. For location
25898c2ecf20Sopenharmony_ci	  and more information, read <file:Documentation/power/apm-acpi.rst>
25908c2ecf20Sopenharmony_ci	  and the Battery Powered Linux mini-HOWTO, available from
25918c2ecf20Sopenharmony_ci	  <http://www.tldp.org/docs.html#howto>.
25928c2ecf20Sopenharmony_ci
25938c2ecf20Sopenharmony_ci	  This driver does not spin down disk drives (see the hdparm(8)
25948c2ecf20Sopenharmony_ci	  manpage ("man 8 hdparm") for that), and it doesn't turn off
25958c2ecf20Sopenharmony_ci	  VESA-compliant "green" monitors.
25968c2ecf20Sopenharmony_ci
25978c2ecf20Sopenharmony_ci	  This driver does not support the TI 4000M TravelMate and the ACER
25988c2ecf20Sopenharmony_ci	  486/DX4/75 because they don't have compliant BIOSes. Many "green"
25998c2ecf20Sopenharmony_ci	  desktop machines also don't have compliant BIOSes, and this driver
26008c2ecf20Sopenharmony_ci	  may cause those machines to panic during the boot phase.
26018c2ecf20Sopenharmony_ci
26028c2ecf20Sopenharmony_ci	  Generally, if you don't have a battery in your machine, there isn't
26038c2ecf20Sopenharmony_ci	  much point in using this driver and you should say N. If you get
26048c2ecf20Sopenharmony_ci	  random kernel OOPSes or reboots that don't seem to be related to
26058c2ecf20Sopenharmony_ci	  anything, try disabling/enabling this option (or disabling/enabling
26068c2ecf20Sopenharmony_ci	  APM in your BIOS).
26078c2ecf20Sopenharmony_ci
26088c2ecf20Sopenharmony_ci	  Some other things you should try when experiencing seemingly random,
26098c2ecf20Sopenharmony_ci	  "weird" problems:
26108c2ecf20Sopenharmony_ci
26118c2ecf20Sopenharmony_ci	  1) make sure that you have enough swap space and that it is
26128c2ecf20Sopenharmony_ci	  enabled.
26138c2ecf20Sopenharmony_ci	  2) pass the "no-hlt" option to the kernel
26148c2ecf20Sopenharmony_ci	  3) switch on floating point emulation in the kernel and pass
26158c2ecf20Sopenharmony_ci	  the "no387" option to the kernel
26168c2ecf20Sopenharmony_ci	  4) pass the "floppy=nodma" option to the kernel
26178c2ecf20Sopenharmony_ci	  5) pass the "mem=4M" option to the kernel (thereby disabling
26188c2ecf20Sopenharmony_ci	  all but the first 4 MB of RAM)
26198c2ecf20Sopenharmony_ci	  6) make sure that the CPU is not over clocked.
26208c2ecf20Sopenharmony_ci	  7) read the sig11 FAQ at <http://www.bitwizard.nl/sig11/>
26218c2ecf20Sopenharmony_ci	  8) disable the cache from your BIOS settings
26228c2ecf20Sopenharmony_ci	  9) install a fan for the video card or exchange video RAM
26238c2ecf20Sopenharmony_ci	  10) install a better fan for the CPU
26248c2ecf20Sopenharmony_ci	  11) exchange RAM chips
26258c2ecf20Sopenharmony_ci	  12) exchange the motherboard.
26268c2ecf20Sopenharmony_ci
26278c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
26288c2ecf20Sopenharmony_ci	  module will be called apm.
26298c2ecf20Sopenharmony_ci
26308c2ecf20Sopenharmony_ciif APM
26318c2ecf20Sopenharmony_ci
26328c2ecf20Sopenharmony_ciconfig APM_IGNORE_USER_SUSPEND
26338c2ecf20Sopenharmony_ci	bool "Ignore USER SUSPEND"
26348c2ecf20Sopenharmony_ci	help
26358c2ecf20Sopenharmony_ci	  This option will ignore USER SUSPEND requests. On machines with a
26368c2ecf20Sopenharmony_ci	  compliant APM BIOS, you want to say N. However, on the NEC Versa M
26378c2ecf20Sopenharmony_ci	  series notebooks, it is necessary to say Y because of a BIOS bug.
26388c2ecf20Sopenharmony_ci
26398c2ecf20Sopenharmony_ciconfig APM_DO_ENABLE
26408c2ecf20Sopenharmony_ci	bool "Enable PM at boot time"
26418c2ecf20Sopenharmony_ci	help
26428c2ecf20Sopenharmony_ci	  Enable APM features at boot time. From page 36 of the APM BIOS
26438c2ecf20Sopenharmony_ci	  specification: "When disabled, the APM BIOS does not automatically
26448c2ecf20Sopenharmony_ci	  power manage devices, enter the Standby State, enter the Suspend
26458c2ecf20Sopenharmony_ci	  State, or take power saving steps in response to CPU Idle calls."
26468c2ecf20Sopenharmony_ci	  This driver will make CPU Idle calls when Linux is idle (unless this
26478c2ecf20Sopenharmony_ci	  feature is turned off -- see "Do CPU IDLE calls", below). This
26488c2ecf20Sopenharmony_ci	  should always save battery power, but more complicated APM features
26498c2ecf20Sopenharmony_ci	  will be dependent on your BIOS implementation. You may need to turn
26508c2ecf20Sopenharmony_ci	  this option off if your computer hangs at boot time when using APM
26518c2ecf20Sopenharmony_ci	  support, or if it beeps continuously instead of suspending. Turn
26528c2ecf20Sopenharmony_ci	  this off if you have a NEC UltraLite Versa 33/C or a Toshiba
26538c2ecf20Sopenharmony_ci	  T400CDT. This is off by default since most machines do fine without
26548c2ecf20Sopenharmony_ci	  this feature.
26558c2ecf20Sopenharmony_ci
26568c2ecf20Sopenharmony_ciconfig APM_CPU_IDLE
26578c2ecf20Sopenharmony_ci	depends on CPU_IDLE
26588c2ecf20Sopenharmony_ci	bool "Make CPU Idle calls when idle"
26598c2ecf20Sopenharmony_ci	help
26608c2ecf20Sopenharmony_ci	  Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
26618c2ecf20Sopenharmony_ci	  On some machines, this can activate improved power savings, such as
26628c2ecf20Sopenharmony_ci	  a slowed CPU clock rate, when the machine is idle. These idle calls
26638c2ecf20Sopenharmony_ci	  are made after the idle loop has run for some length of time (e.g.,
26648c2ecf20Sopenharmony_ci	  333 mS). On some machines, this will cause a hang at boot time or
26658c2ecf20Sopenharmony_ci	  whenever the CPU becomes idle. (On machines with more than one CPU,
26668c2ecf20Sopenharmony_ci	  this option does nothing.)
26678c2ecf20Sopenharmony_ci
26688c2ecf20Sopenharmony_ciconfig APM_DISPLAY_BLANK
26698c2ecf20Sopenharmony_ci	bool "Enable console blanking using APM"
26708c2ecf20Sopenharmony_ci	help
26718c2ecf20Sopenharmony_ci	  Enable console blanking using the APM. Some laptops can use this to
26728c2ecf20Sopenharmony_ci	  turn off the LCD backlight when the screen blanker of the Linux
26738c2ecf20Sopenharmony_ci	  virtual console blanks the screen. Note that this is only used by
26748c2ecf20Sopenharmony_ci	  the virtual console screen blanker, and won't turn off the backlight
26758c2ecf20Sopenharmony_ci	  when using the X Window system. This also doesn't have anything to
26768c2ecf20Sopenharmony_ci	  do with your VESA-compliant power-saving monitor. Further, this
26778c2ecf20Sopenharmony_ci	  option doesn't work for all laptops -- it might not turn off your
26788c2ecf20Sopenharmony_ci	  backlight at all, or it might print a lot of errors to the console,
26798c2ecf20Sopenharmony_ci	  especially if you are using gpm.
26808c2ecf20Sopenharmony_ci
26818c2ecf20Sopenharmony_ciconfig APM_ALLOW_INTS
26828c2ecf20Sopenharmony_ci	bool "Allow interrupts during APM BIOS calls"
26838c2ecf20Sopenharmony_ci	help
26848c2ecf20Sopenharmony_ci	  Normally we disable external interrupts while we are making calls to
26858c2ecf20Sopenharmony_ci	  the APM BIOS as a measure to lessen the effects of a badly behaving
26868c2ecf20Sopenharmony_ci	  BIOS implementation.  The BIOS should reenable interrupts if it
26878c2ecf20Sopenharmony_ci	  needs to.  Unfortunately, some BIOSes do not -- especially those in
26888c2ecf20Sopenharmony_ci	  many of the newer IBM Thinkpads.  If you experience hangs when you
26898c2ecf20Sopenharmony_ci	  suspend, try setting this to Y.  Otherwise, say N.
26908c2ecf20Sopenharmony_ci
26918c2ecf20Sopenharmony_ciendif # APM
26928c2ecf20Sopenharmony_ci
26938c2ecf20Sopenharmony_cisource "drivers/cpufreq/Kconfig"
26948c2ecf20Sopenharmony_ci
26958c2ecf20Sopenharmony_cisource "drivers/cpuidle/Kconfig"
26968c2ecf20Sopenharmony_ci
26978c2ecf20Sopenharmony_cisource "drivers/idle/Kconfig"
26988c2ecf20Sopenharmony_ci
26998c2ecf20Sopenharmony_ciendmenu
27008c2ecf20Sopenharmony_ci
27018c2ecf20Sopenharmony_ci
27028c2ecf20Sopenharmony_cimenu "Bus options (PCI etc.)"
27038c2ecf20Sopenharmony_ci
27048c2ecf20Sopenharmony_cichoice
27058c2ecf20Sopenharmony_ci	prompt "PCI access mode"
27068c2ecf20Sopenharmony_ci	depends on X86_32 && PCI
27078c2ecf20Sopenharmony_ci	default PCI_GOANY
27088c2ecf20Sopenharmony_ci	help
27098c2ecf20Sopenharmony_ci	  On PCI systems, the BIOS can be used to detect the PCI devices and
27108c2ecf20Sopenharmony_ci	  determine their configuration. However, some old PCI motherboards
27118c2ecf20Sopenharmony_ci	  have BIOS bugs and may crash if this is done. Also, some embedded
27128c2ecf20Sopenharmony_ci	  PCI-based systems don't have any BIOS at all. Linux can also try to
27138c2ecf20Sopenharmony_ci	  detect the PCI hardware directly without using the BIOS.
27148c2ecf20Sopenharmony_ci
27158c2ecf20Sopenharmony_ci	  With this option, you can specify how Linux should detect the
27168c2ecf20Sopenharmony_ci	  PCI devices. If you choose "BIOS", the BIOS will be used,
27178c2ecf20Sopenharmony_ci	  if you choose "Direct", the BIOS won't be used, and if you
27188c2ecf20Sopenharmony_ci	  choose "MMConfig", then PCI Express MMCONFIG will be used.
27198c2ecf20Sopenharmony_ci	  If you choose "Any", the kernel will try MMCONFIG, then the
27208c2ecf20Sopenharmony_ci	  direct access method and falls back to the BIOS if that doesn't
27218c2ecf20Sopenharmony_ci	  work. If unsure, go with the default, which is "Any".
27228c2ecf20Sopenharmony_ci
27238c2ecf20Sopenharmony_ciconfig PCI_GOBIOS
27248c2ecf20Sopenharmony_ci	bool "BIOS"
27258c2ecf20Sopenharmony_ci
27268c2ecf20Sopenharmony_ciconfig PCI_GOMMCONFIG
27278c2ecf20Sopenharmony_ci	bool "MMConfig"
27288c2ecf20Sopenharmony_ci
27298c2ecf20Sopenharmony_ciconfig PCI_GODIRECT
27308c2ecf20Sopenharmony_ci	bool "Direct"
27318c2ecf20Sopenharmony_ci
27328c2ecf20Sopenharmony_ciconfig PCI_GOOLPC
27338c2ecf20Sopenharmony_ci	bool "OLPC XO-1"
27348c2ecf20Sopenharmony_ci	depends on OLPC
27358c2ecf20Sopenharmony_ci
27368c2ecf20Sopenharmony_ciconfig PCI_GOANY
27378c2ecf20Sopenharmony_ci	bool "Any"
27388c2ecf20Sopenharmony_ci
27398c2ecf20Sopenharmony_ciendchoice
27408c2ecf20Sopenharmony_ci
27418c2ecf20Sopenharmony_ciconfig PCI_BIOS
27428c2ecf20Sopenharmony_ci	def_bool y
27438c2ecf20Sopenharmony_ci	depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY)
27448c2ecf20Sopenharmony_ci
27458c2ecf20Sopenharmony_ci# x86-64 doesn't support PCI BIOS access from long mode so always go direct.
27468c2ecf20Sopenharmony_ciconfig PCI_DIRECT
27478c2ecf20Sopenharmony_ci	def_bool y
27488c2ecf20Sopenharmony_ci	depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG))
27498c2ecf20Sopenharmony_ci
27508c2ecf20Sopenharmony_ciconfig PCI_MMCONFIG
27518c2ecf20Sopenharmony_ci	bool "Support mmconfig PCI config space access" if X86_64
27528c2ecf20Sopenharmony_ci	default y
27538c2ecf20Sopenharmony_ci	depends on PCI && (ACPI || SFI || JAILHOUSE_GUEST)
27548c2ecf20Sopenharmony_ci	depends on X86_64 || (PCI_GOANY || PCI_GOMMCONFIG)
27558c2ecf20Sopenharmony_ci
27568c2ecf20Sopenharmony_ciconfig PCI_OLPC
27578c2ecf20Sopenharmony_ci	def_bool y
27588c2ecf20Sopenharmony_ci	depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
27598c2ecf20Sopenharmony_ci
27608c2ecf20Sopenharmony_ciconfig PCI_XEN
27618c2ecf20Sopenharmony_ci	def_bool y
27628c2ecf20Sopenharmony_ci	depends on PCI && XEN
27638c2ecf20Sopenharmony_ci	select SWIOTLB_XEN
27648c2ecf20Sopenharmony_ci
27658c2ecf20Sopenharmony_ciconfig MMCONF_FAM10H
27668c2ecf20Sopenharmony_ci	def_bool y
27678c2ecf20Sopenharmony_ci	depends on X86_64 && PCI_MMCONFIG && ACPI
27688c2ecf20Sopenharmony_ci
27698c2ecf20Sopenharmony_ciconfig PCI_CNB20LE_QUIRK
27708c2ecf20Sopenharmony_ci	bool "Read CNB20LE Host Bridge Windows" if EXPERT
27718c2ecf20Sopenharmony_ci	depends on PCI
27728c2ecf20Sopenharmony_ci	help
27738c2ecf20Sopenharmony_ci	  Read the PCI windows out of the CNB20LE host bridge. This allows
27748c2ecf20Sopenharmony_ci	  PCI hotplug to work on systems with the CNB20LE chipset which do
27758c2ecf20Sopenharmony_ci	  not have ACPI.
27768c2ecf20Sopenharmony_ci
27778c2ecf20Sopenharmony_ci	  There's no public spec for this chipset, and this functionality
27788c2ecf20Sopenharmony_ci	  is known to be incomplete.
27798c2ecf20Sopenharmony_ci
27808c2ecf20Sopenharmony_ci	  You should say N unless you know you need this.
27818c2ecf20Sopenharmony_ci
27828c2ecf20Sopenharmony_ciconfig ISA_BUS
27838c2ecf20Sopenharmony_ci	bool "ISA bus support on modern systems" if EXPERT
27848c2ecf20Sopenharmony_ci	help
27858c2ecf20Sopenharmony_ci	  Expose ISA bus device drivers and options available for selection and
27868c2ecf20Sopenharmony_ci	  configuration. Enable this option if your target machine has an ISA
27878c2ecf20Sopenharmony_ci	  bus. ISA is an older system, displaced by PCI and newer bus
27888c2ecf20Sopenharmony_ci	  architectures -- if your target machine is modern, it probably does
27898c2ecf20Sopenharmony_ci	  not have an ISA bus.
27908c2ecf20Sopenharmony_ci
27918c2ecf20Sopenharmony_ci	  If unsure, say N.
27928c2ecf20Sopenharmony_ci
27938c2ecf20Sopenharmony_ci# x86_64 have no ISA slots, but can have ISA-style DMA.
27948c2ecf20Sopenharmony_ciconfig ISA_DMA_API
27958c2ecf20Sopenharmony_ci	bool "ISA-style DMA support" if (X86_64 && EXPERT)
27968c2ecf20Sopenharmony_ci	default y
27978c2ecf20Sopenharmony_ci	help
27988c2ecf20Sopenharmony_ci	  Enables ISA-style DMA support for devices requiring such controllers.
27998c2ecf20Sopenharmony_ci	  If unsure, say Y.
28008c2ecf20Sopenharmony_ci
28018c2ecf20Sopenharmony_ciif X86_32
28028c2ecf20Sopenharmony_ci
28038c2ecf20Sopenharmony_ciconfig ISA
28048c2ecf20Sopenharmony_ci	bool "ISA support"
28058c2ecf20Sopenharmony_ci	help
28068c2ecf20Sopenharmony_ci	  Find out whether you have ISA slots on your motherboard.  ISA is the
28078c2ecf20Sopenharmony_ci	  name of a bus system, i.e. the way the CPU talks to the other stuff
28088c2ecf20Sopenharmony_ci	  inside your box.  Other bus systems are PCI, EISA, MicroChannel
28098c2ecf20Sopenharmony_ci	  (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
28108c2ecf20Sopenharmony_ci	  newer boards don't support it.  If you have ISA, say Y, otherwise N.
28118c2ecf20Sopenharmony_ci
28128c2ecf20Sopenharmony_ciconfig SCx200
28138c2ecf20Sopenharmony_ci	tristate "NatSemi SCx200 support"
28148c2ecf20Sopenharmony_ci	help
28158c2ecf20Sopenharmony_ci	  This provides basic support for National Semiconductor's
28168c2ecf20Sopenharmony_ci	  (now AMD's) Geode processors.  The driver probes for the
28178c2ecf20Sopenharmony_ci	  PCI-IDs of several on-chip devices, so its a good dependency
28188c2ecf20Sopenharmony_ci	  for other scx200_* drivers.
28198c2ecf20Sopenharmony_ci
28208c2ecf20Sopenharmony_ci	  If compiled as a module, the driver is named scx200.
28218c2ecf20Sopenharmony_ci
28228c2ecf20Sopenharmony_ciconfig SCx200HR_TIMER
28238c2ecf20Sopenharmony_ci	tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
28248c2ecf20Sopenharmony_ci	depends on SCx200
28258c2ecf20Sopenharmony_ci	default y
28268c2ecf20Sopenharmony_ci	help
28278c2ecf20Sopenharmony_ci	  This driver provides a clocksource built upon the on-chip
28288c2ecf20Sopenharmony_ci	  27MHz high-resolution timer.  Its also a workaround for
28298c2ecf20Sopenharmony_ci	  NSC Geode SC-1100's buggy TSC, which loses time when the
28308c2ecf20Sopenharmony_ci	  processor goes idle (as is done by the scheduler).  The
28318c2ecf20Sopenharmony_ci	  other workaround is idle=poll boot option.
28328c2ecf20Sopenharmony_ci
28338c2ecf20Sopenharmony_ciconfig OLPC
28348c2ecf20Sopenharmony_ci	bool "One Laptop Per Child support"
28358c2ecf20Sopenharmony_ci	depends on !X86_PAE
28368c2ecf20Sopenharmony_ci	select GPIOLIB
28378c2ecf20Sopenharmony_ci	select OF
28388c2ecf20Sopenharmony_ci	select OF_PROMTREE
28398c2ecf20Sopenharmony_ci	select IRQ_DOMAIN
28408c2ecf20Sopenharmony_ci	select OLPC_EC
28418c2ecf20Sopenharmony_ci	help
28428c2ecf20Sopenharmony_ci	  Add support for detecting the unique features of the OLPC
28438c2ecf20Sopenharmony_ci	  XO hardware.
28448c2ecf20Sopenharmony_ci
28458c2ecf20Sopenharmony_ciconfig OLPC_XO1_PM
28468c2ecf20Sopenharmony_ci	bool "OLPC XO-1 Power Management"
28478c2ecf20Sopenharmony_ci	depends on OLPC && MFD_CS5535=y && PM_SLEEP
28488c2ecf20Sopenharmony_ci	help
28498c2ecf20Sopenharmony_ci	  Add support for poweroff and suspend of the OLPC XO-1 laptop.
28508c2ecf20Sopenharmony_ci
28518c2ecf20Sopenharmony_ciconfig OLPC_XO1_RTC
28528c2ecf20Sopenharmony_ci	bool "OLPC XO-1 Real Time Clock"
28538c2ecf20Sopenharmony_ci	depends on OLPC_XO1_PM && RTC_DRV_CMOS
28548c2ecf20Sopenharmony_ci	help
28558c2ecf20Sopenharmony_ci	  Add support for the XO-1 real time clock, which can be used as a
28568c2ecf20Sopenharmony_ci	  programmable wakeup source.
28578c2ecf20Sopenharmony_ci
28588c2ecf20Sopenharmony_ciconfig OLPC_XO1_SCI
28598c2ecf20Sopenharmony_ci	bool "OLPC XO-1 SCI extras"
28608c2ecf20Sopenharmony_ci	depends on OLPC && OLPC_XO1_PM && GPIO_CS5535=y
28618c2ecf20Sopenharmony_ci	depends on INPUT=y
28628c2ecf20Sopenharmony_ci	select POWER_SUPPLY
28638c2ecf20Sopenharmony_ci	help
28648c2ecf20Sopenharmony_ci	  Add support for SCI-based features of the OLPC XO-1 laptop:
28658c2ecf20Sopenharmony_ci	   - EC-driven system wakeups
28668c2ecf20Sopenharmony_ci	   - Power button
28678c2ecf20Sopenharmony_ci	   - Ebook switch
28688c2ecf20Sopenharmony_ci	   - Lid switch
28698c2ecf20Sopenharmony_ci	   - AC adapter status updates
28708c2ecf20Sopenharmony_ci	   - Battery status updates
28718c2ecf20Sopenharmony_ci
28728c2ecf20Sopenharmony_ciconfig OLPC_XO15_SCI
28738c2ecf20Sopenharmony_ci	bool "OLPC XO-1.5 SCI extras"
28748c2ecf20Sopenharmony_ci	depends on OLPC && ACPI
28758c2ecf20Sopenharmony_ci	select POWER_SUPPLY
28768c2ecf20Sopenharmony_ci	help
28778c2ecf20Sopenharmony_ci	  Add support for SCI-based features of the OLPC XO-1.5 laptop:
28788c2ecf20Sopenharmony_ci	   - EC-driven system wakeups
28798c2ecf20Sopenharmony_ci	   - AC adapter status updates
28808c2ecf20Sopenharmony_ci	   - Battery status updates
28818c2ecf20Sopenharmony_ci
28828c2ecf20Sopenharmony_ciconfig ALIX
28838c2ecf20Sopenharmony_ci	bool "PCEngines ALIX System Support (LED setup)"
28848c2ecf20Sopenharmony_ci	select GPIOLIB
28858c2ecf20Sopenharmony_ci	help
28868c2ecf20Sopenharmony_ci	  This option enables system support for the PCEngines ALIX.
28878c2ecf20Sopenharmony_ci	  At present this just sets up LEDs for GPIO control on
28888c2ecf20Sopenharmony_ci	  ALIX2/3/6 boards.  However, other system specific setup should
28898c2ecf20Sopenharmony_ci	  get added here.
28908c2ecf20Sopenharmony_ci
28918c2ecf20Sopenharmony_ci	  Note: You must still enable the drivers for GPIO and LED support
28928c2ecf20Sopenharmony_ci	  (GPIO_CS5535 & LEDS_GPIO) to actually use the LEDs
28938c2ecf20Sopenharmony_ci
28948c2ecf20Sopenharmony_ci	  Note: You have to set alix.force=1 for boards with Award BIOS.
28958c2ecf20Sopenharmony_ci
28968c2ecf20Sopenharmony_ciconfig NET5501
28978c2ecf20Sopenharmony_ci	bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)"
28988c2ecf20Sopenharmony_ci	select GPIOLIB
28998c2ecf20Sopenharmony_ci	help
29008c2ecf20Sopenharmony_ci	  This option enables system support for the Soekris Engineering net5501.
29018c2ecf20Sopenharmony_ci
29028c2ecf20Sopenharmony_ciconfig GEOS
29038c2ecf20Sopenharmony_ci	bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)"
29048c2ecf20Sopenharmony_ci	select GPIOLIB
29058c2ecf20Sopenharmony_ci	depends on DMI
29068c2ecf20Sopenharmony_ci	help
29078c2ecf20Sopenharmony_ci	  This option enables system support for the Traverse Technologies GEOS.
29088c2ecf20Sopenharmony_ci
29098c2ecf20Sopenharmony_ciconfig TS5500
29108c2ecf20Sopenharmony_ci	bool "Technologic Systems TS-5500 platform support"
29118c2ecf20Sopenharmony_ci	depends on MELAN
29128c2ecf20Sopenharmony_ci	select CHECK_SIGNATURE
29138c2ecf20Sopenharmony_ci	select NEW_LEDS
29148c2ecf20Sopenharmony_ci	select LEDS_CLASS
29158c2ecf20Sopenharmony_ci	help
29168c2ecf20Sopenharmony_ci	  This option enables system support for the Technologic Systems TS-5500.
29178c2ecf20Sopenharmony_ci
29188c2ecf20Sopenharmony_ciendif # X86_32
29198c2ecf20Sopenharmony_ci
29208c2ecf20Sopenharmony_ciconfig AMD_NB
29218c2ecf20Sopenharmony_ci	def_bool y
29228c2ecf20Sopenharmony_ci	depends on CPU_SUP_AMD && PCI
29238c2ecf20Sopenharmony_ci
29248c2ecf20Sopenharmony_ciconfig X86_SYSFB
29258c2ecf20Sopenharmony_ci	bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
29268c2ecf20Sopenharmony_ci	help
29278c2ecf20Sopenharmony_ci	  Firmwares often provide initial graphics framebuffers so the BIOS,
29288c2ecf20Sopenharmony_ci	  bootloader or kernel can show basic video-output during boot for
29298c2ecf20Sopenharmony_ci	  user-guidance and debugging. Historically, x86 used the VESA BIOS
29308c2ecf20Sopenharmony_ci	  Extensions and EFI-framebuffers for this, which are mostly limited
29318c2ecf20Sopenharmony_ci	  to x86.
29328c2ecf20Sopenharmony_ci	  This option, if enabled, marks VGA/VBE/EFI framebuffers as generic
29338c2ecf20Sopenharmony_ci	  framebuffers so the new generic system-framebuffer drivers can be
29348c2ecf20Sopenharmony_ci	  used on x86. If the framebuffer is not compatible with the generic
29358c2ecf20Sopenharmony_ci	  modes, it is advertised as fallback platform framebuffer so legacy
29368c2ecf20Sopenharmony_ci	  drivers like efifb, vesafb and uvesafb can pick it up.
29378c2ecf20Sopenharmony_ci	  If this option is not selected, all system framebuffers are always
29388c2ecf20Sopenharmony_ci	  marked as fallback platform framebuffers as usual.
29398c2ecf20Sopenharmony_ci
29408c2ecf20Sopenharmony_ci	  Note: Legacy fbdev drivers, including vesafb, efifb, uvesafb, will
29418c2ecf20Sopenharmony_ci	  not be able to pick up generic system framebuffers if this option
29428c2ecf20Sopenharmony_ci	  is selected. You are highly encouraged to enable simplefb as
29438c2ecf20Sopenharmony_ci	  replacement if you select this option. simplefb can correctly deal
29448c2ecf20Sopenharmony_ci	  with generic system framebuffers. But you should still keep vesafb
29458c2ecf20Sopenharmony_ci	  and others enabled as fallback if a system framebuffer is
29468c2ecf20Sopenharmony_ci	  incompatible with simplefb.
29478c2ecf20Sopenharmony_ci
29488c2ecf20Sopenharmony_ci	  If unsure, say Y.
29498c2ecf20Sopenharmony_ci
29508c2ecf20Sopenharmony_ciendmenu
29518c2ecf20Sopenharmony_ci
29528c2ecf20Sopenharmony_ci
29538c2ecf20Sopenharmony_cimenu "Binary Emulations"
29548c2ecf20Sopenharmony_ci
29558c2ecf20Sopenharmony_ciconfig IA32_EMULATION
29568c2ecf20Sopenharmony_ci	bool "IA32 Emulation"
29578c2ecf20Sopenharmony_ci	depends on X86_64
29588c2ecf20Sopenharmony_ci	select ARCH_WANT_OLD_COMPAT_IPC
29598c2ecf20Sopenharmony_ci	select BINFMT_ELF
29608c2ecf20Sopenharmony_ci	select COMPAT_BINFMT_ELF
29618c2ecf20Sopenharmony_ci	select COMPAT_OLD_SIGACTION
29628c2ecf20Sopenharmony_ci	help
29638c2ecf20Sopenharmony_ci	  Include code to run legacy 32-bit programs under a
29648c2ecf20Sopenharmony_ci	  64-bit kernel. You should likely turn this on, unless you're
29658c2ecf20Sopenharmony_ci	  100% sure that you don't have any 32-bit programs left.
29668c2ecf20Sopenharmony_ci
29678c2ecf20Sopenharmony_ciconfig IA32_AOUT
29688c2ecf20Sopenharmony_ci	tristate "IA32 a.out support"
29698c2ecf20Sopenharmony_ci	depends on IA32_EMULATION
29708c2ecf20Sopenharmony_ci	depends on BROKEN
29718c2ecf20Sopenharmony_ci	help
29728c2ecf20Sopenharmony_ci	  Support old a.out binaries in the 32bit emulation.
29738c2ecf20Sopenharmony_ci
29748c2ecf20Sopenharmony_ciconfig X86_X32
29758c2ecf20Sopenharmony_ci	bool "x32 ABI for 64-bit mode"
29768c2ecf20Sopenharmony_ci	depends on X86_64
29778c2ecf20Sopenharmony_ci	# llvm-objcopy does not convert x86_64 .note.gnu.property or
29788c2ecf20Sopenharmony_ci	# compressed debug sections to x86_x32 properly:
29798c2ecf20Sopenharmony_ci	# https://github.com/ClangBuiltLinux/linux/issues/514
29808c2ecf20Sopenharmony_ci	# https://github.com/ClangBuiltLinux/linux/issues/1141
29818c2ecf20Sopenharmony_ci	depends on $(success,$(OBJCOPY) --version | head -n1 | grep -qv llvm)
29828c2ecf20Sopenharmony_ci	help
29838c2ecf20Sopenharmony_ci	  Include code to run binaries for the x32 native 32-bit ABI
29848c2ecf20Sopenharmony_ci	  for 64-bit processors.  An x32 process gets access to the
29858c2ecf20Sopenharmony_ci	  full 64-bit register file and wide data path while leaving
29868c2ecf20Sopenharmony_ci	  pointers at 32 bits for smaller memory footprint.
29878c2ecf20Sopenharmony_ci
29888c2ecf20Sopenharmony_ci	  You will need a recent binutils (2.22 or later) with
29898c2ecf20Sopenharmony_ci	  elf32_x86_64 support enabled to compile a kernel with this
29908c2ecf20Sopenharmony_ci	  option set.
29918c2ecf20Sopenharmony_ci
29928c2ecf20Sopenharmony_ciconfig COMPAT_32
29938c2ecf20Sopenharmony_ci	def_bool y
29948c2ecf20Sopenharmony_ci	depends on IA32_EMULATION || X86_32
29958c2ecf20Sopenharmony_ci	select HAVE_UID16
29968c2ecf20Sopenharmony_ci	select OLD_SIGSUSPEND3
29978c2ecf20Sopenharmony_ci
29988c2ecf20Sopenharmony_ciconfig COMPAT
29998c2ecf20Sopenharmony_ci	def_bool y
30008c2ecf20Sopenharmony_ci	depends on IA32_EMULATION || X86_X32
30018c2ecf20Sopenharmony_ci
30028c2ecf20Sopenharmony_ciif COMPAT
30038c2ecf20Sopenharmony_ciconfig COMPAT_FOR_U64_ALIGNMENT
30048c2ecf20Sopenharmony_ci	def_bool y
30058c2ecf20Sopenharmony_ci
30068c2ecf20Sopenharmony_ciconfig SYSVIPC_COMPAT
30078c2ecf20Sopenharmony_ci	def_bool y
30088c2ecf20Sopenharmony_ci	depends on SYSVIPC
30098c2ecf20Sopenharmony_ciendif
30108c2ecf20Sopenharmony_ci
30118c2ecf20Sopenharmony_ciendmenu
30128c2ecf20Sopenharmony_ci
30138c2ecf20Sopenharmony_ci
30148c2ecf20Sopenharmony_ciconfig HAVE_ATOMIC_IOMAP
30158c2ecf20Sopenharmony_ci	def_bool y
30168c2ecf20Sopenharmony_ci	depends on X86_32
30178c2ecf20Sopenharmony_ci
30188c2ecf20Sopenharmony_cisource "drivers/firmware/Kconfig"
30198c2ecf20Sopenharmony_ci
30208c2ecf20Sopenharmony_cisource "arch/x86/kvm/Kconfig"
30218c2ecf20Sopenharmony_ci
30228c2ecf20Sopenharmony_cisource "arch/x86/Kconfig.assembler"
3023