blob: 0b40449a2eae034a9045513f900edf154e8ca13b [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
Tobias Klauser20d38f72020-06-26 14:40:56 +020022 select ARCH_HAS_KCOV
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070023 select ARCH_HAS_MMIOWB
24 select ARCH_HAS_PTE_SPECIAL
25 select ARCH_HAS_SET_DIRECT_MAP
26 select ARCH_HAS_SET_MEMORY
27 select ARCH_HAS_STRICT_KERNEL_RWX if MMU
28 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070029 select ARCH_WANT_FRAME_POINTERS
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070030 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070031 select CLONE_BACKWARDS
32 select COMMON_CLK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070033 select EDAC_SUPPORT
34 select GENERIC_ARCH_TOPOLOGY if SMP
35 select GENERIC_ATOMIC64 if !64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070036 select GENERIC_CLOCKEVENTS
Vincent Chenad5d1122020-06-09 22:14:48 +080037 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070038 select GENERIC_IOREMAP
39 select GENERIC_IRQ_MULTI_HANDLER
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070040 select GENERIC_IRQ_SHOW
41 select GENERIC_PCI_IOMAP
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070042 select GENERIC_PTDUMP if MMU
Anup Patel9b9afe42018-12-04 15:59:51 +053043 select GENERIC_SCHED_CLOCK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070044 select GENERIC_SMP_IDLE_THREAD
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010045 select GENERIC_STRNCPY_FROM_USER if MMU
46 select GENERIC_STRNLEN_USER if MMU
Vincent Chenad5d1122020-06-09 22:14:48 +080047 select GENERIC_TIME_VSYSCALL if MMU && 64BIT
Anup Patel6b7ce8922020-06-01 14:45:40 +053048 select HANDLE_DOMAIN_IRQ
David Abdurachmanovefe75c42018-10-29 11:48:53 +010049 select HAVE_ARCH_AUDITSYSCALL
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070050 select HAVE_ARCH_KASAN if MMU && 64BIT
51 select HAVE_ARCH_KGDB
52 select HAVE_ARCH_KGDB_QXFER_PKT
53 select HAVE_ARCH_MMAP_RND_BITS if MMU
David Abdurachmanov53406272019-10-04 17:12:22 -070054 select HAVE_ARCH_SECCOMP_FILTER
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070055 select HAVE_ARCH_TRACEHOOK
Masahiro Yamada2ff2b7e2019-08-19 14:54:20 +090056 select HAVE_ASM_MODVERSIONS
Greentime Hued48b292020-06-24 17:03:16 +080057 select HAVE_CONTEXT_TRACKING
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070058 select HAVE_COPY_THREAD_TLS
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010059 select HAVE_DMA_CONTIGUOUS if MMU
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070060 select HAVE_EBPF_JIT if MMU
Jim Wilsonb90edb32018-10-16 14:42:59 -070061 select HAVE_FUTEX_CMPXCHG if FUTEX
Tobias Klauser20d38f72020-06-26 14:40:56 +020062 select HAVE_GCC_PLUGINS
Vincent Chenad5d1122020-06-09 22:14:48 +080063 select HAVE_GENERIC_VDSO if MMU && 64BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070064 select HAVE_PCI
Alan Kao178e9fc2018-04-20 07:27:49 +080065 select HAVE_PERF_EVENTS
Mao Han98a93b02019-09-05 11:46:35 +080066 select HAVE_PERF_REGS
67 select HAVE_PERF_USER_STACK_DUMP
David Abdurachmanov5aeb1b32018-12-06 16:26:35 +010068 select HAVE_SYSCALL_TRACEPOINTS
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070069 select IRQ_DOMAIN
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070070 select MODULES_USE_ELF_RELA if MODULES
Zong Li2cffc952018-12-07 17:02:16 +080071 select MODULE_SECTIONS if MODULES
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070072 select OF
73 select OF_EARLY_FLATTREE
74 select OF_IRQ
Christoph Hellwig2eac9c22018-11-15 20:05:33 +010075 select PCI_DOMAINS_GENERIC if PCI
Christoph Hellwigeb01d422018-11-15 20:05:32 +010076 select PCI_MSI if PCI
Anup Patele71ee062020-06-01 14:45:43 +053077 select RISCV_INTC
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070078 select RISCV_TIMER
Logan Gunthorped95f1a52019-08-28 15:40:54 -060079 select SPARSEMEM_STATIC if 32BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070080 select SPARSE_IRQ
81 select SYSCTL_EXCEPTION_TRACE
82 select THREAD_INFO_IN_TASK
Alexandre Ghiti54c95a12019-09-23 15:39:21 -070083
84config ARCH_MMAP_RND_BITS_MIN
85 default 18 if 64BIT
86 default 8
87
88# max bits determined by the following formula:
89# VA_BITS - PAGE_SHIFT - 3
90config ARCH_MMAP_RND_BITS_MAX
91 default 24 if 64BIT # SV39 based
92 default 17
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070093
Christoph Hellwiga4c37332019-10-28 13:10:32 +010094# set if we run in machine mode, cleared if we run in supervisor mode
95config RISCV_M_MODE
96 bool
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010097 default !MMU
Christoph Hellwiga4c37332019-10-28 13:10:32 +010098
Damien Le Moaleded8bc2019-10-28 13:10:33 +010099# set if we are running in S-mode and can use SBI calls
100config RISCV_SBI
101 bool
102 depends on !RISCV_M_MODE
103 default y
104
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700105config MMU
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100106 bool "MMU-based Paged Memory Management Support"
107 default y
108 help
109 Select if you want MMU-based virtualised addressing space
110 support by paged memory management. If unsure, say 'Y'.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700111
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100112config ZONE_DMA32
113 bool
Christoph Hellwigf1306f02018-04-27 08:41:09 +0200114 default y if 64BIT
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100115
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600116config VA_BITS
117 int
118 default 32 if 32BIT
119 default 39 if 64BIT
120
121config PA_BITS
122 int
123 default 34 if 32BIT
124 default 56 if 64BIT
125
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700126config PAGE_OFFSET
127 hex
128 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100129 default 0x80000000 if 64BIT && !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700130 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
131 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
132
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600133config ARCH_FLATMEM_ENABLE
134 def_bool y
135
136config ARCH_SPARSEMEM_ENABLE
137 def_bool y
Damien Le Moalaa2734202020-02-12 19:34:24 +0900138 depends on MMU
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600139 select SPARSEMEM_VMEMMAP_ENABLE
140
141config ARCH_SELECT_MEMORY_MODEL
142 def_bool ARCH_SPARSEMEM_ENABLE
143
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400144config ARCH_WANT_GENERAL_HUGETLB
145 def_bool y
146
Zong Li5fde3db2020-03-10 00:55:38 +0800147config ARCH_SUPPORTS_DEBUG_PAGEALLOC
148 def_bool y
149
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400150config SYS_SUPPORTS_HUGETLBFS
Kefeng Wang69868412020-05-11 10:19:58 +0800151 depends on MMU
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400152 def_bool y
153
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700154config STACKTRACE_SUPPORT
155 def_bool y
156
Alan Kao10626c32017-12-18 17:52:48 +0800157config TRACE_IRQFLAGS_SUPPORT
158 def_bool y
159
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700160config GENERIC_BUG
161 def_bool y
162 depends on BUG
163 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
164
165config GENERIC_BUG_RELATIVE_POINTERS
166 bool
167
168config GENERIC_CALIBRATE_DELAY
169 def_bool y
170
171config GENERIC_CSUM
172 def_bool y
173
174config GENERIC_HWEIGHT
175 def_bool y
176
Anup Patelf2c17aa2019-01-07 20:57:01 +0530177config FIX_EARLYCON_MEM
Andreas Schwab0312a3d2019-12-17 12:15:16 +0100178 def_bool MMU
Anup Patelf2c17aa2019-01-07 20:57:01 +0530179
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700180config PGTABLE_LEVELS
181 int
182 default 3 if 64BIT
183 default 2
184
Guo Ren3c469792020-06-27 13:57:08 +0000185config LOCKDEP_SUPPORT
186 def_bool y
187
Loys Ollivier0cbb8a32019-06-17 21:29:48 +0200188source "arch/riscv/Kconfig.socs"
189
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700190menu "Platform type"
191
192choice
193 prompt "Base ISA"
194 default ARCH_RV64I
195 help
Antony Pavlov86cca812019-01-08 22:45:57 +0300196 This selects the base ISA that this kernel will target and must match
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700197 the target platform.
198
199config ARCH_RV32I
200 bool "RV32I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700201 select 32BIT
Matt Redfearne3d59802018-04-11 08:50:17 +0100202 select GENERIC_LIB_ASHLDI3
203 select GENERIC_LIB_ASHRDI3
204 select GENERIC_LIB_LSHRDI3
Zong Li8f791252018-06-25 16:49:38 +0800205 select GENERIC_LIB_UCMPDI2
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100206 select MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700207
208config ARCH_RV64I
209 bool "RV64I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700210 select 64BIT
Ard Biesheuvelc12d3362019-11-08 13:22:27 +0100211 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100212 select HAVE_DYNAMIC_FTRACE if MMU
213 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -0700214 select HAVE_FTRACE_MCOUNT_RECORD
215 select HAVE_FUNCTION_GRAPH_TRACER
216 select HAVE_FUNCTION_TRACER
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100217 select SWIOTLB if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700218
219endchoice
220
221# We must be able to map all physical memory into the kernel, but the compiler
222# is still a bit more efficient when generating code if it's setup in a manner
223# such that it can only map 2GiB of memory.
224choice
225 prompt "Kernel Code Model"
226 default CMODEL_MEDLOW if 32BIT
227 default CMODEL_MEDANY if 64BIT
228
229 config CMODEL_MEDLOW
230 bool "medium low code model"
231 config CMODEL_MEDANY
232 bool "medium any code model"
233endchoice
234
Zong Liab1ef682018-03-15 16:50:41 +0800235config MODULE_SECTIONS
236 bool
237 select HAVE_MOD_ARCH_SPECIFIC
238
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700239choice
240 prompt "Maximum Physical Memory"
241 default MAXPHYSMEM_2GB if 32BIT
242 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
243 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
244
245 config MAXPHYSMEM_2GB
246 bool "2GiB"
247 config MAXPHYSMEM_128GB
248 depends on 64BIT && CMODEL_MEDANY
249 bool "128GiB"
250endchoice
251
252
253config SMP
254 bool "Symmetric Multi-Processing"
255 help
256 This enables support for systems with more than one CPU. If
257 you say N here, the kernel will run on single and
258 multiprocessor machines, but will use only one CPU of a
259 multiprocessor machine. If you say Y here, the kernel will run
260 on many, but not all, single processor machines. On a single
261 processor machine, the kernel will run faster if you say N
262 here.
263
264 If you don't know what to do here, say N.
265
266config NR_CPUS
267 int "Maximum number of CPUs (2-32)"
268 range 2 32
269 depends on SMP
270 default "8"
271
Atish Patraf1e58582020-03-17 18:11:44 -0700272config HOTPLUG_CPU
273 bool "Support for hot-pluggable CPUs"
274 depends on SMP
275 select GENERIC_IRQ_MIGRATION
276 help
277
278 Say Y here to experiment with turning CPUs off and on. CPUs
279 can be controlled through /sys/devices/system/cpu.
280
281 Say N if you want to disable CPU hotplug.
282
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700283choice
284 prompt "CPU Tuning"
285 default TUNE_GENERIC
286
287config TUNE_GENERIC
288 bool "generic"
289
290endchoice
291
292config RISCV_ISA_C
293 bool "Emit compressed instructions when building Linux"
294 default y
295 help
296 Adds "C" to the ISA subsets that the toolchain is allowed to emit
297 when building Linux, which results in compressed instructions in the
298 Linux binary.
299
300 If you don't know what to do here, say Y.
301
Alan Kao178e9fc2018-04-20 07:27:49 +0800302menu "supported PMU type"
303 depends on PERF_EVENTS
304
305config RISCV_BASE_PMU
306 bool "Base Performance Monitoring Unit"
307 def_bool y
308 help
309 A base PMU that serves as a reference implementation and has limited
310 feature of perf. It can run on any RISC-V machines so serves as the
311 fallback, but this option can also be disable to reduce kernel size.
312
313endmenu
314
Alan Kao9671f702018-10-09 10:18:33 +0800315config FPU
316 bool "FPU support"
317 default y
318 help
319 Say N here if you want to disable all floating-point related procedure
320 in the kernel.
321
322 If you don't know what to do here, say Y.
323
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700324endmenu
325
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300326menu "Kernel features"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700327
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700328source "kernel/Kconfig.hz"
329
David Abdurachmanov53406272019-10-04 17:12:22 -0700330config SECCOMP
331 bool "Enable seccomp to safely compute untrusted bytecode"
332 help
333 This kernel feature is useful for number crunching applications
334 that may need to compute untrusted bytecode during their
335 execution. By using pipes or other transports made available to
336 the process as file descriptors supporting the read/write
337 syscalls, it's possible to isolate those applications in
338 their own address space using seccomp. Once seccomp is
339 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
340 and the task is only allowed to execute a few safe syscalls
341 defined by each seccomp mode.
342
Atish Patraefca1392020-03-17 18:11:37 -0700343config RISCV_SBI_V01
344 bool "SBI v0.1 support"
345 default y
346 depends on RISCV_SBI
347 help
348 This config allows kernel to use SBI v0.1 APIs. This will be
349 deprecated in future once legacy M-mode software are no longer in use.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700350endmenu
351
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300352menu "Boot options"
353
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300354config CMDLINE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200355 string "Built-in kernel command line"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300356 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200357 For most platforms, the arguments for the kernel's command line
358 are provided at run-time, during boot. However, there are cases
359 where either no arguments are being provided or the provided
360 arguments are insufficient or even invalid.
361
362 When that occurs, it is possible to define a built-in command
363 line here and choose how the kernel should use it later on.
364
365choice
366 prompt "Built-in command line usage" if CMDLINE != ""
367 default CMDLINE_FALLBACK
368 help
369 Choose how the kernel will handle the provided built-in command
370 line.
371
372config CMDLINE_FALLBACK
373 bool "Use bootloader kernel arguments if available"
374 help
375 Use the built-in command line as fallback in case we get nothing
376 during boot. This is the default behaviour.
377
378config CMDLINE_EXTEND
379 bool "Extend bootloader kernel arguments"
380 help
381 The command-line arguments provided during boot will be
382 appended to the built-in command line. This is useful in
383 cases where the provided arguments are insufficient and
384 you don't want to or cannot modify them.
385
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300386
387config CMDLINE_FORCE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200388 bool "Always use the default kernel command string"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300389 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200390 Always use the built-in command line, even if we get one during
391 boot. This is useful in case you need to override the provided
392 command line on systems where you don't have or want control
393 over it.
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300394
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200395endchoice
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300396
397endmenu
398
Palmer Dabbelt2d268252020-04-14 13:43:24 +0900399config BUILTIN_DTB
400 def_bool n
401 depends on RISCV_M_MODE
402 depends on OF
403
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700404menu "Power management options"
405
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900406source "kernel/power/Kconfig"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700407
408endmenu