xref: /kernel/linux/linux-6.6/arch/loongarch/Kconfig (revision 62306a36)
162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ciconfig LOONGARCH
362306a36Sopenharmony_ci	bool
462306a36Sopenharmony_ci	default y
562306a36Sopenharmony_ci	select ACPI
662306a36Sopenharmony_ci	select ACPI_GENERIC_GSI if ACPI
762306a36Sopenharmony_ci	select ACPI_MCFG if ACPI
862306a36Sopenharmony_ci	select ACPI_PPTT if ACPI
962306a36Sopenharmony_ci	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
1062306a36Sopenharmony_ci	select ARCH_BINFMT_ELF_STATE
1162306a36Sopenharmony_ci	select ARCH_DISABLE_KASAN_INLINE
1262306a36Sopenharmony_ci	select ARCH_ENABLE_MEMORY_HOTPLUG
1362306a36Sopenharmony_ci	select ARCH_ENABLE_MEMORY_HOTREMOVE
1462306a36Sopenharmony_ci	select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
1562306a36Sopenharmony_ci	select ARCH_HAS_ACPI_TABLE_UPGRADE	if ACPI
1662306a36Sopenharmony_ci	select ARCH_HAS_CPU_FINALIZE_INIT
1762306a36Sopenharmony_ci	select ARCH_HAS_FORTIFY_SOURCE
1862306a36Sopenharmony_ci	select ARCH_HAS_KCOV
1962306a36Sopenharmony_ci	select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
2062306a36Sopenharmony_ci	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
2162306a36Sopenharmony_ci	select ARCH_HAS_PTE_SPECIAL
2262306a36Sopenharmony_ci	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
2362306a36Sopenharmony_ci	select ARCH_INLINE_READ_LOCK if !PREEMPTION
2462306a36Sopenharmony_ci	select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION
2562306a36Sopenharmony_ci	select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION
2662306a36Sopenharmony_ci	select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION
2762306a36Sopenharmony_ci	select ARCH_INLINE_READ_UNLOCK if !PREEMPTION
2862306a36Sopenharmony_ci	select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION
2962306a36Sopenharmony_ci	select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION
3062306a36Sopenharmony_ci	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION
3162306a36Sopenharmony_ci	select ARCH_INLINE_WRITE_LOCK if !PREEMPTION
3262306a36Sopenharmony_ci	select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION
3362306a36Sopenharmony_ci	select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION
3462306a36Sopenharmony_ci	select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION
3562306a36Sopenharmony_ci	select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION
3662306a36Sopenharmony_ci	select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION
3762306a36Sopenharmony_ci	select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION
3862306a36Sopenharmony_ci	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION
3962306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION
4062306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION
4162306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_LOCK if !PREEMPTION
4262306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION
4362306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION
4462306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION
4562306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION
4662306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION
4762306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION
4862306a36Sopenharmony_ci	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION
4962306a36Sopenharmony_ci	select ARCH_KEEP_MEMBLOCK
5062306a36Sopenharmony_ci	select ARCH_MIGHT_HAVE_PC_PARPORT
5162306a36Sopenharmony_ci	select ARCH_MIGHT_HAVE_PC_SERIO
5262306a36Sopenharmony_ci	select ARCH_SPARSEMEM_ENABLE
5362306a36Sopenharmony_ci	select ARCH_STACKWALK
5462306a36Sopenharmony_ci	select ARCH_SUPPORTS_ACPI
5562306a36Sopenharmony_ci	select ARCH_SUPPORTS_ATOMIC_RMW
5662306a36Sopenharmony_ci	select ARCH_SUPPORTS_HUGETLBFS
5762306a36Sopenharmony_ci	select ARCH_SUPPORTS_LTO_CLANG
5862306a36Sopenharmony_ci	select ARCH_SUPPORTS_LTO_CLANG_THIN
5962306a36Sopenharmony_ci	select ARCH_SUPPORTS_NUMA_BALANCING
6062306a36Sopenharmony_ci	select ARCH_USE_BUILTIN_BSWAP
6162306a36Sopenharmony_ci	select ARCH_USE_CMPXCHG_LOCKREF
6262306a36Sopenharmony_ci	select ARCH_USE_QUEUED_RWLOCKS
6362306a36Sopenharmony_ci	select ARCH_USE_QUEUED_SPINLOCKS
6462306a36Sopenharmony_ci	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
6562306a36Sopenharmony_ci	select ARCH_WANT_LD_ORPHAN_WARN
6662306a36Sopenharmony_ci	select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
6762306a36Sopenharmony_ci	select ARCH_WANTS_NO_INSTR
6862306a36Sopenharmony_ci	select BUILDTIME_TABLE_SORT
6962306a36Sopenharmony_ci	select COMMON_CLK
7062306a36Sopenharmony_ci	select CPU_PM
7162306a36Sopenharmony_ci	select EFI
7262306a36Sopenharmony_ci	select GENERIC_CLOCKEVENTS
7362306a36Sopenharmony_ci	select GENERIC_CMOS_UPDATE
7462306a36Sopenharmony_ci	select GENERIC_CPU_AUTOPROBE
7562306a36Sopenharmony_ci	select GENERIC_ENTRY
7662306a36Sopenharmony_ci	select GENERIC_GETTIMEOFDAY
7762306a36Sopenharmony_ci	select GENERIC_IOREMAP if !ARCH_IOREMAP
7862306a36Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
7962306a36Sopenharmony_ci	select GENERIC_IRQ_PROBE
8062306a36Sopenharmony_ci	select GENERIC_IRQ_SHOW
8162306a36Sopenharmony_ci	select GENERIC_LIB_ASHLDI3
8262306a36Sopenharmony_ci	select GENERIC_LIB_ASHRDI3
8362306a36Sopenharmony_ci	select GENERIC_LIB_CMPDI2
8462306a36Sopenharmony_ci	select GENERIC_LIB_LSHRDI3
8562306a36Sopenharmony_ci	select GENERIC_LIB_UCMPDI2
8662306a36Sopenharmony_ci	select GENERIC_LIB_DEVMEM_IS_ALLOWED
8762306a36Sopenharmony_ci	select GENERIC_PCI_IOMAP
8862306a36Sopenharmony_ci	select GENERIC_SCHED_CLOCK
8962306a36Sopenharmony_ci	select GENERIC_SMP_IDLE_THREAD
9062306a36Sopenharmony_ci	select GENERIC_TIME_VSYSCALL
9162306a36Sopenharmony_ci	select GENERIC_VDSO_TIME_NS
9262306a36Sopenharmony_ci	select GPIOLIB
9362306a36Sopenharmony_ci	select HAS_IOPORT
9462306a36Sopenharmony_ci	select HAVE_ARCH_AUDITSYSCALL
9562306a36Sopenharmony_ci	select HAVE_ARCH_JUMP_LABEL
9662306a36Sopenharmony_ci	select HAVE_ARCH_JUMP_LABEL_RELATIVE
9762306a36Sopenharmony_ci	select HAVE_ARCH_KASAN
9862306a36Sopenharmony_ci	select HAVE_ARCH_KFENCE
9962306a36Sopenharmony_ci	select HAVE_ARCH_KGDB if PERF_EVENTS
10062306a36Sopenharmony_ci	select HAVE_ARCH_MMAP_RND_BITS if MMU
10162306a36Sopenharmony_ci	select HAVE_ARCH_SECCOMP
10262306a36Sopenharmony_ci	select HAVE_ARCH_SECCOMP_FILTER
10362306a36Sopenharmony_ci	select HAVE_ARCH_TRACEHOOK
10462306a36Sopenharmony_ci	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
10562306a36Sopenharmony_ci	select HAVE_ASM_MODVERSIONS
10662306a36Sopenharmony_ci	select HAVE_CONTEXT_TRACKING_USER
10762306a36Sopenharmony_ci	select HAVE_C_RECORDMCOUNT
10862306a36Sopenharmony_ci	select HAVE_DEBUG_KMEMLEAK
10962306a36Sopenharmony_ci	select HAVE_DEBUG_STACKOVERFLOW
11062306a36Sopenharmony_ci	select HAVE_DMA_CONTIGUOUS
11162306a36Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE
11262306a36Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE_WITH_ARGS
11362306a36Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
11462306a36Sopenharmony_ci	select HAVE_DYNAMIC_FTRACE_WITH_REGS
11562306a36Sopenharmony_ci	select HAVE_EBPF_JIT
11662306a36Sopenharmony_ci	select HAVE_EFFICIENT_UNALIGNED_ACCESS if !ARCH_STRICT_ALIGN
11762306a36Sopenharmony_ci	select HAVE_EXIT_THREAD
11862306a36Sopenharmony_ci	select HAVE_FAST_GUP
11962306a36Sopenharmony_ci	select HAVE_FTRACE_MCOUNT_RECORD
12062306a36Sopenharmony_ci	select HAVE_FUNCTION_ARG_ACCESS_API
12162306a36Sopenharmony_ci	select HAVE_FUNCTION_ERROR_INJECTION
12262306a36Sopenharmony_ci	select HAVE_FUNCTION_GRAPH_RETVAL if HAVE_FUNCTION_GRAPH_TRACER
12362306a36Sopenharmony_ci	select HAVE_FUNCTION_GRAPH_TRACER
12462306a36Sopenharmony_ci	select HAVE_FUNCTION_TRACER
12562306a36Sopenharmony_ci	select HAVE_GCC_PLUGINS
12662306a36Sopenharmony_ci	select HAVE_GENERIC_VDSO
12762306a36Sopenharmony_ci	select HAVE_HW_BREAKPOINT if PERF_EVENTS
12862306a36Sopenharmony_ci	select HAVE_IOREMAP_PROT
12962306a36Sopenharmony_ci	select HAVE_IRQ_EXIT_ON_IRQ_STACK
13062306a36Sopenharmony_ci	select HAVE_IRQ_TIME_ACCOUNTING
13162306a36Sopenharmony_ci	select HAVE_KPROBES
13262306a36Sopenharmony_ci	select HAVE_KPROBES_ON_FTRACE
13362306a36Sopenharmony_ci	select HAVE_KRETPROBES
13462306a36Sopenharmony_ci	select HAVE_MOD_ARCH_SPECIFIC
13562306a36Sopenharmony_ci	select HAVE_NMI
13662306a36Sopenharmony_ci	select HAVE_PCI
13762306a36Sopenharmony_ci	select HAVE_PERF_EVENTS
13862306a36Sopenharmony_ci	select HAVE_PERF_REGS
13962306a36Sopenharmony_ci	select HAVE_PERF_USER_STACK_DUMP
14062306a36Sopenharmony_ci	select HAVE_REGS_AND_STACK_ACCESS_API
14162306a36Sopenharmony_ci	select HAVE_RETHOOK
14262306a36Sopenharmony_ci	select HAVE_RSEQ
14362306a36Sopenharmony_ci	select HAVE_SAMPLE_FTRACE_DIRECT
14462306a36Sopenharmony_ci	select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
14562306a36Sopenharmony_ci	select HAVE_SETUP_PER_CPU_AREA if NUMA
14662306a36Sopenharmony_ci	select HAVE_STACKPROTECTOR
14762306a36Sopenharmony_ci	select HAVE_SYSCALL_TRACEPOINTS
14862306a36Sopenharmony_ci	select HAVE_TIF_NOHZ
14962306a36Sopenharmony_ci	select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP
15062306a36Sopenharmony_ci	select IRQ_FORCED_THREADING
15162306a36Sopenharmony_ci	select IRQ_LOONGARCH_CPU
15262306a36Sopenharmony_ci	select LOCK_MM_AND_FIND_VMA
15362306a36Sopenharmony_ci	select MMU_GATHER_MERGE_VMAS if MMU
15462306a36Sopenharmony_ci	select MODULES_USE_ELF_RELA if MODULES
15562306a36Sopenharmony_ci	select NEED_PER_CPU_EMBED_FIRST_CHUNK
15662306a36Sopenharmony_ci	select NEED_PER_CPU_PAGE_FIRST_CHUNK
15762306a36Sopenharmony_ci	select OF
15862306a36Sopenharmony_ci	select OF_EARLY_FLATTREE
15962306a36Sopenharmony_ci	select PCI
16062306a36Sopenharmony_ci	select PCI_DOMAINS_GENERIC
16162306a36Sopenharmony_ci	select PCI_ECAM if ACPI
16262306a36Sopenharmony_ci	select PCI_LOONGSON
16362306a36Sopenharmony_ci	select PCI_MSI_ARCH_FALLBACKS
16462306a36Sopenharmony_ci	select PCI_QUIRKS
16562306a36Sopenharmony_ci	select PERF_USE_VMALLOC
16662306a36Sopenharmony_ci	select RTC_LIB
16762306a36Sopenharmony_ci	select SMP
16862306a36Sopenharmony_ci	select SPARSE_IRQ
16962306a36Sopenharmony_ci	select SYSCTL_ARCH_UNALIGN_ALLOW
17062306a36Sopenharmony_ci	select SYSCTL_ARCH_UNALIGN_NO_WARN
17162306a36Sopenharmony_ci	select SYSCTL_EXCEPTION_TRACE
17262306a36Sopenharmony_ci	select SWIOTLB
17362306a36Sopenharmony_ci	select TRACE_IRQFLAGS_SUPPORT
17462306a36Sopenharmony_ci	select USE_PERCPU_NUMA_NODE_ID
17562306a36Sopenharmony_ci	select USER_STACKTRACE_SUPPORT
17662306a36Sopenharmony_ci	select ZONE_DMA32
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ciconfig 32BIT
17962306a36Sopenharmony_ci	bool
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ciconfig 64BIT
18262306a36Sopenharmony_ci	def_bool y
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ciconfig GENERIC_BUG
18562306a36Sopenharmony_ci	def_bool y
18662306a36Sopenharmony_ci	depends on BUG
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ciconfig GENERIC_BUG_RELATIVE_POINTERS
18962306a36Sopenharmony_ci	def_bool y
19062306a36Sopenharmony_ci	depends on GENERIC_BUG
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciconfig GENERIC_CALIBRATE_DELAY
19362306a36Sopenharmony_ci	def_bool y
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ciconfig GENERIC_CSUM
19662306a36Sopenharmony_ci	def_bool y
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ciconfig GENERIC_HWEIGHT
19962306a36Sopenharmony_ci	def_bool y
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ciconfig L1_CACHE_SHIFT
20262306a36Sopenharmony_ci	int
20362306a36Sopenharmony_ci	default "6"
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ciconfig LOCKDEP_SUPPORT
20662306a36Sopenharmony_ci	bool
20762306a36Sopenharmony_ci	default y
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ciconfig STACKTRACE_SUPPORT
21062306a36Sopenharmony_ci	bool
21162306a36Sopenharmony_ci	default y
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci# MACH_LOONGSON32 and MACH_LOONGSON64 are deliberately carried over from the
21462306a36Sopenharmony_ci# MIPS Loongson code, to preserve Loongson-specific code paths in drivers that
21562306a36Sopenharmony_ci# are shared between architectures, and specifically expecting the symbols.
21662306a36Sopenharmony_ciconfig MACH_LOONGSON32
21762306a36Sopenharmony_ci	def_bool 32BIT
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ciconfig MACH_LOONGSON64
22062306a36Sopenharmony_ci	def_bool 64BIT
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ciconfig FIX_EARLYCON_MEM
22362306a36Sopenharmony_ci	def_bool y
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ciconfig PAGE_SIZE_4KB
22662306a36Sopenharmony_ci	bool
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ciconfig PAGE_SIZE_16KB
22962306a36Sopenharmony_ci	bool
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ciconfig PAGE_SIZE_64KB
23262306a36Sopenharmony_ci	bool
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ciconfig PGTABLE_2LEVEL
23562306a36Sopenharmony_ci	bool
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ciconfig PGTABLE_3LEVEL
23862306a36Sopenharmony_ci	bool
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ciconfig PGTABLE_4LEVEL
24162306a36Sopenharmony_ci	bool
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ciconfig PGTABLE_LEVELS
24462306a36Sopenharmony_ci	int
24562306a36Sopenharmony_ci	default 2 if PGTABLE_2LEVEL
24662306a36Sopenharmony_ci	default 3 if PGTABLE_3LEVEL
24762306a36Sopenharmony_ci	default 4 if PGTABLE_4LEVEL
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ciconfig SCHED_OMIT_FRAME_POINTER
25062306a36Sopenharmony_ci	bool
25162306a36Sopenharmony_ci	default y
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ciconfig AS_HAS_EXPLICIT_RELOCS
25462306a36Sopenharmony_ci	def_bool $(as-instr,x:pcalau12i \$t0$(comma)%pc_hi20(x))
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ciconfig AS_HAS_FCSR_CLASS
25762306a36Sopenharmony_ci	def_bool $(as-instr,movfcsr2gr \$t0$(comma)\$fcsr0)
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ciconfig AS_HAS_LSX_EXTENSION
26062306a36Sopenharmony_ci	def_bool $(as-instr,vld \$vr0$(comma)\$a0$(comma)0)
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ciconfig AS_HAS_LASX_EXTENSION
26362306a36Sopenharmony_ci	def_bool $(as-instr,xvld \$xr0$(comma)\$a0$(comma)0)
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_ciconfig AS_HAS_LBT_EXTENSION
26662306a36Sopenharmony_ci	def_bool $(as-instr,movscr2gr \$a0$(comma)\$scr0)
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_cimenu "Kernel type and options"
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_cisource "kernel/Kconfig.hz"
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_cichoice
27362306a36Sopenharmony_ci	prompt "Page Table Layout"
27462306a36Sopenharmony_ci	default 16KB_2LEVEL if 32BIT
27562306a36Sopenharmony_ci	default 16KB_3LEVEL if 64BIT
27662306a36Sopenharmony_ci	help
27762306a36Sopenharmony_ci	  Allows choosing the page table layout, which is a combination
27862306a36Sopenharmony_ci	  of page size and page table levels. The size of virtual memory
27962306a36Sopenharmony_ci	  address space are determined by the page table layout.
28062306a36Sopenharmony_ci
28162306a36Sopenharmony_ciconfig 4KB_3LEVEL
28262306a36Sopenharmony_ci	bool "4KB with 3 levels"
28362306a36Sopenharmony_ci	select PAGE_SIZE_4KB
28462306a36Sopenharmony_ci	select PGTABLE_3LEVEL
28562306a36Sopenharmony_ci	help
28662306a36Sopenharmony_ci	  This option selects 4KB page size with 3 level page tables, which
28762306a36Sopenharmony_ci	  support a maximum of 39 bits of application virtual memory.
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ciconfig 4KB_4LEVEL
29062306a36Sopenharmony_ci	bool "4KB with 4 levels"
29162306a36Sopenharmony_ci	select PAGE_SIZE_4KB
29262306a36Sopenharmony_ci	select PGTABLE_4LEVEL
29362306a36Sopenharmony_ci	help
29462306a36Sopenharmony_ci	  This option selects 4KB page size with 4 level page tables, which
29562306a36Sopenharmony_ci	  support a maximum of 48 bits of application virtual memory.
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ciconfig 16KB_2LEVEL
29862306a36Sopenharmony_ci	bool "16KB with 2 levels"
29962306a36Sopenharmony_ci	select PAGE_SIZE_16KB
30062306a36Sopenharmony_ci	select PGTABLE_2LEVEL
30162306a36Sopenharmony_ci	help
30262306a36Sopenharmony_ci	  This option selects 16KB page size with 2 level page tables, which
30362306a36Sopenharmony_ci	  support a maximum of 36 bits of application virtual memory.
30462306a36Sopenharmony_ci
30562306a36Sopenharmony_ciconfig 16KB_3LEVEL
30662306a36Sopenharmony_ci	bool "16KB with 3 levels"
30762306a36Sopenharmony_ci	select PAGE_SIZE_16KB
30862306a36Sopenharmony_ci	select PGTABLE_3LEVEL
30962306a36Sopenharmony_ci	help
31062306a36Sopenharmony_ci	  This option selects 16KB page size with 3 level page tables, which
31162306a36Sopenharmony_ci	  support a maximum of 47 bits of application virtual memory.
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ciconfig 64KB_2LEVEL
31462306a36Sopenharmony_ci	bool "64KB with 2 levels"
31562306a36Sopenharmony_ci	select PAGE_SIZE_64KB
31662306a36Sopenharmony_ci	select PGTABLE_2LEVEL
31762306a36Sopenharmony_ci	help
31862306a36Sopenharmony_ci	  This option selects 64KB page size with 2 level page tables, which
31962306a36Sopenharmony_ci	  support a maximum of 42 bits of application virtual memory.
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ciconfig 64KB_3LEVEL
32262306a36Sopenharmony_ci	bool "64KB with 3 levels"
32362306a36Sopenharmony_ci	select PAGE_SIZE_64KB
32462306a36Sopenharmony_ci	select PGTABLE_3LEVEL
32562306a36Sopenharmony_ci	help
32662306a36Sopenharmony_ci	  This option selects 64KB page size with 3 level page tables, which
32762306a36Sopenharmony_ci	  support a maximum of 55 bits of application virtual memory.
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ciendchoice
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ciconfig CMDLINE
33262306a36Sopenharmony_ci	string "Built-in kernel command line"
33362306a36Sopenharmony_ci	help
33462306a36Sopenharmony_ci	  For most platforms, the arguments for the kernel's command line
33562306a36Sopenharmony_ci	  are provided at run-time, during boot. However, there are cases
33662306a36Sopenharmony_ci	  where either no arguments are being provided or the provided
33762306a36Sopenharmony_ci	  arguments are insufficient or even invalid.
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci	  When that occurs, it is possible to define a built-in command
34062306a36Sopenharmony_ci	  line here and choose how the kernel should use it later on.
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_cichoice
34362306a36Sopenharmony_ci	prompt "Kernel command line type"
34462306a36Sopenharmony_ci	default CMDLINE_BOOTLOADER
34562306a36Sopenharmony_ci	help
34662306a36Sopenharmony_ci	  Choose how the kernel will handle the provided built-in command
34762306a36Sopenharmony_ci	  line.
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ciconfig CMDLINE_BOOTLOADER
35062306a36Sopenharmony_ci	bool "Use bootloader kernel arguments if available"
35162306a36Sopenharmony_ci	help
35262306a36Sopenharmony_ci	  Prefer the command-line passed by the boot loader if available.
35362306a36Sopenharmony_ci	  Use the built-in command line as fallback in case we get nothing
35462306a36Sopenharmony_ci	  during boot. This is the default behaviour.
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ciconfig CMDLINE_EXTEND
35762306a36Sopenharmony_ci	bool "Use built-in to extend bootloader kernel arguments"
35862306a36Sopenharmony_ci	help
35962306a36Sopenharmony_ci	  The command-line arguments provided during boot will be
36062306a36Sopenharmony_ci	  appended to the built-in command line. This is useful in
36162306a36Sopenharmony_ci	  cases where the provided arguments are insufficient and
36262306a36Sopenharmony_ci	  you don't want to or cannot modify them.
36362306a36Sopenharmony_ci
36462306a36Sopenharmony_ciconfig CMDLINE_FORCE
36562306a36Sopenharmony_ci	bool "Always use the built-in kernel command string"
36662306a36Sopenharmony_ci	help
36762306a36Sopenharmony_ci	  Always use the built-in command line, even if we get one during
36862306a36Sopenharmony_ci	  boot. This is useful in case you need to override the provided
36962306a36Sopenharmony_ci	  command line on systems where you don't have or want control
37062306a36Sopenharmony_ci	  over it.
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ciendchoice
37362306a36Sopenharmony_ci
37462306a36Sopenharmony_ciconfig DMI
37562306a36Sopenharmony_ci	bool "Enable DMI scanning"
37662306a36Sopenharmony_ci	select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
37762306a36Sopenharmony_ci	default y
37862306a36Sopenharmony_ci	help
37962306a36Sopenharmony_ci	  This enables SMBIOS/DMI feature for systems, and scanning of
38062306a36Sopenharmony_ci	  DMI to identify machine quirks.
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ciconfig EFI
38362306a36Sopenharmony_ci	bool "EFI runtime service support"
38462306a36Sopenharmony_ci	select UCS2_STRING
38562306a36Sopenharmony_ci	select EFI_RUNTIME_WRAPPERS
38662306a36Sopenharmony_ci	help
38762306a36Sopenharmony_ci	  This enables the kernel to use EFI runtime services that are
38862306a36Sopenharmony_ci	  available (such as the EFI variable services).
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ciconfig EFI_STUB
39162306a36Sopenharmony_ci	bool "EFI boot stub support"
39262306a36Sopenharmony_ci	default y
39362306a36Sopenharmony_ci	depends on EFI
39462306a36Sopenharmony_ci	select EFI_GENERIC_STUB
39562306a36Sopenharmony_ci	help
39662306a36Sopenharmony_ci	  This kernel feature allows the kernel to be loaded directly by
39762306a36Sopenharmony_ci	  EFI firmware without the use of a bootloader.
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_ciconfig SCHED_SMT
40062306a36Sopenharmony_ci	bool "SMT scheduler support"
40162306a36Sopenharmony_ci	default y
40262306a36Sopenharmony_ci	help
40362306a36Sopenharmony_ci	  Improves scheduler's performance when there are multiple
40462306a36Sopenharmony_ci	  threads in one physical core.
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_ciconfig SMP
40762306a36Sopenharmony_ci	bool "Multi-Processing support"
40862306a36Sopenharmony_ci	help
40962306a36Sopenharmony_ci	  This enables support for systems with more than one CPU. If you have
41062306a36Sopenharmony_ci	  a system with only one CPU, say N. If you have a system with more
41162306a36Sopenharmony_ci	  than one CPU, say Y.
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ci	  If you say N here, the kernel will run on uni- and multiprocessor
41462306a36Sopenharmony_ci	  machines, but will use only one CPU of a multiprocessor machine. If
41562306a36Sopenharmony_ci	  you say Y here, the kernel will run on many, but not all,
41662306a36Sopenharmony_ci	  uniprocessor machines. On a uniprocessor machine, the kernel
41762306a36Sopenharmony_ci	  will run faster if you say N here.
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_ci	  See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>.
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci	  If you don't know what to do here, say N.
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_ciconfig HOTPLUG_CPU
42462306a36Sopenharmony_ci	bool "Support for hot-pluggable CPUs"
42562306a36Sopenharmony_ci	depends on SMP
42662306a36Sopenharmony_ci	select GENERIC_IRQ_MIGRATION
42762306a36Sopenharmony_ci	help
42862306a36Sopenharmony_ci	  Say Y here to allow turning CPUs off and on. CPUs can be
42962306a36Sopenharmony_ci	  controlled through /sys/devices/system/cpu.
43062306a36Sopenharmony_ci	  (Note: power management support will enable this option
43162306a36Sopenharmony_ci	    automatically on SMP systems. )
43262306a36Sopenharmony_ci	  Say N if you want to disable CPU hotplug.
43362306a36Sopenharmony_ci
43462306a36Sopenharmony_ciconfig NR_CPUS
43562306a36Sopenharmony_ci	int "Maximum number of CPUs (2-256)"
43662306a36Sopenharmony_ci	range 2 256
43762306a36Sopenharmony_ci	depends on SMP
43862306a36Sopenharmony_ci	default "64"
43962306a36Sopenharmony_ci	help
44062306a36Sopenharmony_ci	  This allows you to specify the maximum number of CPUs which this
44162306a36Sopenharmony_ci	  kernel will support.
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ciconfig NUMA
44462306a36Sopenharmony_ci	bool "NUMA Support"
44562306a36Sopenharmony_ci	select SMP
44662306a36Sopenharmony_ci	select ACPI_NUMA if ACPI
44762306a36Sopenharmony_ci	help
44862306a36Sopenharmony_ci	  Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
44962306a36Sopenharmony_ci	  support.  This option improves performance on systems with more
45062306a36Sopenharmony_ci	  than one NUMA node; on single node systems it is generally better
45162306a36Sopenharmony_ci	  to leave it disabled.
45262306a36Sopenharmony_ci
45362306a36Sopenharmony_ciconfig NODES_SHIFT
45462306a36Sopenharmony_ci	int
45562306a36Sopenharmony_ci	default "6"
45662306a36Sopenharmony_ci	depends on NUMA
45762306a36Sopenharmony_ci
45862306a36Sopenharmony_ciconfig ARCH_FORCE_MAX_ORDER
45962306a36Sopenharmony_ci	int "Maximum zone order"
46062306a36Sopenharmony_ci	default "13" if PAGE_SIZE_64KB
46162306a36Sopenharmony_ci	default "11" if PAGE_SIZE_16KB
46262306a36Sopenharmony_ci	default "10"
46362306a36Sopenharmony_ci	help
46462306a36Sopenharmony_ci	  The kernel memory allocator divides physically contiguous memory
46562306a36Sopenharmony_ci	  blocks into "zones", where each zone is a power of two number of
46662306a36Sopenharmony_ci	  pages.  This option selects the largest power of two that the kernel
46762306a36Sopenharmony_ci	  keeps in the memory allocator.  If you need to allocate very large
46862306a36Sopenharmony_ci	  blocks of physically contiguous memory, then you may need to
46962306a36Sopenharmony_ci	  increase this value.
47062306a36Sopenharmony_ci
47162306a36Sopenharmony_ci	  The page size is not necessarily 4KB.  Keep this in mind
47262306a36Sopenharmony_ci	  when choosing a value for this option.
47362306a36Sopenharmony_ci
47462306a36Sopenharmony_ciconfig ARCH_IOREMAP
47562306a36Sopenharmony_ci	bool "Enable LoongArch DMW-based ioremap()"
47662306a36Sopenharmony_ci	help
47762306a36Sopenharmony_ci	  We use generic TLB-based ioremap() by default since it has page
47862306a36Sopenharmony_ci	  protection support. However, you can enable LoongArch DMW-based
47962306a36Sopenharmony_ci	  ioremap() for better performance.
48062306a36Sopenharmony_ci
48162306a36Sopenharmony_ciconfig ARCH_WRITECOMBINE
48262306a36Sopenharmony_ci	bool "Enable WriteCombine (WUC) for ioremap()"
48362306a36Sopenharmony_ci	help
48462306a36Sopenharmony_ci	  LoongArch maintains cache coherency in hardware, but when paired
48562306a36Sopenharmony_ci	  with LS7A chipsets the WUC attribute (Weak-ordered UnCached, which
48662306a36Sopenharmony_ci	  is similar to WriteCombine) is out of the scope of cache coherency
48762306a36Sopenharmony_ci	  machanism for PCIe devices (this is a PCIe protocol violation, which
48862306a36Sopenharmony_ci	  may be fixed in newer chipsets).
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_ci	  This means WUC can only used for write-only memory regions now, so
49162306a36Sopenharmony_ci	  this option is disabled by default, making WUC silently fallback to
49262306a36Sopenharmony_ci	  SUC for ioremap(). You can enable this option if the kernel is ensured
49362306a36Sopenharmony_ci	  to run on hardware without this bug.
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_ci	  You can override this setting via writecombine=on/off boot parameter.
49662306a36Sopenharmony_ci
49762306a36Sopenharmony_ciconfig ARCH_STRICT_ALIGN
49862306a36Sopenharmony_ci	bool "Enable -mstrict-align to prevent unaligned accesses" if EXPERT
49962306a36Sopenharmony_ci	default y
50062306a36Sopenharmony_ci	help
50162306a36Sopenharmony_ci	  Not all LoongArch cores support h/w unaligned access, we can use
50262306a36Sopenharmony_ci	  -mstrict-align build parameter to prevent unaligned accesses.
50362306a36Sopenharmony_ci
50462306a36Sopenharmony_ci	  CPUs with h/w unaligned access support:
50562306a36Sopenharmony_ci	  Loongson-2K2000/2K3000/3A5000/3C5000/3D5000.
50662306a36Sopenharmony_ci
50762306a36Sopenharmony_ci	  CPUs without h/w unaligned access support:
50862306a36Sopenharmony_ci	  Loongson-2K500/2K1000.
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_ci	  This option is enabled by default to make the kernel be able to run
51162306a36Sopenharmony_ci	  on all LoongArch systems. But you can disable it manually if you want
51262306a36Sopenharmony_ci	  to run kernel only on systems with h/w unaligned access support in
51362306a36Sopenharmony_ci	  order to optimise for performance.
51462306a36Sopenharmony_ci
51562306a36Sopenharmony_ciconfig CPU_HAS_FPU
51662306a36Sopenharmony_ci	bool
51762306a36Sopenharmony_ci	default y
51862306a36Sopenharmony_ci
51962306a36Sopenharmony_ciconfig CPU_HAS_LSX
52062306a36Sopenharmony_ci	bool "Support for the Loongson SIMD Extension"
52162306a36Sopenharmony_ci	depends on AS_HAS_LSX_EXTENSION
52262306a36Sopenharmony_ci	help
52362306a36Sopenharmony_ci	  Loongson SIMD Extension (LSX) introduces 128 bit wide vector registers
52462306a36Sopenharmony_ci	  and a set of SIMD instructions to operate on them. When this option
52562306a36Sopenharmony_ci	  is enabled the kernel will support allocating & switching LSX
52662306a36Sopenharmony_ci	  vector register contexts. If you know that your kernel will only be
52762306a36Sopenharmony_ci	  running on CPUs which do not support LSX or that your userland will
52862306a36Sopenharmony_ci	  not be making use of it then you may wish to say N here to reduce
52962306a36Sopenharmony_ci	  the size & complexity of your kernel.
53062306a36Sopenharmony_ci
53162306a36Sopenharmony_ci	  If unsure, say Y.
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ciconfig CPU_HAS_LASX
53462306a36Sopenharmony_ci	bool "Support for the Loongson Advanced SIMD Extension"
53562306a36Sopenharmony_ci	depends on CPU_HAS_LSX
53662306a36Sopenharmony_ci	depends on AS_HAS_LASX_EXTENSION
53762306a36Sopenharmony_ci	help
53862306a36Sopenharmony_ci	  Loongson Advanced SIMD Extension (LASX) introduces 256 bit wide vector
53962306a36Sopenharmony_ci	  registers and a set of SIMD instructions to operate on them. When this
54062306a36Sopenharmony_ci	  option is enabled the kernel will support allocating & switching LASX
54162306a36Sopenharmony_ci	  vector register contexts. If you know that your kernel will only be
54262306a36Sopenharmony_ci	  running on CPUs which do not support LASX or that your userland will
54362306a36Sopenharmony_ci	  not be making use of it then you may wish to say N here to reduce
54462306a36Sopenharmony_ci	  the size & complexity of your kernel.
54562306a36Sopenharmony_ci
54662306a36Sopenharmony_ci	  If unsure, say Y.
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_ciconfig CPU_HAS_LBT
54962306a36Sopenharmony_ci	bool "Support for the Loongson Binary Translation Extension"
55062306a36Sopenharmony_ci	depends on AS_HAS_LBT_EXTENSION
55162306a36Sopenharmony_ci	help
55262306a36Sopenharmony_ci	  Loongson Binary Translation (LBT) introduces 4 scratch registers (SCR0
55362306a36Sopenharmony_ci	  to SCR3), x86/ARM eflags (eflags) and x87 fpu stack pointer (ftop).
55462306a36Sopenharmony_ci	  Enabling this option allows the kernel to allocate and switch registers
55562306a36Sopenharmony_ci	  specific to LBT.
55662306a36Sopenharmony_ci
55762306a36Sopenharmony_ci	  If you want to use this feature, such as the Loongson Architecture
55862306a36Sopenharmony_ci	  Translator (LAT), say Y.
55962306a36Sopenharmony_ci
56062306a36Sopenharmony_ciconfig CPU_HAS_PREFETCH
56162306a36Sopenharmony_ci	bool
56262306a36Sopenharmony_ci	default y
56362306a36Sopenharmony_ci
56462306a36Sopenharmony_ciconfig ARCH_SUPPORTS_KEXEC
56562306a36Sopenharmony_ci	def_bool y
56662306a36Sopenharmony_ci
56762306a36Sopenharmony_ciconfig ARCH_SUPPORTS_CRASH_DUMP
56862306a36Sopenharmony_ci	def_bool y
56962306a36Sopenharmony_ci
57062306a36Sopenharmony_ciconfig ARCH_SELECTS_CRASH_DUMP
57162306a36Sopenharmony_ci	def_bool y
57262306a36Sopenharmony_ci	depends on CRASH_DUMP
57362306a36Sopenharmony_ci	select RELOCATABLE
57462306a36Sopenharmony_ci
57562306a36Sopenharmony_ciconfig RELOCATABLE
57662306a36Sopenharmony_ci	bool "Relocatable kernel"
57762306a36Sopenharmony_ci	help
57862306a36Sopenharmony_ci	  This builds the kernel as a Position Independent Executable (PIE),
57962306a36Sopenharmony_ci	  which retains all relocation metadata required, so as to relocate
58062306a36Sopenharmony_ci	  the kernel binary at runtime to a different virtual address from
58162306a36Sopenharmony_ci	  its link address.
58262306a36Sopenharmony_ci
58362306a36Sopenharmony_ciconfig RANDOMIZE_BASE
58462306a36Sopenharmony_ci	bool "Randomize the address of the kernel (KASLR)"
58562306a36Sopenharmony_ci	depends on RELOCATABLE
58662306a36Sopenharmony_ci	help
58762306a36Sopenharmony_ci	   Randomizes the physical and virtual address at which the
58862306a36Sopenharmony_ci	   kernel image is loaded, as a security feature that
58962306a36Sopenharmony_ci	   deters exploit attempts relying on knowledge of the location
59062306a36Sopenharmony_ci	   of kernel internals.
59162306a36Sopenharmony_ci
59262306a36Sopenharmony_ci	   The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET.
59362306a36Sopenharmony_ci
59462306a36Sopenharmony_ci	   If unsure, say N.
59562306a36Sopenharmony_ci
59662306a36Sopenharmony_ciconfig RANDOMIZE_BASE_MAX_OFFSET
59762306a36Sopenharmony_ci	hex "Maximum KASLR offset" if EXPERT
59862306a36Sopenharmony_ci	depends on RANDOMIZE_BASE
59962306a36Sopenharmony_ci	range 0x0 0x10000000
60062306a36Sopenharmony_ci	default "0x01000000"
60162306a36Sopenharmony_ci	help
60262306a36Sopenharmony_ci	  When KASLR is active, this provides the maximum offset that will
60362306a36Sopenharmony_ci	  be applied to the kernel image. It should be set according to the
60462306a36Sopenharmony_ci	  amount of physical RAM available in the target system.
60562306a36Sopenharmony_ci
60662306a36Sopenharmony_ci	  This is limited by the size of the lower address memory, 256MB.
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_ciendmenu
60962306a36Sopenharmony_ci
61062306a36Sopenharmony_ciconfig ARCH_SELECT_MEMORY_MODEL
61162306a36Sopenharmony_ci	def_bool y
61262306a36Sopenharmony_ci
61362306a36Sopenharmony_ciconfig ARCH_FLATMEM_ENABLE
61462306a36Sopenharmony_ci	def_bool y
61562306a36Sopenharmony_ci	depends on !NUMA
61662306a36Sopenharmony_ci
61762306a36Sopenharmony_ciconfig ARCH_SPARSEMEM_ENABLE
61862306a36Sopenharmony_ci	def_bool y
61962306a36Sopenharmony_ci	select SPARSEMEM_VMEMMAP_ENABLE
62062306a36Sopenharmony_ci	help
62162306a36Sopenharmony_ci	  Say Y to support efficient handling of sparse physical memory,
62262306a36Sopenharmony_ci	  for architectures which are either NUMA (Non-Uniform Memory Access)
62362306a36Sopenharmony_ci	  or have huge holes in the physical address space for other reasons.
62462306a36Sopenharmony_ci	  See <file:Documentation/mm/numa.rst> for more.
62562306a36Sopenharmony_ci
62662306a36Sopenharmony_ciconfig ARCH_MEMORY_PROBE
62762306a36Sopenharmony_ci	def_bool y
62862306a36Sopenharmony_ci	depends on MEMORY_HOTPLUG
62962306a36Sopenharmony_ci
63062306a36Sopenharmony_ciconfig MMU
63162306a36Sopenharmony_ci	bool
63262306a36Sopenharmony_ci	default y
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MIN
63562306a36Sopenharmony_ci	default 12
63662306a36Sopenharmony_ci
63762306a36Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MAX
63862306a36Sopenharmony_ci	default 18
63962306a36Sopenharmony_ci
64062306a36Sopenharmony_ciconfig ARCH_SUPPORTS_UPROBES
64162306a36Sopenharmony_ci	def_bool y
64262306a36Sopenharmony_ci
64362306a36Sopenharmony_ciconfig KASAN_SHADOW_OFFSET
64462306a36Sopenharmony_ci	hex
64562306a36Sopenharmony_ci	default 0x0
64662306a36Sopenharmony_ci	depends on KASAN
64762306a36Sopenharmony_ci
64862306a36Sopenharmony_cimenu "Power management options"
64962306a36Sopenharmony_ci
65062306a36Sopenharmony_ciconfig ARCH_SUSPEND_POSSIBLE
65162306a36Sopenharmony_ci	def_bool y
65262306a36Sopenharmony_ci
65362306a36Sopenharmony_ciconfig ARCH_HIBERNATION_POSSIBLE
65462306a36Sopenharmony_ci	def_bool y
65562306a36Sopenharmony_ci
65662306a36Sopenharmony_cisource "kernel/power/Kconfig"
65762306a36Sopenharmony_cisource "drivers/acpi/Kconfig"
65862306a36Sopenharmony_ci
65962306a36Sopenharmony_ciendmenu
660