blob: bf6a9feee8039acb7c4b129a011c4da74ba85f1d [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
Emil Renner Berthingebc00dd2020-07-14 09:40:44 +020050 select HAVE_ARCH_JUMP_LABEL
51 select HAVE_ARCH_JUMP_LABEL_RELATIVE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070052 select HAVE_ARCH_KASAN if MMU && 64BIT
53 select HAVE_ARCH_KGDB
54 select HAVE_ARCH_KGDB_QXFER_PKT
55 select HAVE_ARCH_MMAP_RND_BITS if MMU
David Abdurachmanov53406272019-10-04 17:12:22 -070056 select HAVE_ARCH_SECCOMP_FILTER
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070057 select HAVE_ARCH_TRACEHOOK
Masahiro Yamada2ff2b7e2019-08-19 14:54:20 +090058 select HAVE_ASM_MODVERSIONS
Greentime Hued48b292020-06-24 17:03:16 +080059 select HAVE_CONTEXT_TRACKING
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070060 select HAVE_COPY_THREAD_TLS
Tobias Klausercbb3d912020-06-27 12:50:50 +020061 select HAVE_DEBUG_KMEMLEAK
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010062 select HAVE_DMA_CONTIGUOUS if MMU
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070063 select HAVE_EBPF_JIT if MMU
Jim Wilsonb90edb32018-10-16 14:42:59 -070064 select HAVE_FUTEX_CMPXCHG if FUTEX
Tobias Klauser20d38f72020-06-26 14:40:56 +020065 select HAVE_GCC_PLUGINS
Vincent Chenad5d1122020-06-09 22:14:48 +080066 select HAVE_GENERIC_VDSO if MMU && 64BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070067 select HAVE_PCI
Alan Kao178e9fc2018-04-20 07:27:49 +080068 select HAVE_PERF_EVENTS
Mao Han98a93b02019-09-05 11:46:35 +080069 select HAVE_PERF_REGS
70 select HAVE_PERF_USER_STACK_DUMP
Guo Renf2c96992020-07-10 16:19:57 +000071 select HAVE_STACKPROTECTOR
David Abdurachmanov5aeb1b32018-12-06 16:26:35 +010072 select HAVE_SYSCALL_TRACEPOINTS
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070073 select IRQ_DOMAIN
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070074 select MODULES_USE_ELF_RELA if MODULES
Zong Li2cffc952018-12-07 17:02:16 +080075 select MODULE_SECTIONS if MODULES
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070076 select OF
77 select OF_EARLY_FLATTREE
78 select OF_IRQ
Christoph Hellwig2eac9c22018-11-15 20:05:33 +010079 select PCI_DOMAINS_GENERIC if PCI
Christoph Hellwigeb01d422018-11-15 20:05:32 +010080 select PCI_MSI if PCI
Anup Patele71ee062020-06-01 14:45:43 +053081 select RISCV_INTC
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070082 select RISCV_TIMER
Logan Gunthorped95f1a52019-08-28 15:40:54 -060083 select SPARSEMEM_STATIC if 32BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070084 select SPARSE_IRQ
85 select SYSCTL_EXCEPTION_TRACE
86 select THREAD_INFO_IN_TASK
Alexandre Ghiti54c95a12019-09-23 15:39:21 -070087
88config ARCH_MMAP_RND_BITS_MIN
89 default 18 if 64BIT
90 default 8
91
92# max bits determined by the following formula:
93# VA_BITS - PAGE_SHIFT - 3
94config ARCH_MMAP_RND_BITS_MAX
95 default 24 if 64BIT # SV39 based
96 default 17
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070097
Christoph Hellwiga4c37332019-10-28 13:10:32 +010098# set if we run in machine mode, cleared if we run in supervisor mode
99config RISCV_M_MODE
100 bool
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100101 default !MMU
Christoph Hellwiga4c37332019-10-28 13:10:32 +0100102
Damien Le Moaleded8bc2019-10-28 13:10:33 +0100103# set if we are running in S-mode and can use SBI calls
104config RISCV_SBI
105 bool
106 depends on !RISCV_M_MODE
107 default y
108
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700109config MMU
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100110 bool "MMU-based Paged Memory Management Support"
111 default y
112 help
113 Select if you want MMU-based virtualised addressing space
114 support by paged memory management. If unsure, say 'Y'.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700115
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100116config ZONE_DMA32
117 bool
Christoph Hellwigf1306f02018-04-27 08:41:09 +0200118 default y if 64BIT
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100119
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600120config VA_BITS
121 int
122 default 32 if 32BIT
123 default 39 if 64BIT
124
125config PA_BITS
126 int
127 default 34 if 32BIT
128 default 56 if 64BIT
129
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700130config PAGE_OFFSET
131 hex
132 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100133 default 0x80000000 if 64BIT && !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700134 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
135 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
136
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600137config ARCH_FLATMEM_ENABLE
138 def_bool y
139
140config ARCH_SPARSEMEM_ENABLE
141 def_bool y
Damien Le Moalaa2734202020-02-12 19:34:24 +0900142 depends on MMU
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600143 select SPARSEMEM_VMEMMAP_ENABLE
144
145config ARCH_SELECT_MEMORY_MODEL
146 def_bool ARCH_SPARSEMEM_ENABLE
147
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400148config ARCH_WANT_GENERAL_HUGETLB
149 def_bool y
150
Zong Li5fde3db2020-03-10 00:55:38 +0800151config ARCH_SUPPORTS_DEBUG_PAGEALLOC
152 def_bool y
153
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400154config SYS_SUPPORTS_HUGETLBFS
Kefeng Wang69868412020-05-11 10:19:58 +0800155 depends on MMU
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400156 def_bool y
157
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700158config STACKTRACE_SUPPORT
159 def_bool y
160
Alan Kao10626c32017-12-18 17:52:48 +0800161config TRACE_IRQFLAGS_SUPPORT
162 def_bool y
163
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700164config GENERIC_BUG
165 def_bool y
166 depends on BUG
167 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
168
169config GENERIC_BUG_RELATIVE_POINTERS
170 bool
171
172config GENERIC_CALIBRATE_DELAY
173 def_bool y
174
175config GENERIC_CSUM
176 def_bool y
177
178config GENERIC_HWEIGHT
179 def_bool y
180
Anup Patelf2c17aa2019-01-07 20:57:01 +0530181config FIX_EARLYCON_MEM
Andreas Schwab0312a3d2019-12-17 12:15:16 +0100182 def_bool MMU
Anup Patelf2c17aa2019-01-07 20:57:01 +0530183
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700184config PGTABLE_LEVELS
185 int
186 default 3 if 64BIT
187 default 2
188
Guo Ren3c469792020-06-27 13:57:08 +0000189config LOCKDEP_SUPPORT
190 def_bool y
191
Loys Ollivier0cbb8a32019-06-17 21:29:48 +0200192source "arch/riscv/Kconfig.socs"
193
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700194menu "Platform type"
195
196choice
197 prompt "Base ISA"
198 default ARCH_RV64I
199 help
Antony Pavlov86cca812019-01-08 22:45:57 +0300200 This selects the base ISA that this kernel will target and must match
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700201 the target platform.
202
203config ARCH_RV32I
204 bool "RV32I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700205 select 32BIT
Matt Redfearne3d59802018-04-11 08:50:17 +0100206 select GENERIC_LIB_ASHLDI3
207 select GENERIC_LIB_ASHRDI3
208 select GENERIC_LIB_LSHRDI3
Zong Li8f791252018-06-25 16:49:38 +0800209 select GENERIC_LIB_UCMPDI2
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100210 select MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700211
212config ARCH_RV64I
213 bool "RV64I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700214 select 64BIT
Ard Biesheuvelc12d3362019-11-08 13:22:27 +0100215 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100216 select HAVE_DYNAMIC_FTRACE if MMU
217 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -0700218 select HAVE_FTRACE_MCOUNT_RECORD
219 select HAVE_FUNCTION_GRAPH_TRACER
220 select HAVE_FUNCTION_TRACER
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100221 select SWIOTLB if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700222
223endchoice
224
225# We must be able to map all physical memory into the kernel, but the compiler
226# is still a bit more efficient when generating code if it's setup in a manner
227# such that it can only map 2GiB of memory.
228choice
229 prompt "Kernel Code Model"
230 default CMODEL_MEDLOW if 32BIT
231 default CMODEL_MEDANY if 64BIT
232
233 config CMODEL_MEDLOW
234 bool "medium low code model"
235 config CMODEL_MEDANY
236 bool "medium any code model"
237endchoice
238
Zong Liab1ef682018-03-15 16:50:41 +0800239config MODULE_SECTIONS
240 bool
241 select HAVE_MOD_ARCH_SPECIFIC
242
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700243choice
244 prompt "Maximum Physical Memory"
245 default MAXPHYSMEM_2GB if 32BIT
246 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
247 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
248
249 config MAXPHYSMEM_2GB
250 bool "2GiB"
251 config MAXPHYSMEM_128GB
252 depends on 64BIT && CMODEL_MEDANY
253 bool "128GiB"
254endchoice
255
256
257config SMP
258 bool "Symmetric Multi-Processing"
259 help
260 This enables support for systems with more than one CPU. If
261 you say N here, the kernel will run on single and
262 multiprocessor machines, but will use only one CPU of a
263 multiprocessor machine. If you say Y here, the kernel will run
264 on many, but not all, single processor machines. On a single
265 processor machine, the kernel will run faster if you say N
266 here.
267
268 If you don't know what to do here, say N.
269
270config NR_CPUS
271 int "Maximum number of CPUs (2-32)"
272 range 2 32
273 depends on SMP
274 default "8"
275
Atish Patraf1e58582020-03-17 18:11:44 -0700276config HOTPLUG_CPU
277 bool "Support for hot-pluggable CPUs"
278 depends on SMP
279 select GENERIC_IRQ_MIGRATION
280 help
281
282 Say Y here to experiment with turning CPUs off and on. CPUs
283 can be controlled through /sys/devices/system/cpu.
284
285 Say N if you want to disable CPU hotplug.
286
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700287choice
288 prompt "CPU Tuning"
289 default TUNE_GENERIC
290
291config TUNE_GENERIC
292 bool "generic"
293
294endchoice
295
296config RISCV_ISA_C
297 bool "Emit compressed instructions when building Linux"
298 default y
299 help
300 Adds "C" to the ISA subsets that the toolchain is allowed to emit
301 when building Linux, which results in compressed instructions in the
302 Linux binary.
303
304 If you don't know what to do here, say Y.
305
Alan Kao178e9fc2018-04-20 07:27:49 +0800306menu "supported PMU type"
307 depends on PERF_EVENTS
308
309config RISCV_BASE_PMU
310 bool "Base Performance Monitoring Unit"
311 def_bool y
312 help
313 A base PMU that serves as a reference implementation and has limited
314 feature of perf. It can run on any RISC-V machines so serves as the
315 fallback, but this option can also be disable to reduce kernel size.
316
317endmenu
318
Alan Kao9671f702018-10-09 10:18:33 +0800319config FPU
320 bool "FPU support"
321 default y
322 help
323 Say N here if you want to disable all floating-point related procedure
324 in the kernel.
325
326 If you don't know what to do here, say Y.
327
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700328endmenu
329
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300330menu "Kernel features"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700331
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700332source "kernel/Kconfig.hz"
333
David Abdurachmanov53406272019-10-04 17:12:22 -0700334config SECCOMP
335 bool "Enable seccomp to safely compute untrusted bytecode"
336 help
337 This kernel feature is useful for number crunching applications
338 that may need to compute untrusted bytecode during their
339 execution. By using pipes or other transports made available to
340 the process as file descriptors supporting the read/write
341 syscalls, it's possible to isolate those applications in
342 their own address space using seccomp. Once seccomp is
343 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
344 and the task is only allowed to execute a few safe syscalls
345 defined by each seccomp mode.
346
Atish Patraefca1392020-03-17 18:11:37 -0700347config RISCV_SBI_V01
348 bool "SBI v0.1 support"
349 default y
350 depends on RISCV_SBI
351 help
352 This config allows kernel to use SBI v0.1 APIs. This will be
353 deprecated in future once legacy M-mode software are no longer in use.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700354endmenu
355
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300356menu "Boot options"
357
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300358config CMDLINE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200359 string "Built-in kernel command line"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300360 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200361 For most platforms, the arguments for the kernel's command line
362 are provided at run-time, during boot. However, there are cases
363 where either no arguments are being provided or the provided
364 arguments are insufficient or even invalid.
365
366 When that occurs, it is possible to define a built-in command
367 line here and choose how the kernel should use it later on.
368
369choice
370 prompt "Built-in command line usage" if CMDLINE != ""
371 default CMDLINE_FALLBACK
372 help
373 Choose how the kernel will handle the provided built-in command
374 line.
375
376config CMDLINE_FALLBACK
377 bool "Use bootloader kernel arguments if available"
378 help
379 Use the built-in command line as fallback in case we get nothing
380 during boot. This is the default behaviour.
381
382config CMDLINE_EXTEND
383 bool "Extend bootloader kernel arguments"
384 help
385 The command-line arguments provided during boot will be
386 appended to the built-in command line. This is useful in
387 cases where the provided arguments are insufficient and
388 you don't want to or cannot modify them.
389
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300390
391config CMDLINE_FORCE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200392 bool "Always use the default kernel command string"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300393 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200394 Always use the built-in command line, even if we get one during
395 boot. This is useful in case you need to override the provided
396 command line on systems where you don't have or want control
397 over it.
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300398
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200399endchoice
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300400
401endmenu
402
Palmer Dabbelt2d268252020-04-14 13:43:24 +0900403config BUILTIN_DTB
404 def_bool n
405 depends on RISCV_M_MODE
406 depends on OF
407
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700408menu "Power management options"
409
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900410source "kernel/power/Kconfig"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700411
412endmenu