]> Git Repo - linux.git/blob - arch/riscv/Kconfig
riscv: detect assembler support for .option arch
[linux.git] / arch / riscv / Kconfig
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
7 config 64BIT
8         bool
9
10 config 32BIT
11         bool
12
13 config RISCV
14         def_bool y
15         select ARCH_DMA_DEFAULT_COHERENT
16         select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION
17         select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2
18         select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
19         select ARCH_HAS_BINFMT_FLAT
20         select ARCH_HAS_CURRENT_STACK_POINTER
21         select ARCH_HAS_DEBUG_VIRTUAL if MMU
22         select ARCH_HAS_DEBUG_VM_PGTABLE
23         select ARCH_HAS_DEBUG_WX
24         select ARCH_HAS_FORTIFY_SOURCE
25         select ARCH_HAS_GCOV_PROFILE_ALL
26         select ARCH_HAS_GIGANTIC_PAGE
27         select ARCH_HAS_KCOV
28         select ARCH_HAS_MMIOWB
29         select ARCH_HAS_PMEM_API
30         select ARCH_HAS_PTE_SPECIAL
31         select ARCH_HAS_SET_DIRECT_MAP if MMU
32         select ARCH_HAS_SET_MEMORY if MMU
33         select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL
34         select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL
35         select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
36         select ARCH_HAS_UBSAN_SANITIZE_ALL
37         select ARCH_HAS_VDSO_DATA
38         select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
39         select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
40         select ARCH_STACKWALK
41         select ARCH_SUPPORTS_ATOMIC_RMW
42         select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU
43         select ARCH_SUPPORTS_HUGETLBFS if MMU
44         select ARCH_SUPPORTS_PAGE_TABLE_CHECK if MMU
45         select ARCH_USE_MEMTEST
46         select ARCH_USE_QUEUED_RWLOCKS
47         select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
48         select ARCH_WANT_FRAME_POINTERS
49         select ARCH_WANT_GENERAL_HUGETLB if !RISCV_ISA_SVNAPOT
50         select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
51         select ARCH_WANT_LD_ORPHAN_WARN if !XIP_KERNEL
52         select ARCH_WANT_OPTIMIZE_VMEMMAP
53         select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE
54         select BINFMT_FLAT_NO_DATA_START_OFFSET if !MMU
55         select BUILDTIME_TABLE_SORT if MMU
56         select CLINT_TIMER if !MMU
57         select CLONE_BACKWARDS
58         select COMMON_CLK
59         select CPU_PM if CPU_IDLE || HIBERNATION
60         select EDAC_SUPPORT
61         select GENERIC_ARCH_TOPOLOGY
62         select GENERIC_ATOMIC64 if !64BIT
63         select GENERIC_CLOCKEVENTS_BROADCAST if SMP
64         select GENERIC_EARLY_IOREMAP
65         select GENERIC_ENTRY
66         select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
67         select GENERIC_IDLE_POLL_SETUP
68         select GENERIC_IOREMAP if MMU
69         select GENERIC_IRQ_IPI if SMP
70         select GENERIC_IRQ_IPI_MUX if SMP
71         select GENERIC_IRQ_MULTI_HANDLER
72         select GENERIC_IRQ_SHOW
73         select GENERIC_IRQ_SHOW_LEVEL
74         select GENERIC_LIB_DEVMEM_IS_ALLOWED
75         select GENERIC_PCI_IOMAP
76         select GENERIC_PTDUMP if MMU
77         select GENERIC_SCHED_CLOCK
78         select GENERIC_SMP_IDLE_THREAD
79         select GENERIC_TIME_VSYSCALL if MMU && 64BIT
80         select GENERIC_VDSO_TIME_NS if HAVE_GENERIC_VDSO
81         select HARDIRQS_SW_RESEND
82         select HAS_IOPORT if MMU
83         select HAVE_ARCH_AUDITSYSCALL
84         select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP
85         select HAVE_ARCH_HUGE_VMAP if MMU && 64BIT && !XIP_KERNEL
86         select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
87         select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL
88         select HAVE_ARCH_KASAN if MMU && 64BIT
89         select HAVE_ARCH_KASAN_VMALLOC if MMU && 64BIT
90         select HAVE_ARCH_KFENCE if MMU && 64BIT
91         select HAVE_ARCH_KGDB if !XIP_KERNEL
92         select HAVE_ARCH_KGDB_QXFER_PKT
93         select HAVE_ARCH_MMAP_RND_BITS if MMU
94         select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
95         select HAVE_ARCH_SECCOMP_FILTER
96         select HAVE_ARCH_THREAD_STRUCT_WHITELIST
97         select HAVE_ARCH_TRACEHOOK
98         select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT && MMU
99         select HAVE_ARCH_VMAP_STACK if MMU && 64BIT
100         select HAVE_ASM_MODVERSIONS
101         select HAVE_CONTEXT_TRACKING_USER
102         select HAVE_DEBUG_KMEMLEAK
103         select HAVE_DMA_CONTIGUOUS if MMU
104         select HAVE_EBPF_JIT if MMU
105         select HAVE_FUNCTION_ARG_ACCESS_API
106         select HAVE_FUNCTION_ERROR_INJECTION
107         select HAVE_GCC_PLUGINS
108         select HAVE_GENERIC_VDSO if MMU && 64BIT
109         select HAVE_IRQ_TIME_ACCOUNTING
110         select HAVE_KPROBES if !XIP_KERNEL
111         select HAVE_KPROBES_ON_FTRACE if !XIP_KERNEL
112         select HAVE_KRETPROBES if !XIP_KERNEL
113         select HAVE_RETHOOK if !XIP_KERNEL
114         select HAVE_MOVE_PMD
115         select HAVE_MOVE_PUD
116         select HAVE_PCI
117         select HAVE_PERF_EVENTS
118         select HAVE_PERF_REGS
119         select HAVE_PERF_USER_STACK_DUMP
120         select HAVE_POSIX_CPU_TIMERS_TASK_WORK
121         select HAVE_REGS_AND_STACK_ACCESS_API
122         select HAVE_RSEQ
123         select HAVE_STACKPROTECTOR
124         select HAVE_SYSCALL_TRACEPOINTS
125         select IRQ_DOMAIN
126         select IRQ_FORCED_THREADING
127         select KASAN_VMALLOC if KASAN
128         select MODULES_USE_ELF_RELA if MODULES
129         select MODULE_SECTIONS if MODULES
130         select OF
131         select OF_EARLY_FLATTREE
132         select OF_IRQ
133         select PCI_DOMAINS_GENERIC if PCI
134         select PCI_MSI if PCI
135         select RISCV_ALTERNATIVE if !XIP_KERNEL
136         select RISCV_INTC
137         select RISCV_TIMER if RISCV_SBI
138         select SIFIVE_PLIC
139         select SPARSE_IRQ
140         select SYSCTL_EXCEPTION_TRACE
141         select THREAD_INFO_IN_TASK
142         select TRACE_IRQFLAGS_SUPPORT
143         select UACCESS_MEMCPY if !MMU
144         select ZONE_DMA32 if 64BIT
145         select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && MMU && (CLANG_SUPPORTS_DYNAMIC_FTRACE || GCC_SUPPORTS_DYNAMIC_FTRACE)
146         select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
147         select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
148         select HAVE_FUNCTION_GRAPH_TRACER
149         select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION
150
151 config CLANG_SUPPORTS_DYNAMIC_FTRACE
152         def_bool CC_IS_CLANG
153         # https://github.com/llvm/llvm-project/commit/6ab8927931851bb42b2c93a00801dc499d7d9b1e
154         depends on CLANG_VERSION >= 130000
155         # https://github.com/ClangBuiltLinux/linux/issues/1817
156         depends on AS_IS_GNU || (AS_IS_LLVM && (LD_IS_LLD || LD_VERSION >= 23600))
157
158 config GCC_SUPPORTS_DYNAMIC_FTRACE
159         def_bool CC_IS_GCC
160         depends on $(cc-option,-fpatchable-function-entry=8)
161
162 config ARCH_MMAP_RND_BITS_MIN
163         default 18 if 64BIT
164         default 8
165
166 config ARCH_MMAP_RND_COMPAT_BITS_MIN
167         default 8
168
169 # max bits determined by the following formula:
170 #  VA_BITS - PAGE_SHIFT - 3
171 config ARCH_MMAP_RND_BITS_MAX
172         default 24 if 64BIT # SV39 based
173         default 17
174
175 config ARCH_MMAP_RND_COMPAT_BITS_MAX
176         default 17
177
178 # set if we run in machine mode, cleared if we run in supervisor mode
179 config RISCV_M_MODE
180         bool
181         default !MMU
182
183 # set if we are running in S-mode and can use SBI calls
184 config RISCV_SBI
185         bool
186         depends on !RISCV_M_MODE
187         default y
188
189 config MMU
190         bool "MMU-based Paged Memory Management Support"
191         default y
192         help
193           Select if you want MMU-based virtualised addressing space
194           support by paged memory management. If unsure, say 'Y'.
195
196 config PAGE_OFFSET
197         hex
198         default 0xC0000000 if 32BIT && MMU
199         default 0x80000000 if !MMU
200         default 0xff60000000000000 if 64BIT
201
202 config KASAN_SHADOW_OFFSET
203         hex
204         depends on KASAN_GENERIC
205         default 0xdfffffff00000000 if 64BIT
206         default 0xffffffff if 32BIT
207
208 config ARCH_FLATMEM_ENABLE
209         def_bool !NUMA
210
211 config ARCH_SPARSEMEM_ENABLE
212         def_bool y
213         depends on MMU
214         select SPARSEMEM_STATIC if 32BIT && SPARSEMEM
215         select SPARSEMEM_VMEMMAP_ENABLE if 64BIT
216
217 config ARCH_SELECT_MEMORY_MODEL
218         def_bool ARCH_SPARSEMEM_ENABLE
219
220 config ARCH_SUPPORTS_UPROBES
221         def_bool y
222
223 config STACKTRACE_SUPPORT
224         def_bool y
225
226 config GENERIC_BUG
227         def_bool y
228         depends on BUG
229         select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
230
231 config GENERIC_BUG_RELATIVE_POINTERS
232         bool
233
234 config GENERIC_CALIBRATE_DELAY
235         def_bool y
236
237 config GENERIC_CSUM
238         def_bool y
239
240 config GENERIC_HWEIGHT
241         def_bool y
242
243 config FIX_EARLYCON_MEM
244         def_bool MMU
245
246 config PGTABLE_LEVELS
247         int
248         default 5 if 64BIT
249         default 2
250
251 config LOCKDEP_SUPPORT
252         def_bool y
253
254 config RISCV_DMA_NONCOHERENT
255         bool
256         select ARCH_HAS_DMA_PREP_COHERENT
257         select ARCH_HAS_SETUP_DMA_OPS
258         select ARCH_HAS_SYNC_DMA_FOR_CPU
259         select ARCH_HAS_SYNC_DMA_FOR_DEVICE
260         select DMA_DIRECT_REMAP
261
262 config AS_HAS_INSN
263         def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero)
264
265 config AS_HAS_OPTION_ARCH
266         # https://reviews.llvm.org/D123515
267         def_bool y
268         depends on $(as-instr, .option arch$(comma) +m)
269         depends on !$(as-instr, .option arch$(comma) -i)
270
271 source "arch/riscv/Kconfig.socs"
272 source "arch/riscv/Kconfig.errata"
273
274 menu "Platform type"
275
276 config NONPORTABLE
277         bool "Allow configurations that result in non-portable kernels"
278         help
279           RISC-V kernel binaries are compatible between all known systems
280           whenever possible, but there are some use cases that can only be
281           satisfied by configurations that result in kernel binaries that are
282           not portable between systems.
283
284           Selecting N does not guarantee kernels will be portable to all known
285           systems.  Selecting any of the options guarded by NONPORTABLE will
286           result in kernel binaries that are unlikely to be portable between
287           systems.
288
289           If unsure, say N.
290
291 choice
292         prompt "Base ISA"
293         default ARCH_RV64I
294         help
295           This selects the base ISA that this kernel will target and must match
296           the target platform.
297
298 config ARCH_RV32I
299         bool "RV32I"
300         depends on NONPORTABLE
301         select 32BIT
302         select GENERIC_LIB_ASHLDI3
303         select GENERIC_LIB_ASHRDI3
304         select GENERIC_LIB_LSHRDI3
305         select GENERIC_LIB_UCMPDI2
306
307 config ARCH_RV64I
308         bool "RV64I"
309         select 64BIT
310         select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
311         select SWIOTLB if MMU
312
313 endchoice
314
315 # We must be able to map all physical memory into the kernel, but the compiler
316 # is still a bit more efficient when generating code if it's setup in a manner
317 # such that it can only map 2GiB of memory.
318 choice
319         prompt "Kernel Code Model"
320         default CMODEL_MEDLOW if 32BIT
321         default CMODEL_MEDANY if 64BIT
322
323         config CMODEL_MEDLOW
324                 bool "medium low code model"
325         config CMODEL_MEDANY
326                 bool "medium any code model"
327 endchoice
328
329 config MODULE_SECTIONS
330         bool
331         select HAVE_MOD_ARCH_SPECIFIC
332
333 config SMP
334         bool "Symmetric Multi-Processing"
335         help
336           This enables support for systems with more than one CPU.  If
337           you say N here, the kernel will run on single and
338           multiprocessor machines, but will use only one CPU of a
339           multiprocessor machine. If you say Y here, the kernel will run
340           on many, but not all, single processor machines. On a single
341           processor machine, the kernel will run faster if you say N
342           here.
343
344           If you don't know what to do here, say N.
345
346 config SCHED_MC
347         bool "Multi-core scheduler support"
348         depends on SMP
349         help
350           Multi-core scheduler support improves the CPU scheduler's decision
351           making when dealing with multi-core CPU chips at a cost of slightly
352           increased overhead in some places. If unsure say N here.
353
354 config NR_CPUS
355         int "Maximum number of CPUs (2-512)"
356         depends on SMP
357         range 2 512 if !RISCV_SBI_V01
358         range 2 32 if RISCV_SBI_V01 && 32BIT
359         range 2 64 if RISCV_SBI_V01 && 64BIT
360         default "32" if 32BIT
361         default "64" if 64BIT
362
363 config HOTPLUG_CPU
364         bool "Support for hot-pluggable CPUs"
365         depends on SMP
366         select GENERIC_IRQ_MIGRATION
367         help
368
369           Say Y here to experiment with turning CPUs off and on.  CPUs
370           can be controlled through /sys/devices/system/cpu.
371
372           Say N if you want to disable CPU hotplug.
373
374 choice
375         prompt "CPU Tuning"
376         default TUNE_GENERIC
377
378 config TUNE_GENERIC
379         bool "generic"
380
381 endchoice
382
383 # Common NUMA Features
384 config NUMA
385         bool "NUMA Memory Allocation and Scheduler Support"
386         depends on SMP && MMU
387         select ARCH_SUPPORTS_NUMA_BALANCING
388         select GENERIC_ARCH_NUMA
389         select NEED_PER_CPU_EMBED_FIRST_CHUNK
390         select OF_NUMA
391         select USE_PERCPU_NUMA_NODE_ID
392         help
393           Enable NUMA (Non-Uniform Memory Access) support.
394
395           The kernel will try to allocate memory used by a CPU on the
396           local memory of the CPU and add some more NUMA awareness to the kernel.
397
398 config NODES_SHIFT
399         int "Maximum NUMA Nodes (as a power of 2)"
400         range 1 10
401         default "2"
402         depends on NUMA
403         help
404           Specify the maximum number of NUMA Nodes available on the target
405           system.  Increases memory reserved to accommodate various tables.
406
407 config RISCV_ALTERNATIVE
408         bool
409         depends on !XIP_KERNEL
410         help
411           This Kconfig allows the kernel to automatically patch the
412           erratum or cpufeature required by the execution platform at run
413           time. The code patching overhead is minimal, as it's only done
414           once at boot and once on each module load.
415
416 config RISCV_ALTERNATIVE_EARLY
417         bool
418         depends on RISCV_ALTERNATIVE
419         help
420           Allows early patching of the kernel for special errata
421
422 config RISCV_ISA_C
423         bool "Emit compressed instructions when building Linux"
424         default y
425         help
426           Adds "C" to the ISA subsets that the toolchain is allowed to emit
427           when building Linux, which results in compressed instructions in the
428           Linux binary.
429
430           If you don't know what to do here, say Y.
431
432 config RISCV_ISA_SVNAPOT
433         bool "Svnapot extension support for supervisor mode NAPOT pages"
434         depends on 64BIT && MMU
435         depends on RISCV_ALTERNATIVE
436         default y
437         help
438           Allow kernel to detect the Svnapot ISA-extension dynamically at boot
439           time and enable its usage.
440
441           The Svnapot extension is used to mark contiguous PTEs as a range
442           of contiguous virtual-to-physical translations for a naturally
443           aligned power-of-2 (NAPOT) granularity larger than the base 4KB page
444           size. When HUGETLBFS is also selected this option unconditionally
445           allocates some memory for each NAPOT page size supported by the kernel.
446           When optimizing for low memory consumption and for platforms without
447           the Svnapot extension, it may be better to say N here.
448
449           If you don't know what to do here, say Y.
450
451 config RISCV_ISA_SVPBMT
452         bool "Svpbmt extension support for supervisor mode page-based memory types"
453         depends on 64BIT && MMU
454         depends on RISCV_ALTERNATIVE
455         default y
456         help
457            Adds support to dynamically detect the presence of the Svpbmt
458            ISA-extension (Supervisor-mode: page-based memory types) and
459            enable its usage.
460
461            The memory type for a page contains a combination of attributes
462            that indicate the cacheability, idempotency, and ordering
463            properties for access to that page.
464
465            The Svpbmt extension is only available on 64-bit cpus.
466
467            If you don't know what to do here, say Y.
468
469 config TOOLCHAIN_HAS_ZBB
470         bool
471         default y
472         depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb)
473         depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb)
474         depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900
475         depends on AS_HAS_OPTION_ARCH
476
477 config RISCV_ISA_ZBB
478         bool "Zbb extension support for bit manipulation instructions"
479         depends on TOOLCHAIN_HAS_ZBB
480         depends on MMU
481         depends on RISCV_ALTERNATIVE
482         default y
483         help
484            Adds support to dynamically detect the presence of the ZBB
485            extension (basic bit manipulation) and enable its usage.
486
487            The Zbb extension provides instructions to accelerate a number
488            of bit-specific operations (count bit population, sign extending,
489            bitrotation, etc).
490
491            If you don't know what to do here, say Y.
492
493 config RISCV_ISA_ZICBOM
494         bool "Zicbom extension support for non-coherent DMA operation"
495         depends on MMU
496         depends on RISCV_ALTERNATIVE
497         default y
498         select RISCV_DMA_NONCOHERENT
499         help
500            Adds support to dynamically detect the presence of the ZICBOM
501            extension (Cache Block Management Operations) and enable its
502            usage.
503
504            The Zicbom extension can be used to handle for example
505            non-coherent DMA support on devices that need it.
506
507            If you don't know what to do here, say Y.
508
509 config RISCV_ISA_ZICBOZ
510         bool "Zicboz extension support for faster zeroing of memory"
511         depends on MMU
512         depends on RISCV_ALTERNATIVE
513         default y
514         help
515            Enable the use of the Zicboz extension (cbo.zero instruction)
516            when available.
517
518            The Zicboz extension is used for faster zeroing of memory.
519
520            If you don't know what to do here, say Y.
521
522 config TOOLCHAIN_HAS_ZIHINTPAUSE
523         bool
524         default y
525         depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zihintpause)
526         depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zihintpause)
527         depends on LLD_VERSION >= 150000 || LD_VERSION >= 23600
528
529 config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
530         def_bool y
531         # https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc
532         depends on AS_IS_GNU && AS_VERSION >= 23800
533         help
534           Newer binutils versions default to ISA spec version 20191213 which
535           moves some instructions from the I extension to the Zicsr and Zifencei
536           extensions.
537
538 config TOOLCHAIN_NEEDS_OLD_ISA_SPEC
539         def_bool y
540         depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
541         # https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16
542         depends on CC_IS_CLANG && CLANG_VERSION < 170000
543         help
544           Certain versions of clang do not support zicsr and zifencei via -march
545           but newer versions of binutils require it for the reasons noted in the
546           help text of CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI. This
547           option causes an older ISA spec compatible with these older versions
548           of clang to be passed to GAS, which has the same result as passing zicsr
549           and zifencei to -march.
550
551 config FPU
552         bool "FPU support"
553         default y
554         help
555           Say N here if you want to disable all floating-point related procedure
556           in the kernel.
557
558           If you don't know what to do here, say Y.
559
560 endmenu # "Platform type"
561
562 menu "Kernel features"
563
564 source "kernel/Kconfig.hz"
565
566 config RISCV_SBI_V01
567         bool "SBI v0.1 support"
568         depends on RISCV_SBI
569         help
570           This config allows kernel to use SBI v0.1 APIs. This will be
571           deprecated in future once legacy M-mode software are no longer in use.
572
573 config RISCV_BOOT_SPINWAIT
574         bool "Spinwait booting method"
575         depends on SMP
576         default y if RISCV_SBI_V01 || RISCV_M_MODE
577         help
578           This enables support for booting Linux via spinwait method. In the
579           spinwait method, all cores randomly jump to Linux. One of the cores
580           gets chosen via lottery and all other keep spinning on a percpu
581           variable. This method cannot support CPU hotplug and sparse hartid
582           scheme. It should be only enabled for M-mode Linux or platforms relying
583           on older firmware without SBI HSM extension. All other platforms should
584           rely on ordered booting via SBI HSM extension which gets chosen
585           dynamically at runtime if the firmware supports it.
586
587           Since spinwait is incompatible with sparse hart IDs, it requires
588           NR_CPUS be large enough to contain the physical hart ID of the first
589           hart to enter Linux.
590
591           If unsure what to do here, say N.
592
593 config KEXEC
594         bool "Kexec system call"
595         depends on MMU
596         select HOTPLUG_CPU if SMP
597         select KEXEC_CORE
598         help
599           kexec is a system call that implements the ability to shutdown your
600           current kernel, and to start another kernel. It is like a reboot
601           but it is independent of the system firmware. And like a reboot
602           you can start any kernel with it, not just Linux.
603
604           The name comes from the similarity to the exec system call.
605
606 config KEXEC_FILE
607         bool "kexec file based systmem call"
608         depends on 64BIT && MMU
609         select HAVE_IMA_KEXEC if IMA
610         select KEXEC_CORE
611         select KEXEC_ELF
612         help
613           This is new version of kexec system call. This system call is
614           file based and takes file descriptors as system call argument
615           for kernel and initramfs as opposed to list of segments as
616           accepted by previous system call.
617
618           If you don't know what to do here, say Y.
619
620 config ARCH_HAS_KEXEC_PURGATORY
621         def_bool KEXEC_FILE
622         depends on CRYPTO=y
623         depends on CRYPTO_SHA256=y
624
625 config CRASH_DUMP
626         bool "Build kdump crash kernel"
627         help
628           Generate crash dump after being started by kexec. This should
629           be normally only set in special crash dump kernels which are
630           loaded in the main kernel with kexec-tools into a specially
631           reserved region and then later executed after a crash by
632           kdump/kexec.
633
634           For more details see Documentation/admin-guide/kdump/kdump.rst
635
636 config COMPAT
637         bool "Kernel support for 32-bit U-mode"
638         default 64BIT
639         depends on 64BIT && MMU
640         help
641           This option enables support for a 32-bit U-mode running under a 64-bit
642           kernel at S-mode. riscv32-specific components such as system calls,
643           the user helper functions (vdso), signal rt_frame functions and the
644           ptrace interface are handled appropriately by the kernel.
645
646           If you want to execute 32-bit userspace applications, say Y.
647
648 config RELOCATABLE
649         bool "Build a relocatable kernel"
650         depends on MMU && 64BIT && !XIP_KERNEL
651         help
652           This builds a kernel as a Position Independent Executable (PIE),
653           which retains all relocation metadata required to relocate the
654           kernel binary at runtime to a different virtual address than the
655           address it was linked at.
656           Since RISCV uses the RELA relocation format, this requires a
657           relocation pass at runtime even if the kernel is loaded at the
658           same address it was linked at.
659
660           If unsure, say N.
661
662 endmenu # "Kernel features"
663
664 menu "Boot options"
665
666 config CMDLINE
667         string "Built-in kernel command line"
668         help
669           For most platforms, the arguments for the kernel's command line
670           are provided at run-time, during boot. However, there are cases
671           where either no arguments are being provided or the provided
672           arguments are insufficient or even invalid.
673
674           When that occurs, it is possible to define a built-in command
675           line here and choose how the kernel should use it later on.
676
677 choice
678         prompt "Built-in command line usage" if CMDLINE != ""
679         default CMDLINE_FALLBACK
680         help
681           Choose how the kernel will handle the provided built-in command
682           line.
683
684 config CMDLINE_FALLBACK
685         bool "Use bootloader kernel arguments if available"
686         help
687           Use the built-in command line as fallback in case we get nothing
688           during boot. This is the default behaviour.
689
690 config CMDLINE_EXTEND
691         bool "Extend bootloader kernel arguments"
692         help
693           The command-line arguments provided during boot will be
694           appended to the built-in command line. This is useful in
695           cases where the provided arguments are insufficient and
696           you don't want to or cannot modify them.
697
698 config CMDLINE_FORCE
699         bool "Always use the default kernel command string"
700         help
701           Always use the built-in command line, even if we get one during
702           boot. This is useful in case you need to override the provided
703           command line on systems where you don't have or want control
704           over it.
705
706 endchoice
707
708 config EFI_STUB
709         bool
710
711 config EFI
712         bool "UEFI runtime support"
713         depends on OF && !XIP_KERNEL
714         depends on MMU
715         default y
716         select EFI_GENERIC_STUB
717         select EFI_PARAMS_FROM_FDT
718         select EFI_RUNTIME_WRAPPERS
719         select EFI_STUB
720         select LIBFDT
721         select RISCV_ISA_C
722         select UCS2_STRING
723         help
724           This option provides support for runtime services provided
725           by UEFI firmware (such as non-volatile variables, realtime
726           clock, and platform reset). A UEFI stub is also provided to
727           allow the kernel to be booted as an EFI application. This
728           is only useful on systems that have UEFI firmware.
729
730 config CC_HAVE_STACKPROTECTOR_TLS
731         def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0)
732
733 config STACKPROTECTOR_PER_TASK
734         def_bool y
735         depends on !RANDSTRUCT
736         depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS
737
738 config PHYS_RAM_BASE_FIXED
739         bool "Explicitly specified physical RAM address"
740         depends on NONPORTABLE
741         default n
742
743 config PHYS_RAM_BASE
744         hex "Platform Physical RAM address"
745         depends on PHYS_RAM_BASE_FIXED
746         default "0x80000000"
747         help
748           This is the physical address of RAM in the system. It has to be
749           explicitly specified to run early relocations of read-write data
750           from flash to RAM.
751
752 config XIP_KERNEL
753         bool "Kernel Execute-In-Place from ROM"
754         depends on MMU && SPARSEMEM && NONPORTABLE
755         # This prevents XIP from being enabled by all{yes,mod}config, which
756         # fail to build since XIP doesn't support large kernels.
757         depends on !COMPILE_TEST
758         select PHYS_RAM_BASE_FIXED
759         help
760           Execute-In-Place allows the kernel to run from non-volatile storage
761           directly addressable by the CPU, such as NOR flash. This saves RAM
762           space since the text section of the kernel is not loaded from flash
763           to RAM.  Read-write sections, such as the data section and stack,
764           are still copied to RAM.  The XIP kernel is not compressed since
765           it has to run directly from flash, so it will take more space to
766           store it.  The flash address used to link the kernel object files,
767           and for storing it, is configuration dependent. Therefore, if you
768           say Y here, you must know the proper physical address where to
769           store the kernel image depending on your own flash memory usage.
770
771           Also note that the make target becomes "make xipImage" rather than
772           "make zImage" or "make Image".  The final kernel binary to put in
773           ROM memory will be arch/riscv/boot/xipImage.
774
775           SPARSEMEM is required because the kernel text and rodata that are
776           flash resident are not backed by memmap, then any attempt to get
777           a struct page on those regions will trigger a fault.
778
779           If unsure, say N.
780
781 config XIP_PHYS_ADDR
782         hex "XIP Kernel Physical Location"
783         depends on XIP_KERNEL
784         default "0x21000000"
785         help
786           This is the physical address in your flash memory the kernel will
787           be linked for and stored to.  This address is dependent on your
788           own flash usage.
789
790 endmenu # "Boot options"
791
792 config BUILTIN_DTB
793         bool
794         depends on OF && NONPORTABLE
795         default y if XIP_KERNEL
796
797 config PORTABLE
798         bool
799         default !NONPORTABLE
800         select EFI
801         select MMU
802         select OF
803
804 menu "Power management options"
805
806 source "kernel/power/Kconfig"
807
808 config ARCH_HIBERNATION_POSSIBLE
809         def_bool y
810
811 config ARCH_HIBERNATION_HEADER
812         def_bool HIBERNATION
813
814 endmenu # "Power management options"
815
816 menu "CPU Power Management"
817
818 source "drivers/cpuidle/Kconfig"
819
820 source "drivers/cpufreq/Kconfig"
821
822 endmenu # "CPU Power Management"
823
824 source "arch/riscv/kvm/Kconfig"
This page took 0.079373 seconds and 4 git commands to generate.