xref: /linux/arch/riscv/Kconfig (revision ca627e636551e74b528f150d744f67d9a63f0ae7)
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# For a description of the syntax of this configuration file,
4# see Documentation/kbuild/kconfig-language.rst.
5#
6
7config 64BIT
8	bool
9
10config 32BIT
11	bool
12
13config RISCV
14	def_bool y
15	select ACPI_GENERIC_GSI if ACPI
16	select ACPI_PPTT if ACPI
17	select ACPI_REDUCED_HARDWARE_ONLY if ACPI
18	select ACPI_SPCR_TABLE if ACPI
19	select ARCH_DMA_DEFAULT_COHERENT
20	select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION
21	select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM_VMEMMAP
22	select ARCH_ENABLE_MEMORY_HOTREMOVE if MEMORY_HOTPLUG
23	select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2
24	select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
25	select ARCH_HAS_BINFMT_FLAT
26	select ARCH_HAS_CURRENT_STACK_POINTER
27	select ARCH_HAS_DEBUG_VIRTUAL if MMU
28	select ARCH_HAS_DEBUG_VM_PGTABLE
29	select ARCH_HAS_DEBUG_WX
30	select ARCH_HAS_FAST_MULTIPLIER
31	select ARCH_HAS_FORTIFY_SOURCE
32	select ARCH_HAS_GCOV_PROFILE_ALL
33	select ARCH_HAS_GIGANTIC_PAGE
34	select ARCH_HAS_KCOV
35	select ARCH_HAS_KERNEL_FPU_SUPPORT if 64BIT && FPU
36	select ARCH_HAS_MEMBARRIER_CALLBACKS
37	select ARCH_HAS_MEMBARRIER_SYNC_CORE
38	select ARCH_HAS_MMIOWB
39	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
40	select ARCH_HAS_PMEM_API
41	select ARCH_HAS_PREPARE_SYNC_CORE_CMD
42	select ARCH_HAS_PTE_DEVMAP if 64BIT && MMU
43	select ARCH_HAS_PTE_SPECIAL
44	select ARCH_HAS_SET_DIRECT_MAP if MMU
45	select ARCH_HAS_SET_MEMORY if MMU
46	select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL
47	select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL
48	select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
49	select ARCH_HAS_SYSCALL_WRAPPER
50	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
51	select ARCH_HAS_UBSAN
52	select ARCH_HAS_VDSO_DATA
53	select ARCH_KEEP_MEMBLOCK if ACPI
54	select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE	if 64BIT && MMU
55	select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
56	select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
57	select ARCH_STACKWALK
58	select ARCH_SUPPORTS_ATOMIC_RMW
59	select ARCH_SUPPORTS_CFI_CLANG
60	select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU
61	select ARCH_SUPPORTS_HUGETLBFS if MMU
62	# LLD >= 14: https://github.com/llvm/llvm-project/issues/50505
63	select ARCH_SUPPORTS_LTO_CLANG if LLD_VERSION >= 140000
64	select ARCH_SUPPORTS_LTO_CLANG_THIN if LLD_VERSION >= 140000
65	select ARCH_SUPPORTS_PAGE_TABLE_CHECK if MMU
66	select ARCH_SUPPORTS_PER_VMA_LOCK if MMU
67	select ARCH_SUPPORTS_SHADOW_CALL_STACK if HAVE_SHADOW_CALL_STACK
68	select ARCH_USE_CMPXCHG_LOCKREF if 64BIT
69	select ARCH_USE_MEMTEST
70	select ARCH_USE_QUEUED_RWLOCKS
71	select ARCH_USES_CFI_TRAPS if CFI_CLANG
72	select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH if MMU
73	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
74	select ARCH_WANT_FRAME_POINTERS
75	select ARCH_WANT_GENERAL_HUGETLB if !RISCV_ISA_SVNAPOT
76	select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
77	select ARCH_WANT_LD_ORPHAN_WARN if !XIP_KERNEL
78	select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP
79	select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
80	select ARCH_WANTS_NO_INSTR
81	select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE
82	select BINFMT_FLAT_NO_DATA_START_OFFSET if !MMU
83	select BUILDTIME_TABLE_SORT if MMU
84	select CLINT_TIMER if RISCV_M_MODE
85	select CLONE_BACKWARDS
86	select COMMON_CLK
87	select CPU_PM if CPU_IDLE || HIBERNATION || SUSPEND
88	select EDAC_SUPPORT
89	select FRAME_POINTER if PERF_EVENTS || (FUNCTION_TRACER && !DYNAMIC_FTRACE)
90	select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if DYNAMIC_FTRACE
91	select GENERIC_ARCH_TOPOLOGY
92	select GENERIC_ATOMIC64 if !64BIT
93	select GENERIC_CLOCKEVENTS_BROADCAST if SMP
94	select GENERIC_CPU_DEVICES
95	select GENERIC_EARLY_IOREMAP
96	select GENERIC_ENTRY
97	select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
98	select GENERIC_IDLE_POLL_SETUP
99	select GENERIC_IOREMAP if MMU
100	select GENERIC_IRQ_IPI if SMP
101	select GENERIC_IRQ_IPI_MUX if SMP
102	select GENERIC_IRQ_MULTI_HANDLER
103	select GENERIC_IRQ_SHOW
104	select GENERIC_IRQ_SHOW_LEVEL
105	select GENERIC_LIB_DEVMEM_IS_ALLOWED
106	select GENERIC_PCI_IOMAP
107	select GENERIC_PTDUMP if MMU
108	select GENERIC_SCHED_CLOCK
109	select GENERIC_SMP_IDLE_THREAD
110	select GENERIC_TIME_VSYSCALL if MMU && 64BIT
111	select GENERIC_VDSO_TIME_NS if HAVE_GENERIC_VDSO
112	select HARDIRQS_SW_RESEND
113	select HAS_IOPORT if MMU
114	select HAVE_ARCH_AUDITSYSCALL
115	select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP
116	select HAVE_ARCH_HUGE_VMAP if MMU && 64BIT
117	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
118	select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL
119	select HAVE_ARCH_KASAN if MMU && 64BIT
120	select HAVE_ARCH_KASAN_VMALLOC if MMU && 64BIT
121	select HAVE_ARCH_KFENCE if MMU && 64BIT
122	select HAVE_ARCH_KGDB if !XIP_KERNEL
123	select HAVE_ARCH_KGDB_QXFER_PKT
124	select HAVE_ARCH_MMAP_RND_BITS if MMU
125	select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
126	select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
127	select HAVE_ARCH_SECCOMP_FILTER
128	select HAVE_ARCH_STACKLEAK
129	select HAVE_ARCH_THREAD_STRUCT_WHITELIST
130	select HAVE_ARCH_TRACEHOOK
131	select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT && MMU
132	select HAVE_ARCH_USERFAULTFD_MINOR if 64BIT && USERFAULTFD
133	select HAVE_ARCH_VMAP_STACK if MMU && 64BIT
134	select HAVE_ASM_MODVERSIONS
135	select HAVE_CONTEXT_TRACKING_USER
136	select HAVE_DEBUG_KMEMLEAK
137	select HAVE_DMA_CONTIGUOUS if MMU
138	select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && MMU && (CLANG_SUPPORTS_DYNAMIC_FTRACE || GCC_SUPPORTS_DYNAMIC_FTRACE)
139	select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
140	select HAVE_DYNAMIC_FTRACE_WITH_ARGS if HAVE_DYNAMIC_FTRACE
141	select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
142	select HAVE_FUNCTION_GRAPH_TRACER
143	select HAVE_FUNCTION_GRAPH_RETVAL if HAVE_FUNCTION_GRAPH_TRACER
144	select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION
145	select HAVE_EBPF_JIT if MMU
146	select HAVE_GUP_FAST if MMU
147	select HAVE_FUNCTION_ARG_ACCESS_API
148	select HAVE_FUNCTION_ERROR_INJECTION
149	select HAVE_GCC_PLUGINS
150	select HAVE_GENERIC_VDSO if MMU && 64BIT
151	select HAVE_IRQ_TIME_ACCOUNTING
152	select HAVE_KERNEL_BZIP2 if !XIP_KERNEL && !EFI_ZBOOT
153	select HAVE_KERNEL_GZIP if !XIP_KERNEL && !EFI_ZBOOT
154	select HAVE_KERNEL_LZ4 if !XIP_KERNEL && !EFI_ZBOOT
155	select HAVE_KERNEL_LZMA if !XIP_KERNEL && !EFI_ZBOOT
156	select HAVE_KERNEL_LZO if !XIP_KERNEL && !EFI_ZBOOT
157	select HAVE_KERNEL_UNCOMPRESSED if !XIP_KERNEL && !EFI_ZBOOT
158	select HAVE_KERNEL_ZSTD if !XIP_KERNEL && !EFI_ZBOOT
159	select HAVE_KPROBES if !XIP_KERNEL
160	select HAVE_KRETPROBES if !XIP_KERNEL
161	# https://github.com/ClangBuiltLinux/linux/issues/1881
162	select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if !LD_IS_LLD
163	select HAVE_MOVE_PMD
164	select HAVE_MOVE_PUD
165	select HAVE_PAGE_SIZE_4KB
166	select HAVE_PCI
167	select HAVE_PERF_EVENTS
168	select HAVE_PERF_REGS
169	select HAVE_PERF_USER_STACK_DUMP
170	select HAVE_POSIX_CPU_TIMERS_TASK_WORK
171	select HAVE_PREEMPT_DYNAMIC_KEY if !XIP_KERNEL
172	select HAVE_REGS_AND_STACK_ACCESS_API
173	select HAVE_RETHOOK if !XIP_KERNEL
174	select HAVE_RSEQ
175	select HAVE_RUST if RUSTC_SUPPORTS_RISCV
176	select HAVE_SAMPLE_FTRACE_DIRECT
177	select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
178	select HAVE_STACKPROTECTOR
179	select HAVE_SYSCALL_TRACEPOINTS
180	select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
181	select IRQ_DOMAIN
182	select IRQ_FORCED_THREADING
183	select KASAN_VMALLOC if KASAN
184	select LOCK_MM_AND_FIND_VMA
185	select MMU_GATHER_RCU_TABLE_FREE if SMP && MMU
186	select MODULES_USE_ELF_RELA if MODULES
187	select OF
188	select OF_EARLY_FLATTREE
189	select OF_IRQ
190	select PCI_DOMAINS_GENERIC if PCI
191	select PCI_MSI if PCI
192	select RISCV_ALTERNATIVE if !XIP_KERNEL
193	select RISCV_APLIC
194	select RISCV_IMSIC
195	select RISCV_INTC
196	select RISCV_TIMER if RISCV_SBI
197	select SIFIVE_PLIC
198	select SPARSE_IRQ
199	select SYSCTL_EXCEPTION_TRACE
200	select THREAD_INFO_IN_TASK
201	select TRACE_IRQFLAGS_SUPPORT
202	select UACCESS_MEMCPY if !MMU
203	select ZONE_DMA32 if 64BIT
204
205config RUSTC_SUPPORTS_RISCV
206	def_bool y
207	depends on 64BIT
208	# Shadow call stack requires rustc version 1.82+ due to use of the
209	# -Zsanitizer=shadow-call-stack flag.
210	depends on !SHADOW_CALL_STACK || RUSTC_VERSION >= 108200
211
212config CLANG_SUPPORTS_DYNAMIC_FTRACE
213	def_bool CC_IS_CLANG
214	# https://github.com/ClangBuiltLinux/linux/issues/1817
215	depends on AS_IS_GNU || (AS_IS_LLVM && (LD_IS_LLD || LD_VERSION >= 23600))
216
217config GCC_SUPPORTS_DYNAMIC_FTRACE
218	def_bool CC_IS_GCC
219	depends on $(cc-option,-fpatchable-function-entry=8)
220
221config HAVE_SHADOW_CALL_STACK
222	def_bool $(cc-option,-fsanitize=shadow-call-stack)
223	# https://github.com/riscv-non-isa/riscv-elf-psabi-doc/commit/a484e843e6eeb51f0cb7b8819e50da6d2444d769
224	depends on $(ld-option,--no-relax-gp)
225
226config RISCV_USE_LINKER_RELAXATION
227	def_bool y
228	# https://github.com/llvm/llvm-project/commit/6611d58f5bbcbec77262d392e2923e1d680f6985
229	depends on !LD_IS_LLD || LLD_VERSION >= 150000
230
231# https://github.com/llvm/llvm-project/commit/bbc0f99f3bc96f1db16f649fc21dd18e5b0918f6
232config ARCH_HAS_BROKEN_DWARF5
233	def_bool y
234	depends on RISCV_USE_LINKER_RELAXATION
235	# https://github.com/llvm/llvm-project/commit/1df5ea29b43690b6622db2cad7b745607ca4de6a
236	depends on AS_IS_LLVM && AS_VERSION < 180000
237	# https://github.com/llvm/llvm-project/commit/7ffabb61a5569444b5ac9322e22e5471cc5e4a77
238	depends on LD_IS_LLD && LLD_VERSION < 180000
239
240config ARCH_MMAP_RND_BITS_MIN
241	default 18 if 64BIT
242	default 8
243
244config ARCH_MMAP_RND_COMPAT_BITS_MIN
245	default 8
246
247# max bits determined by the following formula:
248#  VA_BITS - PAGE_SHIFT - 3
249config ARCH_MMAP_RND_BITS_MAX
250	default 24 if 64BIT # SV39 based
251	default 17
252
253config ARCH_MMAP_RND_COMPAT_BITS_MAX
254	default 17
255
256# set if we run in machine mode, cleared if we run in supervisor mode
257config RISCV_M_MODE
258	bool "Build a kernel that runs in machine mode"
259	depends on !MMU
260	default y
261	help
262	  Select this option if you want to run the kernel in M-mode,
263	  without the assistance of any other firmware.
264
265# set if we are running in S-mode and can use SBI calls
266config RISCV_SBI
267	bool
268	depends on !RISCV_M_MODE
269	default y
270
271config MMU
272	bool "MMU-based Paged Memory Management Support"
273	default y
274	help
275	  Select if you want MMU-based virtualised addressing space
276	  support by paged memory management. If unsure, say 'Y'.
277
278config PAGE_OFFSET
279	hex
280	default 0x80000000 if !MMU && RISCV_M_MODE
281	default 0x80200000 if !MMU
282	default 0xc0000000 if 32BIT
283	default 0xff60000000000000 if 64BIT
284
285config KASAN_SHADOW_OFFSET
286	hex
287	depends on KASAN_GENERIC
288	default 0xdfffffff00000000 if 64BIT
289	default 0xffffffff if 32BIT
290
291config ARCH_FLATMEM_ENABLE
292	def_bool !NUMA
293
294config ARCH_SPARSEMEM_ENABLE
295	def_bool y
296	depends on MMU
297	select SPARSEMEM_STATIC if 32BIT && SPARSEMEM
298	select SPARSEMEM_VMEMMAP_ENABLE if 64BIT
299
300config ARCH_SELECT_MEMORY_MODEL
301	def_bool ARCH_SPARSEMEM_ENABLE
302
303config ARCH_SUPPORTS_UPROBES
304	def_bool y
305
306config STACKTRACE_SUPPORT
307	def_bool y
308
309config GENERIC_BUG
310	def_bool y
311	depends on BUG
312	select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
313
314config GENERIC_BUG_RELATIVE_POINTERS
315	bool
316
317config GENERIC_CALIBRATE_DELAY
318	def_bool y
319
320config GENERIC_CSUM
321	def_bool y
322
323config GENERIC_HWEIGHT
324	def_bool y
325
326config FIX_EARLYCON_MEM
327	def_bool MMU
328
329config PGTABLE_LEVELS
330	int
331	default 5 if 64BIT
332	default 2
333
334config LOCKDEP_SUPPORT
335	def_bool y
336
337config RISCV_DMA_NONCOHERENT
338	bool
339	select ARCH_HAS_DMA_PREP_COHERENT
340	select ARCH_HAS_SETUP_DMA_OPS
341	select ARCH_HAS_SYNC_DMA_FOR_CPU
342	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
343	select DMA_BOUNCE_UNALIGNED_KMALLOC if SWIOTLB
344
345config RISCV_NONSTANDARD_CACHE_OPS
346	bool
347	help
348	  This enables function pointer support for non-standard noncoherent
349	  systems to handle cache management.
350
351config AS_HAS_INSN
352	def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero)
353
354config AS_HAS_OPTION_ARCH
355	# https://github.com/llvm/llvm-project/commit/9e8ed3403c191ab9c4903e8eeb8f732ff8a43cb4
356	def_bool y
357	depends on $(as-instr, .option arch$(comma) +m)
358
359source "arch/riscv/Kconfig.socs"
360source "arch/riscv/Kconfig.errata"
361
362menu "Platform type"
363
364config NONPORTABLE
365	bool "Allow configurations that result in non-portable kernels"
366	help
367	  RISC-V kernel binaries are compatible between all known systems
368	  whenever possible, but there are some use cases that can only be
369	  satisfied by configurations that result in kernel binaries that are
370	  not portable between systems.
371
372	  Selecting N does not guarantee kernels will be portable to all known
373	  systems.  Selecting any of the options guarded by NONPORTABLE will
374	  result in kernel binaries that are unlikely to be portable between
375	  systems.
376
377	  If unsure, say N.
378
379choice
380	prompt "Base ISA"
381	default ARCH_RV64I
382	help
383	  This selects the base ISA that this kernel will target and must match
384	  the target platform.
385
386config ARCH_RV32I
387	bool "RV32I"
388	depends on NONPORTABLE
389	select 32BIT
390	select GENERIC_LIB_ASHLDI3
391	select GENERIC_LIB_ASHRDI3
392	select GENERIC_LIB_LSHRDI3
393	select GENERIC_LIB_UCMPDI2
394
395config ARCH_RV64I
396	bool "RV64I"
397	select 64BIT
398	select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
399	select SWIOTLB if MMU
400
401endchoice
402
403# We must be able to map all physical memory into the kernel, but the compiler
404# is still a bit more efficient when generating code if it's setup in a manner
405# such that it can only map 2GiB of memory.
406choice
407	prompt "Kernel Code Model"
408	default CMODEL_MEDLOW if 32BIT
409	default CMODEL_MEDANY if 64BIT
410
411	config CMODEL_MEDLOW
412		bool "medium low code model"
413	config CMODEL_MEDANY
414		bool "medium any code model"
415endchoice
416
417config MODULE_SECTIONS
418	bool
419	select HAVE_MOD_ARCH_SPECIFIC
420
421config SMP
422	bool "Symmetric Multi-Processing"
423	help
424	  This enables support for systems with more than one CPU.  If
425	  you say N here, the kernel will run on single and
426	  multiprocessor machines, but will use only one CPU of a
427	  multiprocessor machine. If you say Y here, the kernel will run
428	  on many, but not all, single processor machines. On a single
429	  processor machine, the kernel will run faster if you say N
430	  here.
431
432	  If you don't know what to do here, say N.
433
434config SCHED_MC
435	bool "Multi-core scheduler support"
436	depends on SMP
437	help
438	  Multi-core scheduler support improves the CPU scheduler's decision
439	  making when dealing with multi-core CPU chips at a cost of slightly
440	  increased overhead in some places. If unsure say N here.
441
442config NR_CPUS
443	int "Maximum number of CPUs (2-512)"
444	depends on SMP
445	range 2 512 if !RISCV_SBI_V01
446	range 2 32 if RISCV_SBI_V01 && 32BIT
447	range 2 64 if RISCV_SBI_V01 && 64BIT
448	default "32" if 32BIT
449	default "64" if 64BIT
450
451config HOTPLUG_CPU
452	bool "Support for hot-pluggable CPUs"
453	depends on SMP
454	select GENERIC_IRQ_MIGRATION
455	help
456
457	  Say Y here to experiment with turning CPUs off and on.  CPUs
458	  can be controlled through /sys/devices/system/cpu.
459
460	  Say N if you want to disable CPU hotplug.
461
462choice
463	prompt "CPU Tuning"
464	default TUNE_GENERIC
465
466config TUNE_GENERIC
467	bool "generic"
468
469endchoice
470
471# Common NUMA Features
472config NUMA
473	bool "NUMA Memory Allocation and Scheduler Support"
474	depends on SMP && MMU
475	select ARCH_SUPPORTS_NUMA_BALANCING
476	select GENERIC_ARCH_NUMA
477	select HAVE_SETUP_PER_CPU_AREA
478	select NEED_PER_CPU_EMBED_FIRST_CHUNK
479	select NEED_PER_CPU_PAGE_FIRST_CHUNK
480	select OF_NUMA
481	select USE_PERCPU_NUMA_NODE_ID
482	help
483	  Enable NUMA (Non-Uniform Memory Access) support.
484
485	  The kernel will try to allocate memory used by a CPU on the
486	  local memory of the CPU and add some more NUMA awareness to the kernel.
487
488config NODES_SHIFT
489	int "Maximum NUMA Nodes (as a power of 2)"
490	range 1 10
491	default "2"
492	depends on NUMA
493	help
494	  Specify the maximum number of NUMA Nodes available on the target
495	  system.  Increases memory reserved to accommodate various tables.
496
497config RISCV_ALTERNATIVE
498	bool
499	depends on !XIP_KERNEL
500	help
501	  This Kconfig allows the kernel to automatically patch the
502	  erratum or cpufeature required by the execution platform at run
503	  time. The code patching overhead is minimal, as it's only done
504	  once at boot and once on each module load.
505
506config RISCV_ALTERNATIVE_EARLY
507	bool
508	depends on RISCV_ALTERNATIVE
509	help
510	  Allows early patching of the kernel for special errata
511
512config RISCV_ISA_C
513	bool "Emit compressed instructions when building Linux"
514	default y
515	help
516	  Adds "C" to the ISA subsets that the toolchain is allowed to emit
517	  when building Linux, which results in compressed instructions in the
518	  Linux binary.
519
520	  If you don't know what to do here, say Y.
521
522config RISCV_ISA_SVNAPOT
523	bool "Svnapot extension support for supervisor mode NAPOT pages"
524	depends on 64BIT && MMU
525	depends on RISCV_ALTERNATIVE
526	default y
527	help
528	  Allow kernel to detect the Svnapot ISA-extension dynamically at boot
529	  time and enable its usage.
530
531	  The Svnapot extension is used to mark contiguous PTEs as a range
532	  of contiguous virtual-to-physical translations for a naturally
533	  aligned power-of-2 (NAPOT) granularity larger than the base 4KB page
534	  size. When HUGETLBFS is also selected this option unconditionally
535	  allocates some memory for each NAPOT page size supported by the kernel.
536	  When optimizing for low memory consumption and for platforms without
537	  the Svnapot extension, it may be better to say N here.
538
539	  If you don't know what to do here, say Y.
540
541config RISCV_ISA_SVPBMT
542	bool "Svpbmt extension support for supervisor mode page-based memory types"
543	depends on 64BIT && MMU
544	depends on RISCV_ALTERNATIVE
545	default y
546	help
547	   Adds support to dynamically detect the presence of the Svpbmt
548	   ISA-extension (Supervisor-mode: page-based memory types) and
549	   enable its usage.
550
551	   The memory type for a page contains a combination of attributes
552	   that indicate the cacheability, idempotency, and ordering
553	   properties for access to that page.
554
555	   The Svpbmt extension is only available on 64-bit cpus.
556
557	   If you don't know what to do here, say Y.
558
559config TOOLCHAIN_HAS_V
560	bool
561	default y
562	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64iv)
563	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32iv)
564	depends on LLD_VERSION >= 140000 || LD_VERSION >= 23800
565	depends on AS_HAS_OPTION_ARCH
566
567config RISCV_ISA_V
568	bool "VECTOR extension support"
569	depends on TOOLCHAIN_HAS_V
570	depends on FPU
571	select DYNAMIC_SIGFRAME
572	default y
573	help
574	  Say N here if you want to disable all vector related procedure
575	  in the kernel.
576
577	  If you don't know what to do here, say Y.
578
579config RISCV_ISA_V_DEFAULT_ENABLE
580	bool "Enable userspace Vector by default"
581	depends on RISCV_ISA_V
582	default y
583	help
584	  Say Y here if you want to enable Vector in userspace by default.
585	  Otherwise, userspace has to make explicit prctl() call to enable
586	  Vector, or enable it via the sysctl interface.
587
588	  If you don't know what to do here, say Y.
589
590config RISCV_ISA_V_UCOPY_THRESHOLD
591	int "Threshold size for vectorized user copies"
592	depends on RISCV_ISA_V
593	default 768
594	help
595	  Prefer using vectorized copy_to_user()/copy_from_user() when the
596	  workload size exceeds this value.
597
598config RISCV_ISA_V_PREEMPTIVE
599	bool "Run kernel-mode Vector with kernel preemption"
600	depends on PREEMPTION
601	depends on RISCV_ISA_V
602	default y
603	help
604	  Usually, in-kernel SIMD routines are run with preemption disabled.
605	  Functions which envoke long running SIMD thus must yield core's
606	  vector unit to prevent blocking other tasks for too long.
607
608	  This config allows kernel to run SIMD without explicitly disable
609	  preemption. Enabling this config will result in higher memory
610	  consumption due to the allocation of per-task's kernel Vector context.
611
612config RISCV_ISA_ZAWRS
613	bool "Zawrs extension support for more efficient busy waiting"
614	depends on RISCV_ALTERNATIVE
615	default y
616	help
617	  The Zawrs extension defines instructions to be used in polling loops
618	  which allow a hart to enter a low-power state or to trap to the
619	  hypervisor while waiting on a store to a memory location. Enable the
620	  use of these instructions in the kernel when the Zawrs extension is
621	  detected at boot.
622
623	  If you don't know what to do here, say Y.
624
625config TOOLCHAIN_HAS_ZBB
626	bool
627	default y
628	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb)
629	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb)
630	depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900
631	depends on AS_HAS_OPTION_ARCH
632
633# This symbol indicates that the toolchain supports all v1.0 vector crypto
634# extensions, including Zvk*, Zvbb, and Zvbc.  LLVM added all of these at once.
635# binutils added all except Zvkb, then added Zvkb.  So we just check for Zvkb.
636config TOOLCHAIN_HAS_VECTOR_CRYPTO
637	def_bool $(as-instr, .option arch$(comma) +v$(comma) +zvkb)
638	depends on AS_HAS_OPTION_ARCH
639
640config RISCV_ISA_ZBA
641	bool "Zba extension support for bit manipulation instructions"
642	default y
643	help
644	   Add support for enabling optimisations in the kernel when the Zba
645	   extension is detected at boot.
646
647	   The Zba extension provides instructions to accelerate the generation
648	   of addresses that index into arrays of basic data types.
649
650	   If you don't know what to do here, say Y.
651
652config RISCV_ISA_ZBB
653	bool "Zbb extension support for bit manipulation instructions"
654	depends on TOOLCHAIN_HAS_ZBB
655	depends on RISCV_ALTERNATIVE
656	default y
657	help
658	   Adds support to dynamically detect the presence of the ZBB
659	   extension (basic bit manipulation) and enable its usage.
660
661	   The Zbb extension provides instructions to accelerate a number
662	   of bit-specific operations (count bit population, sign extending,
663	   bitrotation, etc).
664
665	   If you don't know what to do here, say Y.
666
667config TOOLCHAIN_HAS_ZBC
668	bool
669	default y
670	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbc)
671	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbc)
672	depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900
673	depends on AS_HAS_OPTION_ARCH
674
675config RISCV_ISA_ZBC
676	bool "Zbc extension support for carry-less multiplication instructions"
677	depends on TOOLCHAIN_HAS_ZBC
678	depends on MMU
679	depends on RISCV_ALTERNATIVE
680	default y
681	help
682	   Adds support to dynamically detect the presence of the Zbc
683	   extension (carry-less multiplication) and enable its usage.
684
685	   The Zbc extension could accelerate CRC (cyclic redundancy check)
686	   calculations.
687
688	   If you don't know what to do here, say Y.
689
690config RISCV_ISA_ZICBOM
691	bool "Zicbom extension support for non-coherent DMA operation"
692	depends on MMU
693	depends on RISCV_ALTERNATIVE
694	default y
695	select RISCV_DMA_NONCOHERENT
696	select DMA_DIRECT_REMAP
697	help
698	   Adds support to dynamically detect the presence of the ZICBOM
699	   extension (Cache Block Management Operations) and enable its
700	   usage.
701
702	   The Zicbom extension can be used to handle for example
703	   non-coherent DMA support on devices that need it.
704
705	   If you don't know what to do here, say Y.
706
707config RISCV_ISA_ZICBOZ
708	bool "Zicboz extension support for faster zeroing of memory"
709	depends on RISCV_ALTERNATIVE
710	default y
711	help
712	   Enable the use of the Zicboz extension (cbo.zero instruction)
713	   when available.
714
715	   The Zicboz extension is used for faster zeroing of memory.
716
717	   If you don't know what to do here, say Y.
718
719config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
720	def_bool y
721	# https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc
722	# https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=98416dbb0a62579d4a7a4a76bab51b5b52fec2cd
723	depends on AS_IS_GNU && AS_VERSION >= 23600
724	help
725	  Binutils-2.38 and GCC-12.1.0 bumped the default ISA spec to the newer
726	  20191213 version, which moves some instructions from the I extension to
727	  the Zicsr and Zifencei extensions. This requires explicitly specifying
728	  Zicsr and Zifencei when binutils >= 2.38 or GCC >= 12.1.0. Zicsr
729	  and Zifencei are supported in binutils from version 2.36 onwards.
730	  To make life easier, and avoid forcing toolchains that default to a
731	  newer ISA spec to version 2.2, relax the check to binutils >= 2.36.
732	  For clang < 17 or GCC < 11.3.0, for which this is not possible or need
733	  special treatment, this is dealt with in TOOLCHAIN_NEEDS_OLD_ISA_SPEC.
734
735config TOOLCHAIN_NEEDS_OLD_ISA_SPEC
736	def_bool y
737	depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
738	# https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16
739	# https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d29f5d6ab513c52fd872f532c492e35ae9fd6671
740	depends on (CC_IS_CLANG && CLANG_VERSION < 170000) || (CC_IS_GCC && GCC_VERSION < 110300)
741	help
742	  Certain versions of clang and GCC do not support zicsr and zifencei via
743	  -march. This option causes an older ISA spec compatible with these older
744	  versions of clang and GCC to be passed to GAS, which has the same result
745	  as passing zicsr and zifencei to -march.
746
747config FPU
748	bool "FPU support"
749	default y
750	help
751	  Say N here if you want to disable all floating-point related procedure
752	  in the kernel.
753
754	  If you don't know what to do here, say Y.
755
756config IRQ_STACKS
757	bool "Independent irq & softirq stacks" if EXPERT
758	default y
759	select HAVE_IRQ_EXIT_ON_IRQ_STACK
760	select HAVE_SOFTIRQ_ON_OWN_STACK
761	help
762	  Add independent irq & softirq stacks for percpu to prevent kernel stack
763	  overflows. We may save some memory footprint by disabling IRQ_STACKS.
764
765config THREAD_SIZE_ORDER
766	int "Kernel stack size (in power-of-two numbers of page size)" if VMAP_STACK && EXPERT
767	range 0 4
768	default 1 if 32BIT && !KASAN
769	default 3 if 64BIT && KASAN
770	default 2
771	help
772	  Specify the Pages of thread stack size (from 4KB to 64KB), which also
773	  affects irq stack size, which is equal to thread stack size.
774
775config RISCV_MISALIGNED
776	bool
777	select SYSCTL_ARCH_UNALIGN_ALLOW
778	help
779	  Embed support for emulating misaligned loads and stores.
780
781choice
782	prompt "Unaligned Accesses Support"
783	default RISCV_PROBE_UNALIGNED_ACCESS
784	help
785	  This determines the level of support for unaligned accesses. This
786	  information is used by the kernel to perform optimizations. It is also
787	  exposed to user space via the hwprobe syscall. The hardware will be
788	  probed at boot by default.
789
790config RISCV_PROBE_UNALIGNED_ACCESS
791	bool "Probe for hardware unaligned access support"
792	select RISCV_MISALIGNED
793	help
794	  During boot, the kernel will run a series of tests to determine the
795	  speed of unaligned accesses. This probing will dynamically determine
796	  the speed of unaligned accesses on the underlying system. If unaligned
797	  memory accesses trap into the kernel as they are not supported by the
798	  system, the kernel will emulate the unaligned accesses to preserve the
799	  UABI.
800
801config RISCV_EMULATED_UNALIGNED_ACCESS
802	bool "Emulate unaligned access where system support is missing"
803	select RISCV_MISALIGNED
804	help
805	  If unaligned memory accesses trap into the kernel as they are not
806	  supported by the system, the kernel will emulate the unaligned
807	  accesses to preserve the UABI. When the underlying system does support
808	  unaligned accesses, the unaligned accesses are assumed to be slow.
809
810config RISCV_SLOW_UNALIGNED_ACCESS
811	bool "Assume the system supports slow unaligned memory accesses"
812	depends on NONPORTABLE
813	help
814	  Assume that the system supports slow unaligned memory accesses. The
815	  kernel and userspace programs may not be able to run at all on systems
816	  that do not support unaligned memory accesses.
817
818config RISCV_EFFICIENT_UNALIGNED_ACCESS
819	bool "Assume the system supports fast unaligned memory accesses"
820	depends on NONPORTABLE
821	select DCACHE_WORD_ACCESS if MMU
822	select HAVE_EFFICIENT_UNALIGNED_ACCESS
823	help
824	  Assume that the system supports fast unaligned memory accesses. When
825	  enabled, this option improves the performance of the kernel on such
826	  systems. However, the kernel and userspace programs will run much more
827	  slowly, or will not be able to run at all, on systems that do not
828	  support efficient unaligned memory accesses.
829
830endchoice
831
832source "arch/riscv/Kconfig.vendor"
833
834endmenu # "Platform type"
835
836menu "Kernel features"
837
838source "kernel/Kconfig.hz"
839
840config RISCV_SBI_V01
841	bool "SBI v0.1 support"
842	depends on RISCV_SBI
843	help
844	  This config allows kernel to use SBI v0.1 APIs. This will be
845	  deprecated in future once legacy M-mode software are no longer in use.
846
847config RISCV_BOOT_SPINWAIT
848	bool "Spinwait booting method"
849	depends on SMP
850	default y if RISCV_SBI_V01 || RISCV_M_MODE
851	help
852	  This enables support for booting Linux via spinwait method. In the
853	  spinwait method, all cores randomly jump to Linux. One of the cores
854	  gets chosen via lottery and all other keep spinning on a percpu
855	  variable. This method cannot support CPU hotplug and sparse hartid
856	  scheme. It should be only enabled for M-mode Linux or platforms relying
857	  on older firmware without SBI HSM extension. All other platforms should
858	  rely on ordered booting via SBI HSM extension which gets chosen
859	  dynamically at runtime if the firmware supports it.
860
861	  Since spinwait is incompatible with sparse hart IDs, it requires
862	  NR_CPUS be large enough to contain the physical hart ID of the first
863	  hart to enter Linux.
864
865	  If unsure what to do here, say N.
866
867config ARCH_SUPPORTS_KEXEC
868	def_bool y
869
870config ARCH_SELECTS_KEXEC
871	def_bool y
872	depends on KEXEC
873	select HOTPLUG_CPU if SMP
874
875config ARCH_SUPPORTS_KEXEC_FILE
876	def_bool 64BIT
877
878config ARCH_SELECTS_KEXEC_FILE
879	def_bool y
880	depends on KEXEC_FILE
881	select HAVE_IMA_KEXEC if IMA
882	select KEXEC_ELF
883
884config ARCH_SUPPORTS_KEXEC_PURGATORY
885	def_bool ARCH_SUPPORTS_KEXEC_FILE
886
887config ARCH_SUPPORTS_CRASH_DUMP
888	def_bool y
889
890config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
891	def_bool CRASH_RESERVE
892
893config COMPAT
894	bool "Kernel support for 32-bit U-mode"
895	default 64BIT
896	depends on 64BIT && MMU
897	help
898	  This option enables support for a 32-bit U-mode running under a 64-bit
899	  kernel at S-mode. riscv32-specific components such as system calls,
900	  the user helper functions (vdso), signal rt_frame functions and the
901	  ptrace interface are handled appropriately by the kernel.
902
903	  If you want to execute 32-bit userspace applications, say Y.
904
905config PARAVIRT
906	bool "Enable paravirtualization code"
907	depends on RISCV_SBI
908	help
909	  This changes the kernel so it can modify itself when it is run
910	  under a hypervisor, potentially improving performance significantly
911	  over full virtualization.
912
913config PARAVIRT_TIME_ACCOUNTING
914	bool "Paravirtual steal time accounting"
915	depends on PARAVIRT
916	help
917	  Select this option to enable fine granularity task steal time
918	  accounting. Time spent executing other tasks in parallel with
919	  the current vCPU is discounted from the vCPU power. To account for
920	  that, there can be a small performance impact.
921
922	  If in doubt, say N here.
923
924config RELOCATABLE
925	bool "Build a relocatable kernel"
926	depends on MMU && 64BIT && !XIP_KERNEL
927	select MODULE_SECTIONS if MODULES
928	help
929          This builds a kernel as a Position Independent Executable (PIE),
930          which retains all relocation metadata required to relocate the
931          kernel binary at runtime to a different virtual address than the
932          address it was linked at.
933          Since RISCV uses the RELA relocation format, this requires a
934          relocation pass at runtime even if the kernel is loaded at the
935          same address it was linked at.
936
937          If unsure, say N.
938
939config RANDOMIZE_BASE
940        bool "Randomize the address of the kernel image"
941        select RELOCATABLE
942        depends on MMU && 64BIT && !XIP_KERNEL
943        help
944          Randomizes the virtual address at which the kernel image is
945          loaded, as a security feature that deters exploit attempts
946          relying on knowledge of the location of kernel internals.
947
948          It is the bootloader's job to provide entropy, by passing a
949          random u64 value in /chosen/kaslr-seed at kernel entry.
950
951          When booting via the UEFI stub, it will invoke the firmware's
952          EFI_RNG_PROTOCOL implementation (if available) to supply entropy
953          to the kernel proper. In addition, it will randomise the physical
954          location of the kernel Image as well.
955
956          If unsure, say N.
957
958endmenu # "Kernel features"
959
960menu "Boot options"
961
962config CMDLINE
963	string "Built-in kernel command line"
964	help
965	  For most platforms, the arguments for the kernel's command line
966	  are provided at run-time, during boot. However, there are cases
967	  where either no arguments are being provided or the provided
968	  arguments are insufficient or even invalid.
969
970	  When that occurs, it is possible to define a built-in command
971	  line here and choose how the kernel should use it later on.
972
973choice
974	prompt "Built-in command line usage"
975	depends on CMDLINE != ""
976	default CMDLINE_FALLBACK
977	help
978	  Choose how the kernel will handle the provided built-in command
979	  line.
980
981config CMDLINE_FALLBACK
982	bool "Use bootloader kernel arguments if available"
983	help
984	  Use the built-in command line as fallback in case we get nothing
985	  during boot. This is the default behaviour.
986
987config CMDLINE_EXTEND
988	bool "Extend bootloader kernel arguments"
989	help
990	  The command-line arguments provided during boot will be
991	  appended to the built-in command line. This is useful in
992	  cases where the provided arguments are insufficient and
993	  you don't want to or cannot modify them.
994
995config CMDLINE_FORCE
996	bool "Always use the default kernel command string"
997	help
998	  Always use the built-in command line, even if we get one during
999	  boot. This is useful in case you need to override the provided
1000	  command line on systems where you don't have or want control
1001	  over it.
1002
1003endchoice
1004
1005config EFI_STUB
1006	bool
1007
1008config EFI
1009	bool "UEFI runtime support"
1010	depends on OF && !XIP_KERNEL
1011	depends on MMU
1012	default y
1013	select ARCH_SUPPORTS_ACPI if 64BIT
1014	select EFI_GENERIC_STUB
1015	select EFI_PARAMS_FROM_FDT
1016	select EFI_RUNTIME_WRAPPERS
1017	select EFI_STUB
1018	select LIBFDT
1019	select RISCV_ISA_C
1020	select UCS2_STRING
1021	help
1022	  This option provides support for runtime services provided
1023	  by UEFI firmware (such as non-volatile variables, realtime
1024	  clock, and platform reset). A UEFI stub is also provided to
1025	  allow the kernel to be booted as an EFI application. This
1026	  is only useful on systems that have UEFI firmware.
1027
1028config DMI
1029	bool "Enable support for SMBIOS (DMI) tables"
1030	depends on EFI
1031	default y
1032	help
1033	  This enables SMBIOS/DMI feature for systems.
1034
1035	  This option is only useful on systems that have UEFI firmware.
1036	  However, even with this option, the resultant kernel should
1037	  continue to boot on existing non-UEFI platforms.
1038
1039config CC_HAVE_STACKPROTECTOR_TLS
1040	def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0)
1041
1042config STACKPROTECTOR_PER_TASK
1043	def_bool y
1044	depends on !RANDSTRUCT
1045	depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS
1046
1047config PHYS_RAM_BASE_FIXED
1048	bool "Explicitly specified physical RAM address"
1049	depends on NONPORTABLE
1050	default n
1051
1052config PHYS_RAM_BASE
1053	hex "Platform Physical RAM address"
1054	depends on PHYS_RAM_BASE_FIXED
1055	default "0x80000000"
1056	help
1057	  This is the physical address of RAM in the system. It has to be
1058	  explicitly specified to run early relocations of read-write data
1059	  from flash to RAM.
1060
1061config XIP_KERNEL
1062	bool "Kernel Execute-In-Place from ROM"
1063	depends on MMU && SPARSEMEM && NONPORTABLE
1064	# This prevents XIP from being enabled by all{yes,mod}config, which
1065	# fail to build since XIP doesn't support large kernels.
1066	depends on !COMPILE_TEST
1067	select PHYS_RAM_BASE_FIXED
1068	help
1069	  Execute-In-Place allows the kernel to run from non-volatile storage
1070	  directly addressable by the CPU, such as NOR flash. This saves RAM
1071	  space since the text section of the kernel is not loaded from flash
1072	  to RAM.  Read-write sections, such as the data section and stack,
1073	  are still copied to RAM.  The XIP kernel is not compressed since
1074	  it has to run directly from flash, so it will take more space to
1075	  store it.  The flash address used to link the kernel object files,
1076	  and for storing it, is configuration dependent. Therefore, if you
1077	  say Y here, you must know the proper physical address where to
1078	  store the kernel image depending on your own flash memory usage.
1079
1080	  Also note that the make target becomes "make xipImage" rather than
1081	  "make zImage" or "make Image".  The final kernel binary to put in
1082	  ROM memory will be arch/riscv/boot/xipImage.
1083
1084	  SPARSEMEM is required because the kernel text and rodata that are
1085	  flash resident are not backed by memmap, then any attempt to get
1086	  a struct page on those regions will trigger a fault.
1087
1088	  If unsure, say N.
1089
1090config XIP_PHYS_ADDR
1091	hex "XIP Kernel Physical Location"
1092	depends on XIP_KERNEL
1093	default "0x21000000"
1094	help
1095	  This is the physical address in your flash memory the kernel will
1096	  be linked for and stored to.  This address is dependent on your
1097	  own flash usage.
1098
1099config RISCV_ISA_FALLBACK
1100	bool "Permit falling back to parsing riscv,isa for extension support by default"
1101	default y
1102	help
1103	  Parsing the "riscv,isa" devicetree property has been deprecated and
1104	  replaced by a list of explicitly defined strings. For compatibility
1105	  with existing platforms, the kernel will fall back to parsing the
1106	  "riscv,isa" property if the replacements are not found.
1107
1108	  Selecting N here will result in a kernel that does not use the
1109	  fallback, unless the commandline "riscv_isa_fallback" parameter is
1110	  present.
1111
1112	  Please see the dt-binding, located at
1113	  Documentation/devicetree/bindings/riscv/extensions.yaml for details
1114	  on the replacement properties, "riscv,isa-base" and
1115	  "riscv,isa-extensions".
1116
1117config BUILTIN_DTB
1118	bool "Built-in device tree"
1119	depends on OF && NONPORTABLE
1120	help
1121	  Build a device tree into the Linux image.
1122	  This option should be selected if no bootloader is being used.
1123	  If unsure, say N.
1124
1125
1126config BUILTIN_DTB_SOURCE
1127	string "Built-in device tree source"
1128	depends on BUILTIN_DTB
1129	help
1130	  DTS file path (without suffix, relative to arch/riscv/boot/dts)
1131	  for the DTS file that will be used to produce the DTB linked into the
1132	  kernel.
1133
1134endmenu # "Boot options"
1135
1136config PORTABLE
1137	bool
1138	default !NONPORTABLE
1139	select EFI
1140	select MMU
1141	select OF
1142
1143config ARCH_PROC_KCORE_TEXT
1144	def_bool y
1145
1146menu "Power management options"
1147
1148source "kernel/power/Kconfig"
1149
1150config ARCH_HIBERNATION_POSSIBLE
1151	def_bool y
1152
1153config ARCH_HIBERNATION_HEADER
1154	def_bool HIBERNATION
1155
1156config ARCH_SUSPEND_POSSIBLE
1157	def_bool y
1158
1159endmenu # "Power management options"
1160
1161menu "CPU Power Management"
1162
1163source "drivers/cpuidle/Kconfig"
1164
1165source "drivers/cpufreq/Kconfig"
1166
1167endmenu # "CPU Power Management"
1168
1169source "arch/riscv/kvm/Kconfig"
1170
1171source "drivers/acpi/Kconfig"
1172