blob: 81b76d44725d7c50d3cdf2f406705b03ba5d5b56 [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
Mike Rapoport5d6ad662020-12-14 19:10:30 -080017 select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU
Kefeng Wang5cb00802020-11-13 14:42:23 +080018 select ARCH_STACKWALK
Christoph Hellwigad97f9d2019-06-13 09:09:03 +020019 select ARCH_HAS_BINFMT_FLAT
Emil Renner Berthing925ac7b2020-07-14 23:26:11 +020020 select ARCH_HAS_DEBUG_VM_PGTABLE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070021 select ARCH_HAS_DEBUG_VIRTUAL if MMU
Zong Lib422d282020-06-03 16:03:55 -070022 select ARCH_HAS_DEBUG_WX
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070023 select ARCH_HAS_GCOV_PROFILE_ALL
24 select ARCH_HAS_GIGANTIC_PAGE
Tobias Klauser20d38f72020-06-26 14:40:56 +020025 select ARCH_HAS_KCOV
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070026 select ARCH_HAS_MMIOWB
27 select ARCH_HAS_PTE_SPECIAL
28 select ARCH_HAS_SET_DIRECT_MAP
29 select ARCH_HAS_SET_MEMORY
30 select ARCH_HAS_STRICT_KERNEL_RWX if MMU
Vincent Chenfc0c7692020-06-23 13:36:59 +080031 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
32 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070033 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070034 select ARCH_WANT_FRAME_POINTERS
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070035 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070036 select CLONE_BACKWARDS
Palmer Dabbeltd5be89a2020-09-14 09:56:30 -070037 select CLINT_TIMER if !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070038 select COMMON_CLK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070039 select EDAC_SUPPORT
40 select GENERIC_ARCH_TOPOLOGY if SMP
41 select GENERIC_ATOMIC64 if !64BIT
Atish Patra6262f662020-09-17 15:37:11 -070042 select GENERIC_EARLY_IOREMAP
Vincent Chenad5d1122020-06-09 22:14:48 +080043 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070044 select GENERIC_IOREMAP
45 select GENERIC_IRQ_MULTI_HANDLER
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070046 select GENERIC_IRQ_SHOW
Palmer Dabbelt78ed4732020-07-09 11:51:17 -070047 select GENERIC_LIB_DEVMEM_IS_ALLOWED
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070048 select GENERIC_PCI_IOMAP
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070049 select GENERIC_PTDUMP if MMU
Anup Patel9b9afe42018-12-04 15:59:51 +053050 select GENERIC_SCHED_CLOCK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070051 select GENERIC_SMP_IDLE_THREAD
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010052 select GENERIC_STRNCPY_FROM_USER if MMU
53 select GENERIC_STRNLEN_USER if MMU
Vincent Chenad5d1122020-06-09 22:14:48 +080054 select GENERIC_TIME_VSYSCALL if MMU && 64BIT
Anup Patel6b7ce8922020-06-01 14:45:40 +053055 select HANDLE_DOMAIN_IRQ
David Abdurachmanovefe75c42018-10-29 11:48:53 +010056 select HAVE_ARCH_AUDITSYSCALL
Emil Renner Berthingebc00dd2020-07-14 09:40:44 +020057 select HAVE_ARCH_JUMP_LABEL
58 select HAVE_ARCH_JUMP_LABEL_RELATIVE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070059 select HAVE_ARCH_KASAN if MMU && 64BIT
60 select HAVE_ARCH_KGDB
61 select HAVE_ARCH_KGDB_QXFER_PKT
62 select HAVE_ARCH_MMAP_RND_BITS if MMU
David Abdurachmanov53406272019-10-04 17:12:22 -070063 select HAVE_ARCH_SECCOMP_FILTER
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070064 select HAVE_ARCH_TRACEHOOK
Masahiro Yamada2ff2b7e2019-08-19 14:54:20 +090065 select HAVE_ASM_MODVERSIONS
Greentime Hued48b292020-06-24 17:03:16 +080066 select HAVE_CONTEXT_TRACKING
Tobias Klausercbb3d912020-06-27 12:50:50 +020067 select HAVE_DEBUG_KMEMLEAK
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010068 select HAVE_DMA_CONTIGUOUS if MMU
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070069 select HAVE_EBPF_JIT if MMU
Jim Wilsonb90edb32018-10-16 14:42:59 -070070 select HAVE_FUTEX_CMPXCHG if FUTEX
Tobias Klauser20d38f72020-06-26 14:40:56 +020071 select HAVE_GCC_PLUGINS
Vincent Chenad5d1122020-06-09 22:14:48 +080072 select HAVE_GENERIC_VDSO if MMU && 64BIT
Kefeng Wang31564b82020-10-28 12:28:42 +080073 select HAVE_IRQ_TIME_ACCOUNTING
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070074 select HAVE_PCI
Alan Kao178e9fc2018-04-20 07:27:49 +080075 select HAVE_PERF_EVENTS
Mao Han98a93b02019-09-05 11:46:35 +080076 select HAVE_PERF_REGS
77 select HAVE_PERF_USER_STACK_DUMP
Guo Renf2c96992020-07-10 16:19:57 +000078 select HAVE_STACKPROTECTOR
David Abdurachmanov5aeb1b32018-12-06 16:26:35 +010079 select HAVE_SYSCALL_TRACEPOINTS
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070080 select IRQ_DOMAIN
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070081 select MODULES_USE_ELF_RELA if MODULES
Zong Li2cffc952018-12-07 17:02:16 +080082 select MODULE_SECTIONS if MODULES
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070083 select OF
84 select OF_EARLY_FLATTREE
85 select OF_IRQ
Christoph Hellwig2eac9c22018-11-15 20:05:33 +010086 select PCI_DOMAINS_GENERIC if PCI
Christoph Hellwigeb01d422018-11-15 20:05:32 +010087 select PCI_MSI if PCI
Anup Patele71ee062020-06-01 14:45:43 +053088 select RISCV_INTC
Anup Patel2bc3fc82020-08-17 18:12:50 +053089 select RISCV_TIMER if RISCV_SBI
Logan Gunthorped95f1a52019-08-28 15:40:54 -060090 select SPARSEMEM_STATIC if 32BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070091 select SPARSE_IRQ
92 select SYSCTL_EXCEPTION_TRACE
93 select THREAD_INFO_IN_TASK
Christoph Hellwig11129e82020-09-07 07:58:22 +020094 select UACCESS_MEMCPY if !MMU
Alexandre Ghiti54c95a12019-09-23 15:39:21 -070095
96config ARCH_MMAP_RND_BITS_MIN
97 default 18 if 64BIT
98 default 8
99
100# max bits determined by the following formula:
101# VA_BITS - PAGE_SHIFT - 3
102config ARCH_MMAP_RND_BITS_MAX
103 default 24 if 64BIT # SV39 based
104 default 17
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700105
Christoph Hellwiga4c37332019-10-28 13:10:32 +0100106# set if we run in machine mode, cleared if we run in supervisor mode
107config RISCV_M_MODE
108 bool
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100109 default !MMU
Christoph Hellwiga4c37332019-10-28 13:10:32 +0100110
Damien Le Moaleded8bc2019-10-28 13:10:33 +0100111# set if we are running in S-mode and can use SBI calls
112config RISCV_SBI
113 bool
114 depends on !RISCV_M_MODE
115 default y
116
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700117config MMU
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100118 bool "MMU-based Paged Memory Management Support"
119 default y
120 help
121 Select if you want MMU-based virtualised addressing space
122 support by paged memory management. If unsure, say 'Y'.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700123
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100124config ZONE_DMA32
125 bool
Christoph Hellwigf1306f02018-04-27 08:41:09 +0200126 default y if 64BIT
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100127
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600128config VA_BITS
129 int
130 default 32 if 32BIT
131 default 39 if 64BIT
132
133config PA_BITS
134 int
135 default 34 if 32BIT
136 default 56 if 64BIT
137
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700138config PAGE_OFFSET
139 hex
140 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100141 default 0x80000000 if 64BIT && !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700142 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
143 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
144
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600145config ARCH_FLATMEM_ENABLE
146 def_bool y
147
148config ARCH_SPARSEMEM_ENABLE
149 def_bool y
Damien Le Moalaa2734202020-02-12 19:34:24 +0900150 depends on MMU
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600151 select SPARSEMEM_VMEMMAP_ENABLE
152
153config ARCH_SELECT_MEMORY_MODEL
154 def_bool ARCH_SPARSEMEM_ENABLE
155
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400156config ARCH_WANT_GENERAL_HUGETLB
157 def_bool y
158
159config SYS_SUPPORTS_HUGETLBFS
Kefeng Wang69868412020-05-11 10:19:58 +0800160 depends on MMU
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400161 def_bool y
162
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700163config STACKTRACE_SUPPORT
164 def_bool y
165
Alan Kao10626c32017-12-18 17:52:48 +0800166config TRACE_IRQFLAGS_SUPPORT
167 def_bool y
168
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700169config GENERIC_BUG
170 def_bool y
171 depends on BUG
172 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
173
174config GENERIC_BUG_RELATIVE_POINTERS
175 bool
176
177config GENERIC_CALIBRATE_DELAY
178 def_bool y
179
180config GENERIC_CSUM
181 def_bool y
182
183config GENERIC_HWEIGHT
184 def_bool y
185
Anup Patelf2c17aa2019-01-07 20:57:01 +0530186config FIX_EARLYCON_MEM
Andreas Schwab0312a3d2019-12-17 12:15:16 +0100187 def_bool MMU
Anup Patelf2c17aa2019-01-07 20:57:01 +0530188
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700189config PGTABLE_LEVELS
190 int
191 default 3 if 64BIT
192 default 2
193
Guo Ren3c469792020-06-27 13:57:08 +0000194config LOCKDEP_SUPPORT
195 def_bool y
196
Loys Ollivier0cbb8a32019-06-17 21:29:48 +0200197source "arch/riscv/Kconfig.socs"
198
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700199menu "Platform type"
200
201choice
202 prompt "Base ISA"
203 default ARCH_RV64I
204 help
Antony Pavlov86cca812019-01-08 22:45:57 +0300205 This selects the base ISA that this kernel will target and must match
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700206 the target platform.
207
208config ARCH_RV32I
209 bool "RV32I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700210 select 32BIT
Matt Redfearne3d59802018-04-11 08:50:17 +0100211 select GENERIC_LIB_ASHLDI3
212 select GENERIC_LIB_ASHRDI3
213 select GENERIC_LIB_LSHRDI3
Zong Li8f791252018-06-25 16:49:38 +0800214 select GENERIC_LIB_UCMPDI2
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100215 select MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700216
217config ARCH_RV64I
218 bool "RV64I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700219 select 64BIT
Ard Biesheuvelc12d3362019-11-08 13:22:27 +0100220 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100221 select HAVE_DYNAMIC_FTRACE if MMU
222 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -0700223 select HAVE_FTRACE_MCOUNT_RECORD
224 select HAVE_FUNCTION_GRAPH_TRACER
225 select HAVE_FUNCTION_TRACER
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100226 select SWIOTLB if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700227
228endchoice
229
230# We must be able to map all physical memory into the kernel, but the compiler
231# is still a bit more efficient when generating code if it's setup in a manner
232# such that it can only map 2GiB of memory.
233choice
234 prompt "Kernel Code Model"
235 default CMODEL_MEDLOW if 32BIT
236 default CMODEL_MEDANY if 64BIT
237
238 config CMODEL_MEDLOW
239 bool "medium low code model"
240 config CMODEL_MEDANY
241 bool "medium any code model"
242endchoice
243
Zong Liab1ef682018-03-15 16:50:41 +0800244config MODULE_SECTIONS
245 bool
246 select HAVE_MOD_ARCH_SPECIFIC
247
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700248choice
249 prompt "Maximum Physical Memory"
250 default MAXPHYSMEM_2GB if 32BIT
251 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
252 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
253
254 config MAXPHYSMEM_2GB
255 bool "2GiB"
256 config MAXPHYSMEM_128GB
257 depends on 64BIT && CMODEL_MEDANY
258 bool "128GiB"
259endchoice
260
261
262config SMP
263 bool "Symmetric Multi-Processing"
264 help
265 This enables support for systems with more than one CPU. If
266 you say N here, the kernel will run on single and
267 multiprocessor machines, but will use only one CPU of a
268 multiprocessor machine. If you say Y here, the kernel will run
269 on many, but not all, single processor machines. On a single
270 processor machine, the kernel will run faster if you say N
271 here.
272
273 If you don't know what to do here, say N.
274
275config NR_CPUS
276 int "Maximum number of CPUs (2-32)"
277 range 2 32
278 depends on SMP
279 default "8"
280
Atish Patraf1e58582020-03-17 18:11:44 -0700281config HOTPLUG_CPU
282 bool "Support for hot-pluggable CPUs"
283 depends on SMP
284 select GENERIC_IRQ_MIGRATION
285 help
286
287 Say Y here to experiment with turning CPUs off and on. CPUs
288 can be controlled through /sys/devices/system/cpu.
289
290 Say N if you want to disable CPU hotplug.
291
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700292choice
293 prompt "CPU Tuning"
294 default TUNE_GENERIC
295
296config TUNE_GENERIC
297 bool "generic"
298
299endchoice
300
301config RISCV_ISA_C
302 bool "Emit compressed instructions when building Linux"
303 default y
304 help
305 Adds "C" to the ISA subsets that the toolchain is allowed to emit
306 when building Linux, which results in compressed instructions in the
307 Linux binary.
308
309 If you don't know what to do here, say Y.
310
Alan Kao178e9fc2018-04-20 07:27:49 +0800311menu "supported PMU type"
312 depends on PERF_EVENTS
313
314config RISCV_BASE_PMU
315 bool "Base Performance Monitoring Unit"
316 def_bool y
317 help
318 A base PMU that serves as a reference implementation and has limited
319 feature of perf. It can run on any RISC-V machines so serves as the
320 fallback, but this option can also be disable to reduce kernel size.
321
322endmenu
323
Alan Kao9671f702018-10-09 10:18:33 +0800324config FPU
325 bool "FPU support"
326 default y
327 help
328 Say N here if you want to disable all floating-point related procedure
329 in the kernel.
330
331 If you don't know what to do here, say Y.
332
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700333endmenu
334
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300335menu "Kernel features"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700336
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700337source "kernel/Kconfig.hz"
338
Atish Patraefca1392020-03-17 18:11:37 -0700339config RISCV_SBI_V01
340 bool "SBI v0.1 support"
341 default y
342 depends on RISCV_SBI
343 help
344 This config allows kernel to use SBI v0.1 APIs. This will be
345 deprecated in future once legacy M-mode software are no longer in use.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700346endmenu
347
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300348menu "Boot options"
349
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300350config CMDLINE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200351 string "Built-in kernel command line"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300352 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200353 For most platforms, the arguments for the kernel's command line
354 are provided at run-time, during boot. However, there are cases
355 where either no arguments are being provided or the provided
356 arguments are insufficient or even invalid.
357
358 When that occurs, it is possible to define a built-in command
359 line here and choose how the kernel should use it later on.
360
361choice
362 prompt "Built-in command line usage" if CMDLINE != ""
363 default CMDLINE_FALLBACK
364 help
365 Choose how the kernel will handle the provided built-in command
366 line.
367
368config CMDLINE_FALLBACK
369 bool "Use bootloader kernel arguments if available"
370 help
371 Use the built-in command line as fallback in case we get nothing
372 during boot. This is the default behaviour.
373
374config CMDLINE_EXTEND
375 bool "Extend bootloader kernel arguments"
376 help
377 The command-line arguments provided during boot will be
378 appended to the built-in command line. This is useful in
379 cases where the provided arguments are insufficient and
380 you don't want to or cannot modify them.
381
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300382
383config CMDLINE_FORCE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200384 bool "Always use the default kernel command string"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300385 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200386 Always use the built-in command line, even if we get one during
387 boot. This is useful in case you need to override the provided
388 command line on systems where you don't have or want control
389 over it.
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300390
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200391endchoice
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300392
Atish Patrad7071742020-09-17 15:37:14 -0700393config EFI_STUB
394 bool
395
396config EFI
397 bool "UEFI runtime support"
398 depends on OF
399 select LIBFDT
400 select UCS2_STRING
401 select EFI_PARAMS_FROM_FDT
402 select EFI_STUB
403 select EFI_GENERIC_STUB
Atish Patrab91540d2020-09-17 15:37:15 -0700404 select EFI_RUNTIME_WRAPPERS
Atish Patrad7071742020-09-17 15:37:14 -0700405 select RISCV_ISA_C
Atish Patrab91540d2020-09-17 15:37:15 -0700406 depends on MMU
Atish Patrad7071742020-09-17 15:37:14 -0700407 default y
408 help
409 This option provides support for runtime services provided
410 by UEFI firmware (such as non-volatile variables, realtime
411 clock, and platform reset). A UEFI stub is also provided to
412 allow the kernel to be booted as an EFI application. This
413 is only useful on systems that have UEFI firmware.
414
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300415endmenu
416
Palmer Dabbelt2d268252020-04-14 13:43:24 +0900417config BUILTIN_DTB
418 def_bool n
419 depends on RISCV_M_MODE
420 depends on OF
421
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700422menu "Power management options"
423
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900424source "kernel/power/Kconfig"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700425
426endmenu
Atish Patrad7071742020-09-17 15:37:14 -0700427
428source "drivers/firmware/Kconfig"