blob: 6ef2394be8578dd34f6c3ad41d5944a0dc4dcab7 [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
Emil Renner Berthing925ac7b2020-07-14 23:26:11 +020018 select ARCH_HAS_DEBUG_VM_PGTABLE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070019 select ARCH_HAS_DEBUG_VIRTUAL if MMU
Zong Lib422d282020-06-03 16:03:55 -070020 select ARCH_HAS_DEBUG_WX
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070021 select ARCH_HAS_GCOV_PROFILE_ALL
22 select ARCH_HAS_GIGANTIC_PAGE
Tobias Klauser20d38f72020-06-26 14:40:56 +020023 select ARCH_HAS_KCOV
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070024 select ARCH_HAS_MMIOWB
25 select ARCH_HAS_PTE_SPECIAL
26 select ARCH_HAS_SET_DIRECT_MAP
27 select ARCH_HAS_SET_MEMORY
28 select ARCH_HAS_STRICT_KERNEL_RWX if MMU
Vincent Chenfc0c7692020-06-23 13:36:59 +080029 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
30 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070031 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070032 select ARCH_WANT_FRAME_POINTERS
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070033 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070034 select CLONE_BACKWARDS
35 select COMMON_CLK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070036 select EDAC_SUPPORT
37 select GENERIC_ARCH_TOPOLOGY if SMP
38 select GENERIC_ATOMIC64 if !64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070039 select GENERIC_CLOCKEVENTS
Atish Patra6262f662020-09-17 15:37:11 -070040 select GENERIC_EARLY_IOREMAP
Vincent Chenad5d1122020-06-09 22:14:48 +080041 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070042 select GENERIC_IOREMAP
43 select GENERIC_IRQ_MULTI_HANDLER
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070044 select GENERIC_IRQ_SHOW
45 select GENERIC_PCI_IOMAP
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070046 select GENERIC_PTDUMP if MMU
Anup Patel9b9afe42018-12-04 15:59:51 +053047 select GENERIC_SCHED_CLOCK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070048 select GENERIC_SMP_IDLE_THREAD
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010049 select GENERIC_STRNCPY_FROM_USER if MMU
50 select GENERIC_STRNLEN_USER if MMU
Vincent Chenad5d1122020-06-09 22:14:48 +080051 select GENERIC_TIME_VSYSCALL if MMU && 64BIT
Anup Patel6b7ce8922020-06-01 14:45:40 +053052 select HANDLE_DOMAIN_IRQ
David Abdurachmanovefe75c42018-10-29 11:48:53 +010053 select HAVE_ARCH_AUDITSYSCALL
Emil Renner Berthingebc00dd2020-07-14 09:40:44 +020054 select HAVE_ARCH_JUMP_LABEL
55 select HAVE_ARCH_JUMP_LABEL_RELATIVE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070056 select HAVE_ARCH_KASAN if MMU && 64BIT
57 select HAVE_ARCH_KGDB
58 select HAVE_ARCH_KGDB_QXFER_PKT
59 select HAVE_ARCH_MMAP_RND_BITS if MMU
David Abdurachmanov53406272019-10-04 17:12:22 -070060 select HAVE_ARCH_SECCOMP_FILTER
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070061 select HAVE_ARCH_TRACEHOOK
Masahiro Yamada2ff2b7e2019-08-19 14:54:20 +090062 select HAVE_ASM_MODVERSIONS
Greentime Hued48b292020-06-24 17:03:16 +080063 select HAVE_CONTEXT_TRACKING
Tobias Klausercbb3d912020-06-27 12:50:50 +020064 select HAVE_DEBUG_KMEMLEAK
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010065 select HAVE_DMA_CONTIGUOUS if MMU
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070066 select HAVE_EBPF_JIT if MMU
Jim Wilsonb90edb32018-10-16 14:42:59 -070067 select HAVE_FUTEX_CMPXCHG if FUTEX
Tobias Klauser20d38f72020-06-26 14:40:56 +020068 select HAVE_GCC_PLUGINS
Vincent Chenad5d1122020-06-09 22:14:48 +080069 select HAVE_GENERIC_VDSO if MMU && 64BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070070 select HAVE_PCI
Alan Kao178e9fc2018-04-20 07:27:49 +080071 select HAVE_PERF_EVENTS
Mao Han98a93b02019-09-05 11:46:35 +080072 select HAVE_PERF_REGS
73 select HAVE_PERF_USER_STACK_DUMP
Guo Renf2c96992020-07-10 16:19:57 +000074 select HAVE_STACKPROTECTOR
David Abdurachmanov5aeb1b32018-12-06 16:26:35 +010075 select HAVE_SYSCALL_TRACEPOINTS
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070076 select IRQ_DOMAIN
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070077 select MODULES_USE_ELF_RELA if MODULES
Zong Li2cffc952018-12-07 17:02:16 +080078 select MODULE_SECTIONS if MODULES
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070079 select OF
80 select OF_EARLY_FLATTREE
81 select OF_IRQ
Christoph Hellwig2eac9c22018-11-15 20:05:33 +010082 select PCI_DOMAINS_GENERIC if PCI
Christoph Hellwigeb01d422018-11-15 20:05:32 +010083 select PCI_MSI if PCI
Anup Patele71ee062020-06-01 14:45:43 +053084 select RISCV_INTC
Anup Patel2bc3fc82020-08-17 18:12:50 +053085 select RISCV_TIMER if RISCV_SBI
Logan Gunthorped95f1a52019-08-28 15:40:54 -060086 select SPARSEMEM_STATIC if 32BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070087 select SPARSE_IRQ
88 select SYSCTL_EXCEPTION_TRACE
89 select THREAD_INFO_IN_TASK
Alexandre Ghiti54c95a12019-09-23 15:39:21 -070090
91config ARCH_MMAP_RND_BITS_MIN
92 default 18 if 64BIT
93 default 8
94
95# max bits determined by the following formula:
96# VA_BITS - PAGE_SHIFT - 3
97config ARCH_MMAP_RND_BITS_MAX
98 default 24 if 64BIT # SV39 based
99 default 17
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700100
Christoph Hellwiga4c37332019-10-28 13:10:32 +0100101# set if we run in machine mode, cleared if we run in supervisor mode
102config RISCV_M_MODE
103 bool
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100104 default !MMU
Christoph Hellwiga4c37332019-10-28 13:10:32 +0100105
Damien Le Moaleded8bc2019-10-28 13:10:33 +0100106# set if we are running in S-mode and can use SBI calls
107config RISCV_SBI
108 bool
109 depends on !RISCV_M_MODE
110 default y
111
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700112config MMU
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100113 bool "MMU-based Paged Memory Management Support"
114 default y
115 help
116 Select if you want MMU-based virtualised addressing space
117 support by paged memory management. If unsure, say 'Y'.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700118
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100119config ZONE_DMA32
120 bool
Christoph Hellwigf1306f02018-04-27 08:41:09 +0200121 default y if 64BIT
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100122
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600123config VA_BITS
124 int
125 default 32 if 32BIT
126 default 39 if 64BIT
127
128config PA_BITS
129 int
130 default 34 if 32BIT
131 default 56 if 64BIT
132
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700133config PAGE_OFFSET
134 hex
135 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100136 default 0x80000000 if 64BIT && !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700137 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
138 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
139
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600140config ARCH_FLATMEM_ENABLE
141 def_bool y
142
143config ARCH_SPARSEMEM_ENABLE
144 def_bool y
Damien Le Moalaa2734202020-02-12 19:34:24 +0900145 depends on MMU
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600146 select SPARSEMEM_VMEMMAP_ENABLE
147
148config ARCH_SELECT_MEMORY_MODEL
149 def_bool ARCH_SPARSEMEM_ENABLE
150
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400151config ARCH_WANT_GENERAL_HUGETLB
152 def_bool y
153
Zong Li5fde3db2020-03-10 00:55:38 +0800154config ARCH_SUPPORTS_DEBUG_PAGEALLOC
155 def_bool y
156
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400157config SYS_SUPPORTS_HUGETLBFS
Kefeng Wang69868412020-05-11 10:19:58 +0800158 depends on MMU
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400159 def_bool y
160
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700161config STACKTRACE_SUPPORT
162 def_bool y
163
Alan Kao10626c32017-12-18 17:52:48 +0800164config TRACE_IRQFLAGS_SUPPORT
165 def_bool y
166
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700167config GENERIC_BUG
168 def_bool y
169 depends on BUG
170 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
171
172config GENERIC_BUG_RELATIVE_POINTERS
173 bool
174
175config GENERIC_CALIBRATE_DELAY
176 def_bool y
177
178config GENERIC_CSUM
179 def_bool y
180
181config GENERIC_HWEIGHT
182 def_bool y
183
Anup Patelf2c17aa2019-01-07 20:57:01 +0530184config FIX_EARLYCON_MEM
Andreas Schwab0312a3d2019-12-17 12:15:16 +0100185 def_bool MMU
Anup Patelf2c17aa2019-01-07 20:57:01 +0530186
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700187config PGTABLE_LEVELS
188 int
189 default 3 if 64BIT
190 default 2
191
Guo Ren3c469792020-06-27 13:57:08 +0000192config LOCKDEP_SUPPORT
193 def_bool y
194
Loys Ollivier0cbb8a32019-06-17 21:29:48 +0200195source "arch/riscv/Kconfig.socs"
196
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700197menu "Platform type"
198
199choice
200 prompt "Base ISA"
201 default ARCH_RV64I
202 help
Antony Pavlov86cca812019-01-08 22:45:57 +0300203 This selects the base ISA that this kernel will target and must match
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700204 the target platform.
205
206config ARCH_RV32I
207 bool "RV32I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700208 select 32BIT
Matt Redfearne3d59802018-04-11 08:50:17 +0100209 select GENERIC_LIB_ASHLDI3
210 select GENERIC_LIB_ASHRDI3
211 select GENERIC_LIB_LSHRDI3
Zong Li8f791252018-06-25 16:49:38 +0800212 select GENERIC_LIB_UCMPDI2
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100213 select MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700214
215config ARCH_RV64I
216 bool "RV64I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700217 select 64BIT
Ard Biesheuvelc12d3362019-11-08 13:22:27 +0100218 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100219 select HAVE_DYNAMIC_FTRACE if MMU
220 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -0700221 select HAVE_FTRACE_MCOUNT_RECORD
222 select HAVE_FUNCTION_GRAPH_TRACER
223 select HAVE_FUNCTION_TRACER
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100224 select SWIOTLB if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700225
226endchoice
227
228# We must be able to map all physical memory into the kernel, but the compiler
229# is still a bit more efficient when generating code if it's setup in a manner
230# such that it can only map 2GiB of memory.
231choice
232 prompt "Kernel Code Model"
233 default CMODEL_MEDLOW if 32BIT
234 default CMODEL_MEDANY if 64BIT
235
236 config CMODEL_MEDLOW
237 bool "medium low code model"
238 config CMODEL_MEDANY
239 bool "medium any code model"
240endchoice
241
Zong Liab1ef682018-03-15 16:50:41 +0800242config MODULE_SECTIONS
243 bool
244 select HAVE_MOD_ARCH_SPECIFIC
245
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700246choice
247 prompt "Maximum Physical Memory"
248 default MAXPHYSMEM_2GB if 32BIT
249 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
250 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
251
252 config MAXPHYSMEM_2GB
253 bool "2GiB"
254 config MAXPHYSMEM_128GB
255 depends on 64BIT && CMODEL_MEDANY
256 bool "128GiB"
257endchoice
258
259
260config SMP
261 bool "Symmetric Multi-Processing"
262 help
263 This enables support for systems with more than one CPU. If
264 you say N here, the kernel will run on single and
265 multiprocessor machines, but will use only one CPU of a
266 multiprocessor machine. If you say Y here, the kernel will run
267 on many, but not all, single processor machines. On a single
268 processor machine, the kernel will run faster if you say N
269 here.
270
271 If you don't know what to do here, say N.
272
273config NR_CPUS
274 int "Maximum number of CPUs (2-32)"
275 range 2 32
276 depends on SMP
277 default "8"
278
Atish Patraf1e58582020-03-17 18:11:44 -0700279config HOTPLUG_CPU
280 bool "Support for hot-pluggable CPUs"
281 depends on SMP
282 select GENERIC_IRQ_MIGRATION
283 help
284
285 Say Y here to experiment with turning CPUs off and on. CPUs
286 can be controlled through /sys/devices/system/cpu.
287
288 Say N if you want to disable CPU hotplug.
289
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700290choice
291 prompt "CPU Tuning"
292 default TUNE_GENERIC
293
294config TUNE_GENERIC
295 bool "generic"
296
297endchoice
298
299config RISCV_ISA_C
300 bool "Emit compressed instructions when building Linux"
301 default y
302 help
303 Adds "C" to the ISA subsets that the toolchain is allowed to emit
304 when building Linux, which results in compressed instructions in the
305 Linux binary.
306
307 If you don't know what to do here, say Y.
308
Alan Kao178e9fc2018-04-20 07:27:49 +0800309menu "supported PMU type"
310 depends on PERF_EVENTS
311
312config RISCV_BASE_PMU
313 bool "Base Performance Monitoring Unit"
314 def_bool y
315 help
316 A base PMU that serves as a reference implementation and has limited
317 feature of perf. It can run on any RISC-V machines so serves as the
318 fallback, but this option can also be disable to reduce kernel size.
319
320endmenu
321
Alan Kao9671f702018-10-09 10:18:33 +0800322config FPU
323 bool "FPU support"
324 default y
325 help
326 Say N here if you want to disable all floating-point related procedure
327 in the kernel.
328
329 If you don't know what to do here, say Y.
330
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700331endmenu
332
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300333menu "Kernel features"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700334
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700335source "kernel/Kconfig.hz"
336
David Abdurachmanov53406272019-10-04 17:12:22 -0700337config SECCOMP
338 bool "Enable seccomp to safely compute untrusted bytecode"
339 help
340 This kernel feature is useful for number crunching applications
341 that may need to compute untrusted bytecode during their
342 execution. By using pipes or other transports made available to
343 the process as file descriptors supporting the read/write
344 syscalls, it's possible to isolate those applications in
345 their own address space using seccomp. Once seccomp is
346 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
347 and the task is only allowed to execute a few safe syscalls
348 defined by each seccomp mode.
349
Atish Patraefca1392020-03-17 18:11:37 -0700350config RISCV_SBI_V01
351 bool "SBI v0.1 support"
352 default y
353 depends on RISCV_SBI
354 help
355 This config allows kernel to use SBI v0.1 APIs. This will be
356 deprecated in future once legacy M-mode software are no longer in use.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700357endmenu
358
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300359menu "Boot options"
360
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300361config CMDLINE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200362 string "Built-in kernel command line"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300363 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200364 For most platforms, the arguments for the kernel's command line
365 are provided at run-time, during boot. However, there are cases
366 where either no arguments are being provided or the provided
367 arguments are insufficient or even invalid.
368
369 When that occurs, it is possible to define a built-in command
370 line here and choose how the kernel should use it later on.
371
372choice
373 prompt "Built-in command line usage" if CMDLINE != ""
374 default CMDLINE_FALLBACK
375 help
376 Choose how the kernel will handle the provided built-in command
377 line.
378
379config CMDLINE_FALLBACK
380 bool "Use bootloader kernel arguments if available"
381 help
382 Use the built-in command line as fallback in case we get nothing
383 during boot. This is the default behaviour.
384
385config CMDLINE_EXTEND
386 bool "Extend bootloader kernel arguments"
387 help
388 The command-line arguments provided during boot will be
389 appended to the built-in command line. This is useful in
390 cases where the provided arguments are insufficient and
391 you don't want to or cannot modify them.
392
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300393
394config CMDLINE_FORCE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200395 bool "Always use the default kernel command string"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300396 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200397 Always use the built-in command line, even if we get one during
398 boot. This is useful in case you need to override the provided
399 command line on systems where you don't have or want control
400 over it.
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300401
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200402endchoice
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300403
Atish Patrad7071742020-09-17 15:37:14 -0700404config EFI_STUB
405 bool
406
407config EFI
408 bool "UEFI runtime support"
409 depends on OF
410 select LIBFDT
411 select UCS2_STRING
412 select EFI_PARAMS_FROM_FDT
413 select EFI_STUB
414 select EFI_GENERIC_STUB
415 select RISCV_ISA_C
416 default y
417 help
418 This option provides support for runtime services provided
419 by UEFI firmware (such as non-volatile variables, realtime
420 clock, and platform reset). A UEFI stub is also provided to
421 allow the kernel to be booted as an EFI application. This
422 is only useful on systems that have UEFI firmware.
423
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300424endmenu
425
Palmer Dabbelt2d268252020-04-14 13:43:24 +0900426config BUILTIN_DTB
427 def_bool n
428 depends on RISCV_M_MODE
429 depends on OF
430
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700431menu "Power management options"
432
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900433source "kernel/power/Kconfig"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700434
435endmenu
Atish Patrad7071742020-09-17 15:37:14 -0700436
437source "drivers/firmware/Kconfig"