hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/riscv/Kconfig
....@@ -1,6 +1,7 @@
1
+# SPDX-License-Identifier: GPL-2.0-only
12 #
23 # For a description of the syntax of this configuration file,
3
-# see Documentation/kbuild/kconfig-language.txt.
4
+# see Documentation/kbuild/kconfig-language.rst.
45 #
56
67 config 64BIT
....@@ -11,60 +12,165 @@
1112
1213 config RISCV
1314 def_bool y
14
- # even on 32-bit, physical (and DMA) addresses are > 32-bits
15
- select PHYS_ADDR_T_64BIT
15
+ select ARCH_CLOCKSOURCE_INIT
16
+ select ARCH_SUPPORTS_ATOMIC_RMW
17
+ select ARCH_HAS_BINFMT_FLAT
18
+ select ARCH_HAS_DEBUG_VM_PGTABLE
19
+ select ARCH_HAS_DEBUG_VIRTUAL if MMU
20
+ select ARCH_HAS_DEBUG_WX
21
+ select ARCH_HAS_GCOV_PROFILE_ALL
22
+ select ARCH_HAS_GIGANTIC_PAGE
23
+ select ARCH_HAS_KCOV
24
+ select ARCH_HAS_MMIOWB
25
+ select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
26
+ select ARCH_HAS_PTE_SPECIAL
27
+ select ARCH_HAS_SET_DIRECT_MAP
28
+ select ARCH_HAS_SET_MEMORY
29
+ select ARCH_HAS_STRICT_KERNEL_RWX if MMU
30
+ select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
31
+ select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
32
+ select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
33
+ select ARCH_WANT_FRAME_POINTERS
34
+ select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
35
+ select CLONE_BACKWARDS
36
+ select CLINT_TIMER if !MMU
37
+ select COMMON_CLK
38
+ select EDAC_SUPPORT
39
+ select GENERIC_ARCH_TOPOLOGY
40
+ select GENERIC_ATOMIC64 if !64BIT
41
+ select GENERIC_CLOCKEVENTS
42
+ select GENERIC_EARLY_IOREMAP
43
+ select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
44
+ select GENERIC_IOREMAP
45
+ select GENERIC_IRQ_MULTI_HANDLER
46
+ select GENERIC_IRQ_SHOW
47
+ select GENERIC_PCI_IOMAP
48
+ select GENERIC_PTDUMP if MMU
49
+ select GENERIC_SCHED_CLOCK
50
+ select GENERIC_SMP_IDLE_THREAD
51
+ select GENERIC_STRNCPY_FROM_USER if MMU
52
+ select GENERIC_STRNLEN_USER if MMU
53
+ select GENERIC_TIME_VSYSCALL if MMU && 64BIT
54
+ select HANDLE_DOMAIN_IRQ
55
+ select HAVE_ARCH_AUDITSYSCALL
56
+ select HAVE_ARCH_JUMP_LABEL
57
+ select HAVE_ARCH_JUMP_LABEL_RELATIVE
58
+ select HAVE_ARCH_KASAN if MMU && 64BIT
59
+ select HAVE_ARCH_KGDB
60
+ select HAVE_ARCH_KGDB_QXFER_PKT
61
+ select HAVE_ARCH_MMAP_RND_BITS if MMU
62
+ select HAVE_ARCH_SECCOMP_FILTER
63
+ select HAVE_ARCH_TRACEHOOK
64
+ select HAVE_ASM_MODVERSIONS
65
+ select HAVE_CONTEXT_TRACKING
66
+ select HAVE_DEBUG_KMEMLEAK
67
+ select HAVE_DMA_CONTIGUOUS if MMU
68
+ select HAVE_EBPF_JIT if MMU
69
+ select HAVE_FUTEX_CMPXCHG if FUTEX
70
+ select HAVE_GCC_PLUGINS
71
+ select HAVE_GENERIC_VDSO if MMU && 64BIT
72
+ select HAVE_PCI
73
+ select HAVE_PERF_EVENTS
74
+ select HAVE_PERF_REGS
75
+ select HAVE_PERF_USER_STACK_DUMP
76
+ select HAVE_STACKPROTECTOR
77
+ select HAVE_SYSCALL_TRACEPOINTS
78
+ select IRQ_DOMAIN
79
+ select MODULES_USE_ELF_RELA if MODULES
80
+ select MODULE_SECTIONS if MODULES
1681 select OF
1782 select OF_EARLY_FLATTREE
1883 select OF_IRQ
19
- select ARCH_WANT_FRAME_POINTERS
20
- select CLONE_BACKWARDS
21
- select COMMON_CLK
22
- select DMA_DIRECT_OPS
23
- select GENERIC_CLOCKEVENTS
24
- select GENERIC_CPU_DEVICES
25
- select GENERIC_IRQ_SHOW
26
- select GENERIC_PCI_IOMAP
27
- select GENERIC_STRNCPY_FROM_USER
28
- select GENERIC_STRNLEN_USER
29
- select GENERIC_SMP_IDLE_THREAD
30
- select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A
31
- select HAVE_MEMBLOCK
32
- select HAVE_MEMBLOCK_NODE_MAP
33
- select HAVE_DMA_CONTIGUOUS
34
- select HAVE_GENERIC_DMA_COHERENT
35
- select HAVE_PERF_EVENTS
36
- select IRQ_DOMAIN
37
- select NO_BOOTMEM
38
- select RISCV_ISA_A if SMP
84
+ select PCI_DOMAINS_GENERIC if PCI
85
+ select PCI_MSI if PCI
86
+ select RISCV_INTC
87
+ select RISCV_TIMER if RISCV_SBI
3988 select SPARSE_IRQ
4089 select SYSCTL_EXCEPTION_TRACE
41
- select HAVE_ARCH_TRACEHOOK
42
- select MODULES_USE_ELF_RELA if MODULES
4390 select THREAD_INFO_IN_TASK
44
- select RISCV_TIMER
45
- select GENERIC_IRQ_MULTI_HANDLER
46
- select ARCH_HAS_PTE_SPECIAL
91
+ select UACCESS_MEMCPY if !MMU
92
+
93
+config ARCH_MMAP_RND_BITS_MIN
94
+ default 18 if 64BIT
95
+ default 8
96
+
97
+# max bits determined by the following formula:
98
+# VA_BITS - PAGE_SHIFT - 3
99
+config ARCH_MMAP_RND_BITS_MAX
100
+ default 24 if 64BIT # SV39 based
101
+ default 17
102
+
103
+# set if we run in machine mode, cleared if we run in supervisor mode
104
+config RISCV_M_MODE
105
+ bool
106
+ default !MMU
107
+
108
+# set if we are running in S-mode and can use SBI calls
109
+config RISCV_SBI
110
+ bool
111
+ depends on !RISCV_M_MODE
112
+ default y
47113
48114 config MMU
49
- def_bool y
115
+ bool "MMU-based Paged Memory Management Support"
116
+ default y
117
+ help
118
+ Select if you want MMU-based virtualised addressing space
119
+ support by paged memory management. If unsure, say 'Y'.
50120
51121 config ZONE_DMA32
52122 bool
53123 default y if 64BIT
54124
125
+config VA_BITS
126
+ int
127
+ default 32 if 32BIT
128
+ default 39 if 64BIT
129
+
130
+config PA_BITS
131
+ int
132
+ default 34 if 32BIT
133
+ default 56 if 64BIT
134
+
55135 config PAGE_OFFSET
56136 hex
57
- default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
137
+ default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
138
+ default 0x80000000 if 64BIT && !MMU
58139 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
59140 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
141
+
142
+config KASAN_SHADOW_OFFSET
143
+ hex
144
+ depends on KASAN_GENERIC
145
+ default 0xdfffffc800000000 if 64BIT
146
+ default 0xffffffff if 32BIT
147
+
148
+config ARCH_FLATMEM_ENABLE
149
+ def_bool y
150
+
151
+config ARCH_SPARSEMEM_ENABLE
152
+ def_bool y
153
+ depends on MMU
154
+ select SPARSEMEM_STATIC if 32BIT && SPARSEMEM
155
+ select SPARSEMEM_VMEMMAP_ENABLE if 64BIT
156
+
157
+config ARCH_SELECT_MEMORY_MODEL
158
+ def_bool ARCH_SPARSEMEM_ENABLE
159
+
160
+config ARCH_WANT_GENERAL_HUGETLB
161
+ def_bool y
162
+
163
+config ARCH_SUPPORTS_DEBUG_PAGEALLOC
164
+ def_bool y
165
+
166
+config SYS_SUPPORTS_HUGETLBFS
167
+ depends on MMU
168
+ def_bool y
60169
61170 config STACKTRACE_SUPPORT
62171 def_bool y
63172
64173 config TRACE_IRQFLAGS_SUPPORT
65
- def_bool y
66
-
67
-config RWSEM_GENERIC_SPINLOCK
68174 def_bool y
69175
70176 config GENERIC_BUG
....@@ -84,13 +190,18 @@
84190 config GENERIC_HWEIGHT
85191 def_bool y
86192
193
+config FIX_EARLYCON_MEM
194
+ def_bool MMU
195
+
87196 config PGTABLE_LEVELS
88197 int
89198 default 3 if 64BIT
90199 default 2
91200
92
-config HAVE_KPROBES
93
- def_bool n
201
+config LOCKDEP_SUPPORT
202
+ def_bool y
203
+
204
+source "arch/riscv/Kconfig.socs"
94205
95206 menu "Platform type"
96207
....@@ -98,7 +209,7 @@
98209 prompt "Base ISA"
99210 default ARCH_RV64I
100211 help
101
- This selects the base ISA that this kernel will traget and must match
212
+ This selects the base ISA that this kernel will target and must match
102213 the target platform.
103214
104215 config ARCH_RV32I
....@@ -108,16 +219,18 @@
108219 select GENERIC_LIB_ASHRDI3
109220 select GENERIC_LIB_LSHRDI3
110221 select GENERIC_LIB_UCMPDI2
222
+ select MMU
111223
112224 config ARCH_RV64I
113225 bool "RV64I"
114226 select 64BIT
115
- select HAVE_FUNCTION_TRACER
116
- select HAVE_FUNCTION_GRAPH_TRACER
227
+ select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
228
+ select HAVE_DYNAMIC_FTRACE if MMU
229
+ select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
117230 select HAVE_FTRACE_MCOUNT_RECORD
118
- select HAVE_DYNAMIC_FTRACE
119
- select HAVE_DYNAMIC_FTRACE_WITH_REGS
120
- select SWIOTLB
231
+ select HAVE_FUNCTION_GRAPH_TRACER
232
+ select HAVE_FUNCTION_TRACER
233
+ select SWIOTLB if MMU
121234
122235 endchoice
123236
....@@ -141,15 +254,18 @@
141254
142255 choice
143256 prompt "Maximum Physical Memory"
144
- default MAXPHYSMEM_2GB if 32BIT
257
+ default MAXPHYSMEM_1GB if 32BIT
145258 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
146259 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
147260
261
+ config MAXPHYSMEM_1GB
262
+ depends on 32BIT
263
+ bool "1GiB"
148264 config MAXPHYSMEM_2GB
265
+ depends on 64BIT && CMODEL_MEDLOW
149266 bool "2GiB"
150267 config MAXPHYSMEM_128GB
151268 depends on 64BIT && CMODEL_MEDANY
152
- select MODULE_SECTIONS if MODULES
153269 bool "128GiB"
154270 endchoice
155271
....@@ -173,6 +289,17 @@
173289 depends on SMP
174290 default "8"
175291
292
+config HOTPLUG_CPU
293
+ bool "Support for hot-pluggable CPUs"
294
+ depends on SMP
295
+ select GENERIC_IRQ_MIGRATION
296
+ help
297
+
298
+ Say Y here to experiment with turning CPUs off and on. CPUs
299
+ can be controlled through /sys/devices/system/cpu.
300
+
301
+ Say N if you want to disable CPU hotplug.
302
+
176303 choice
177304 prompt "CPU Tuning"
178305 default TUNE_GENERIC
....@@ -192,9 +319,6 @@
192319
193320 If you don't know what to do here, say Y.
194321
195
-config RISCV_ISA_A
196
- def_bool y
197
-
198322 menu "supported PMU type"
199323 depends on PERF_EVENTS
200324
....@@ -208,38 +332,130 @@
208332
209333 endmenu
210334
211
-endmenu
212
-
213
-menu "Kernel type"
214
-
215
-source "kernel/Kconfig.hz"
216
-
217
-endmenu
218
-
219
-menu "Bus support"
220
-
221
-config PCI
222
- bool "PCI support"
223
- select PCI_MSI
335
+config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
336
+ def_bool y
337
+ # https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc
338
+ depends on AS_IS_GNU && AS_VERSION >= 23800
224339 help
225
- This feature enables support for PCI bus system. If you say Y
226
- here, the kernel will include drivers and infrastructure code
227
- to support PCI bus devices.
340
+ Newer binutils versions default to ISA spec version 20191213 which
341
+ moves some instructions from the I extension to the Zicsr and Zifencei
342
+ extensions.
343
+
344
+config TOOLCHAIN_NEEDS_OLD_ISA_SPEC
345
+ def_bool y
346
+ depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
347
+ # https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16
348
+ depends on CC_IS_CLANG && CLANG_VERSION < 170000
349
+ help
350
+ Certain versions of clang do not support zicsr and zifencei via -march
351
+ but newer versions of binutils require it for the reasons noted in the
352
+ help text of CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI. This
353
+ option causes an older ISA spec compatible with these older versions
354
+ of clang to be passed to GAS, which has the same result as passing zicsr
355
+ and zifencei to -march.
356
+
357
+config FPU
358
+ bool "FPU support"
359
+ default y
360
+ help
361
+ Say N here if you want to disable all floating-point related procedure
362
+ in the kernel.
228363
229364 If you don't know what to do here, say Y.
230365
231
-config PCI_DOMAINS
232
- def_bool PCI
366
+endmenu
233367
234
-config PCI_DOMAINS_GENERIC
235
- def_bool PCI
368
+menu "Kernel features"
236369
237
-source "drivers/pci/Kconfig"
370
+source "kernel/Kconfig.hz"
371
+
372
+config RISCV_SBI_V01
373
+ bool "SBI v0.1 support"
374
+ default y
375
+ depends on RISCV_SBI
376
+ help
377
+ This config allows kernel to use SBI v0.1 APIs. This will be
378
+ deprecated in future once legacy M-mode software are no longer in use.
379
+endmenu
380
+
381
+menu "Boot options"
382
+
383
+config CMDLINE
384
+ string "Built-in kernel command line"
385
+ help
386
+ For most platforms, the arguments for the kernel's command line
387
+ are provided at run-time, during boot. However, there are cases
388
+ where either no arguments are being provided or the provided
389
+ arguments are insufficient or even invalid.
390
+
391
+ When that occurs, it is possible to define a built-in command
392
+ line here and choose how the kernel should use it later on.
393
+
394
+choice
395
+ prompt "Built-in command line usage" if CMDLINE != ""
396
+ default CMDLINE_FALLBACK
397
+ help
398
+ Choose how the kernel will handle the provided built-in command
399
+ line.
400
+
401
+config CMDLINE_FALLBACK
402
+ bool "Use bootloader kernel arguments if available"
403
+ help
404
+ Use the built-in command line as fallback in case we get nothing
405
+ during boot. This is the default behaviour.
406
+
407
+config CMDLINE_EXTEND
408
+ bool "Extend bootloader kernel arguments"
409
+ help
410
+ The command-line arguments provided during boot will be
411
+ appended to the built-in command line. This is useful in
412
+ cases where the provided arguments are insufficient and
413
+ you don't want to or cannot modify them.
414
+
415
+
416
+config CMDLINE_FORCE
417
+ bool "Always use the default kernel command string"
418
+ help
419
+ Always use the built-in command line, even if we get one during
420
+ boot. This is useful in case you need to override the provided
421
+ command line on systems where you don't have or want control
422
+ over it.
423
+
424
+endchoice
425
+
426
+config EFI_STUB
427
+ bool
428
+
429
+config EFI
430
+ bool "UEFI runtime support"
431
+ depends on OF
432
+ select LIBFDT
433
+ select UCS2_STRING
434
+ select EFI_PARAMS_FROM_FDT
435
+ select EFI_STUB
436
+ select EFI_GENERIC_STUB
437
+ select EFI_RUNTIME_WRAPPERS
438
+ select RISCV_ISA_C
439
+ depends on MMU
440
+ default y
441
+ help
442
+ This option provides support for runtime services provided
443
+ by UEFI firmware (such as non-volatile variables, realtime
444
+ clock, and platform reset). A UEFI stub is also provided to
445
+ allow the kernel to be booted as an EFI application. This
446
+ is only useful on systems that have UEFI firmware.
238447
239448 endmenu
449
+
450
+config BUILTIN_DTB
451
+ def_bool n
452
+ depends on RISCV_M_MODE
453
+ depends on OF
240454
241455 menu "Power management options"
242456
243
-source kernel/power/Kconfig
457
+source "kernel/power/Kconfig"
244458
245459 endmenu
460
+
461
+source "drivers/firmware/Kconfig"