blob: b7efe87329dd57fe8fde3652082d91a0de01d63f [file] [log] [blame]
Thomas Gleixnerec8f24b2019-05-19 13:07:45 +01001# SPDX-License-Identifier: GPL-2.0-only
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -07002#
3# For a description of the syntax of this configuration file,
Mauro Carvalho Chehabcd238ef2019-06-12 14:52:48 -03004# see Documentation/kbuild/kconfig-language.rst.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -07005#
6
Christoph Hellwigc3e4ed02018-04-27 08:38:23 +02007config 64BIT
8 bool
9
10config 32BIT
11 bool
12
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070013config RISCV
14 def_bool y
Vincent Chenad5d1122020-06-09 22:14:48 +080015 select ARCH_CLOCKSOURCE_INIT
Chenxi Mao234e9d72020-06-05 13:15:10 +080016 select ARCH_SUPPORTS_ATOMIC_RMW
Christoph Hellwigad97f9d2019-06-13 09:09:03 +020017 select ARCH_HAS_BINFMT_FLAT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070018 select ARCH_HAS_DEBUG_VIRTUAL if MMU
Zong Lib422d282020-06-03 16:03:55 -070019 select ARCH_HAS_DEBUG_WX
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070020 select ARCH_HAS_GCOV_PROFILE_ALL
21 select ARCH_HAS_GIGANTIC_PAGE
22 select ARCH_HAS_MMIOWB
23 select ARCH_HAS_PTE_SPECIAL
24 select ARCH_HAS_SET_DIRECT_MAP
25 select ARCH_HAS_SET_MEMORY
26 select ARCH_HAS_STRICT_KERNEL_RWX if MMU
27 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070028 select ARCH_WANT_FRAME_POINTERS
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070029 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070030 select CLONE_BACKWARDS
31 select COMMON_CLK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070032 select EDAC_SUPPORT
33 select GENERIC_ARCH_TOPOLOGY if SMP
34 select GENERIC_ATOMIC64 if !64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070035 select GENERIC_CLOCKEVENTS
Vincent Chenad5d1122020-06-09 22:14:48 +080036 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070037 select GENERIC_IOREMAP
38 select GENERIC_IRQ_MULTI_HANDLER
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070039 select GENERIC_IRQ_SHOW
40 select GENERIC_PCI_IOMAP
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070041 select GENERIC_PTDUMP if MMU
Anup Patel9b9afe42018-12-04 15:59:51 +053042 select GENERIC_SCHED_CLOCK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070043 select GENERIC_SMP_IDLE_THREAD
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010044 select GENERIC_STRNCPY_FROM_USER if MMU
45 select GENERIC_STRNLEN_USER if MMU
Vincent Chenad5d1122020-06-09 22:14:48 +080046 select GENERIC_TIME_VSYSCALL if MMU && 64BIT
Anup Patel6b7ce8922020-06-01 14:45:40 +053047 select HANDLE_DOMAIN_IRQ
David Abdurachmanovefe75c42018-10-29 11:48:53 +010048 select HAVE_ARCH_AUDITSYSCALL
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070049 select HAVE_ARCH_KASAN if MMU && 64BIT
50 select HAVE_ARCH_KGDB
51 select HAVE_ARCH_KGDB_QXFER_PKT
52 select HAVE_ARCH_MMAP_RND_BITS if MMU
David Abdurachmanov53406272019-10-04 17:12:22 -070053 select HAVE_ARCH_SECCOMP_FILTER
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070054 select HAVE_ARCH_TRACEHOOK
Masahiro Yamada2ff2b7e2019-08-19 14:54:20 +090055 select HAVE_ASM_MODVERSIONS
Greentime Hued48b292020-06-24 17:03:16 +080056 select HAVE_CONTEXT_TRACKING
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070057 select HAVE_COPY_THREAD_TLS
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010058 select HAVE_DMA_CONTIGUOUS if MMU
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070059 select HAVE_EBPF_JIT if MMU
Jim Wilsonb90edb32018-10-16 14:42:59 -070060 select HAVE_FUTEX_CMPXCHG if FUTEX
Vincent Chenad5d1122020-06-09 22:14:48 +080061 select HAVE_GENERIC_VDSO if MMU && 64BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070062 select HAVE_PCI
Alan Kao178e9fc2018-04-20 07:27:49 +080063 select HAVE_PERF_EVENTS
Mao Han98a93b02019-09-05 11:46:35 +080064 select HAVE_PERF_REGS
65 select HAVE_PERF_USER_STACK_DUMP
David Abdurachmanov5aeb1b32018-12-06 16:26:35 +010066 select HAVE_SYSCALL_TRACEPOINTS
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070067 select IRQ_DOMAIN
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070068 select MODULES_USE_ELF_RELA if MODULES
Zong Li2cffc952018-12-07 17:02:16 +080069 select MODULE_SECTIONS if MODULES
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070070 select OF
71 select OF_EARLY_FLATTREE
72 select OF_IRQ
Christoph Hellwig2eac9c22018-11-15 20:05:33 +010073 select PCI_DOMAINS_GENERIC if PCI
Christoph Hellwigeb01d422018-11-15 20:05:32 +010074 select PCI_MSI if PCI
Anup Patele71ee062020-06-01 14:45:43 +053075 select RISCV_INTC
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070076 select RISCV_TIMER
Logan Gunthorped95f1a52019-08-28 15:40:54 -060077 select SPARSEMEM_STATIC if 32BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070078 select SPARSE_IRQ
79 select SYSCTL_EXCEPTION_TRACE
80 select THREAD_INFO_IN_TASK
Alexandre Ghiti54c95a12019-09-23 15:39:21 -070081
82config ARCH_MMAP_RND_BITS_MIN
83 default 18 if 64BIT
84 default 8
85
86# max bits determined by the following formula:
87# VA_BITS - PAGE_SHIFT - 3
88config ARCH_MMAP_RND_BITS_MAX
89 default 24 if 64BIT # SV39 based
90 default 17
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070091
Christoph Hellwiga4c37332019-10-28 13:10:32 +010092# set if we run in machine mode, cleared if we run in supervisor mode
93config RISCV_M_MODE
94 bool
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010095 default !MMU
Christoph Hellwiga4c37332019-10-28 13:10:32 +010096
Damien Le Moaleded8bc2019-10-28 13:10:33 +010097# set if we are running in S-mode and can use SBI calls
98config RISCV_SBI
99 bool
100 depends on !RISCV_M_MODE
101 default y
102
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700103config MMU
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100104 bool "MMU-based Paged Memory Management Support"
105 default y
106 help
107 Select if you want MMU-based virtualised addressing space
108 support by paged memory management. If unsure, say 'Y'.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700109
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100110config ZONE_DMA32
111 bool
Christoph Hellwigf1306f02018-04-27 08:41:09 +0200112 default y if 64BIT
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100113
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600114config VA_BITS
115 int
116 default 32 if 32BIT
117 default 39 if 64BIT
118
119config PA_BITS
120 int
121 default 34 if 32BIT
122 default 56 if 64BIT
123
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700124config PAGE_OFFSET
125 hex
126 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100127 default 0x80000000 if 64BIT && !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700128 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
129 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
130
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600131config ARCH_FLATMEM_ENABLE
132 def_bool y
133
134config ARCH_SPARSEMEM_ENABLE
135 def_bool y
Damien Le Moalaa2734202020-02-12 19:34:24 +0900136 depends on MMU
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600137 select SPARSEMEM_VMEMMAP_ENABLE
138
139config ARCH_SELECT_MEMORY_MODEL
140 def_bool ARCH_SPARSEMEM_ENABLE
141
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400142config ARCH_WANT_GENERAL_HUGETLB
143 def_bool y
144
Zong Li5fde3db2020-03-10 00:55:38 +0800145config ARCH_SUPPORTS_DEBUG_PAGEALLOC
146 def_bool y
147
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400148config SYS_SUPPORTS_HUGETLBFS
Kefeng Wang69868412020-05-11 10:19:58 +0800149 depends on MMU
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400150 def_bool y
151
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700152config STACKTRACE_SUPPORT
153 def_bool y
154
Alan Kao10626c32017-12-18 17:52:48 +0800155config TRACE_IRQFLAGS_SUPPORT
156 def_bool y
157
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700158config GENERIC_BUG
159 def_bool y
160 depends on BUG
161 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
162
163config GENERIC_BUG_RELATIVE_POINTERS
164 bool
165
166config GENERIC_CALIBRATE_DELAY
167 def_bool y
168
169config GENERIC_CSUM
170 def_bool y
171
172config GENERIC_HWEIGHT
173 def_bool y
174
Anup Patelf2c17aa2019-01-07 20:57:01 +0530175config FIX_EARLYCON_MEM
Andreas Schwab0312a3d2019-12-17 12:15:16 +0100176 def_bool MMU
Anup Patelf2c17aa2019-01-07 20:57:01 +0530177
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700178config PGTABLE_LEVELS
179 int
180 default 3 if 64BIT
181 default 2
182
Guo Ren3c469792020-06-27 13:57:08 +0000183config LOCKDEP_SUPPORT
184 def_bool y
185
Loys Ollivier0cbb8a32019-06-17 21:29:48 +0200186source "arch/riscv/Kconfig.socs"
187
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700188menu "Platform type"
189
190choice
191 prompt "Base ISA"
192 default ARCH_RV64I
193 help
Antony Pavlov86cca812019-01-08 22:45:57 +0300194 This selects the base ISA that this kernel will target and must match
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700195 the target platform.
196
197config ARCH_RV32I
198 bool "RV32I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700199 select 32BIT
Matt Redfearne3d59802018-04-11 08:50:17 +0100200 select GENERIC_LIB_ASHLDI3
201 select GENERIC_LIB_ASHRDI3
202 select GENERIC_LIB_LSHRDI3
Zong Li8f791252018-06-25 16:49:38 +0800203 select GENERIC_LIB_UCMPDI2
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100204 select MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700205
206config ARCH_RV64I
207 bool "RV64I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700208 select 64BIT
Ard Biesheuvelc12d3362019-11-08 13:22:27 +0100209 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100210 select HAVE_DYNAMIC_FTRACE if MMU
211 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -0700212 select HAVE_FTRACE_MCOUNT_RECORD
213 select HAVE_FUNCTION_GRAPH_TRACER
214 select HAVE_FUNCTION_TRACER
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100215 select SWIOTLB if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700216
217endchoice
218
219# We must be able to map all physical memory into the kernel, but the compiler
220# is still a bit more efficient when generating code if it's setup in a manner
221# such that it can only map 2GiB of memory.
222choice
223 prompt "Kernel Code Model"
224 default CMODEL_MEDLOW if 32BIT
225 default CMODEL_MEDANY if 64BIT
226
227 config CMODEL_MEDLOW
228 bool "medium low code model"
229 config CMODEL_MEDANY
230 bool "medium any code model"
231endchoice
232
Zong Liab1ef682018-03-15 16:50:41 +0800233config MODULE_SECTIONS
234 bool
235 select HAVE_MOD_ARCH_SPECIFIC
236
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700237choice
238 prompt "Maximum Physical Memory"
239 default MAXPHYSMEM_2GB if 32BIT
240 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
241 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
242
243 config MAXPHYSMEM_2GB
244 bool "2GiB"
245 config MAXPHYSMEM_128GB
246 depends on 64BIT && CMODEL_MEDANY
247 bool "128GiB"
248endchoice
249
250
251config SMP
252 bool "Symmetric Multi-Processing"
253 help
254 This enables support for systems with more than one CPU. If
255 you say N here, the kernel will run on single and
256 multiprocessor machines, but will use only one CPU of a
257 multiprocessor machine. If you say Y here, the kernel will run
258 on many, but not all, single processor machines. On a single
259 processor machine, the kernel will run faster if you say N
260 here.
261
262 If you don't know what to do here, say N.
263
264config NR_CPUS
265 int "Maximum number of CPUs (2-32)"
266 range 2 32
267 depends on SMP
268 default "8"
269
Atish Patraf1e58582020-03-17 18:11:44 -0700270config HOTPLUG_CPU
271 bool "Support for hot-pluggable CPUs"
272 depends on SMP
273 select GENERIC_IRQ_MIGRATION
274 help
275
276 Say Y here to experiment with turning CPUs off and on. CPUs
277 can be controlled through /sys/devices/system/cpu.
278
279 Say N if you want to disable CPU hotplug.
280
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700281choice
282 prompt "CPU Tuning"
283 default TUNE_GENERIC
284
285config TUNE_GENERIC
286 bool "generic"
287
288endchoice
289
290config RISCV_ISA_C
291 bool "Emit compressed instructions when building Linux"
292 default y
293 help
294 Adds "C" to the ISA subsets that the toolchain is allowed to emit
295 when building Linux, which results in compressed instructions in the
296 Linux binary.
297
298 If you don't know what to do here, say Y.
299
Alan Kao178e9fc2018-04-20 07:27:49 +0800300menu "supported PMU type"
301 depends on PERF_EVENTS
302
303config RISCV_BASE_PMU
304 bool "Base Performance Monitoring Unit"
305 def_bool y
306 help
307 A base PMU that serves as a reference implementation and has limited
308 feature of perf. It can run on any RISC-V machines so serves as the
309 fallback, but this option can also be disable to reduce kernel size.
310
311endmenu
312
Alan Kao9671f702018-10-09 10:18:33 +0800313config FPU
314 bool "FPU support"
315 default y
316 help
317 Say N here if you want to disable all floating-point related procedure
318 in the kernel.
319
320 If you don't know what to do here, say Y.
321
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700322endmenu
323
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300324menu "Kernel features"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700325
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700326source "kernel/Kconfig.hz"
327
David Abdurachmanov53406272019-10-04 17:12:22 -0700328config SECCOMP
329 bool "Enable seccomp to safely compute untrusted bytecode"
330 help
331 This kernel feature is useful for number crunching applications
332 that may need to compute untrusted bytecode during their
333 execution. By using pipes or other transports made available to
334 the process as file descriptors supporting the read/write
335 syscalls, it's possible to isolate those applications in
336 their own address space using seccomp. Once seccomp is
337 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
338 and the task is only allowed to execute a few safe syscalls
339 defined by each seccomp mode.
340
Atish Patraefca1392020-03-17 18:11:37 -0700341config RISCV_SBI_V01
342 bool "SBI v0.1 support"
343 default y
344 depends on RISCV_SBI
345 help
346 This config allows kernel to use SBI v0.1 APIs. This will be
347 deprecated in future once legacy M-mode software are no longer in use.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700348endmenu
349
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300350menu "Boot options"
351
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300352config CMDLINE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200353 string "Built-in kernel command line"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300354 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200355 For most platforms, the arguments for the kernel's command line
356 are provided at run-time, during boot. However, there are cases
357 where either no arguments are being provided or the provided
358 arguments are insufficient or even invalid.
359
360 When that occurs, it is possible to define a built-in command
361 line here and choose how the kernel should use it later on.
362
363choice
364 prompt "Built-in command line usage" if CMDLINE != ""
365 default CMDLINE_FALLBACK
366 help
367 Choose how the kernel will handle the provided built-in command
368 line.
369
370config CMDLINE_FALLBACK
371 bool "Use bootloader kernel arguments if available"
372 help
373 Use the built-in command line as fallback in case we get nothing
374 during boot. This is the default behaviour.
375
376config CMDLINE_EXTEND
377 bool "Extend bootloader kernel arguments"
378 help
379 The command-line arguments provided during boot will be
380 appended to the built-in command line. This is useful in
381 cases where the provided arguments are insufficient and
382 you don't want to or cannot modify them.
383
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300384
385config CMDLINE_FORCE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200386 bool "Always use the default kernel command string"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300387 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200388 Always use the built-in command line, even if we get one during
389 boot. This is useful in case you need to override the provided
390 command line on systems where you don't have or want control
391 over it.
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300392
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200393endchoice
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300394
395endmenu
396
Palmer Dabbelt2d268252020-04-14 13:43:24 +0900397config BUILTIN_DTB
398 def_bool n
399 depends on RISCV_M_MODE
400 depends on OF
401
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700402menu "Power management options"
403
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900404source "kernel/power/Kconfig"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700405
406endmenu