blob: 9283c6f9ae2a7048d25ea77178ffa9756fac565f [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
Christoph Hellwigad97f9d2019-06-13 09:09:03 +020018 select ARCH_HAS_BINFMT_FLAT
Emil Renner Berthing925ac7b2020-07-14 23:26:11 +020019 select ARCH_HAS_DEBUG_VM_PGTABLE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070020 select ARCH_HAS_DEBUG_VIRTUAL if MMU
Zong Lib422d282020-06-03 16:03:55 -070021 select ARCH_HAS_DEBUG_WX
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070022 select ARCH_HAS_GCOV_PROFILE_ALL
23 select ARCH_HAS_GIGANTIC_PAGE
Tobias Klauser20d38f72020-06-26 14:40:56 +020024 select ARCH_HAS_KCOV
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070025 select ARCH_HAS_MMIOWB
26 select ARCH_HAS_PTE_SPECIAL
27 select ARCH_HAS_SET_DIRECT_MAP
28 select ARCH_HAS_SET_MEMORY
29 select ARCH_HAS_STRICT_KERNEL_RWX if MMU
Vincent Chenfc0c7692020-06-23 13:36:59 +080030 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
31 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070032 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070033 select ARCH_WANT_FRAME_POINTERS
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070034 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070035 select CLONE_BACKWARDS
Palmer Dabbeltd5be89a2020-09-14 09:56:30 -070036 select CLINT_TIMER if !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070037 select COMMON_CLK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070038 select EDAC_SUPPORT
39 select GENERIC_ARCH_TOPOLOGY if SMP
40 select GENERIC_ATOMIC64 if !64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070041 select GENERIC_CLOCKEVENTS
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
47 select GENERIC_PCI_IOMAP
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070048 select GENERIC_PTDUMP if MMU
Anup Patel9b9afe42018-12-04 15:59:51 +053049 select GENERIC_SCHED_CLOCK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070050 select GENERIC_SMP_IDLE_THREAD
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010051 select GENERIC_STRNCPY_FROM_USER if MMU
52 select GENERIC_STRNLEN_USER if MMU
Vincent Chenad5d1122020-06-09 22:14:48 +080053 select GENERIC_TIME_VSYSCALL if MMU && 64BIT
Anup Patel6b7ce8922020-06-01 14:45:40 +053054 select HANDLE_DOMAIN_IRQ
David Abdurachmanovefe75c42018-10-29 11:48:53 +010055 select HAVE_ARCH_AUDITSYSCALL
Emil Renner Berthingebc00dd2020-07-14 09:40:44 +020056 select HAVE_ARCH_JUMP_LABEL
57 select HAVE_ARCH_JUMP_LABEL_RELATIVE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070058 select HAVE_ARCH_KASAN if MMU && 64BIT
59 select HAVE_ARCH_KGDB
60 select HAVE_ARCH_KGDB_QXFER_PKT
61 select HAVE_ARCH_MMAP_RND_BITS if MMU
David Abdurachmanov53406272019-10-04 17:12:22 -070062 select HAVE_ARCH_SECCOMP_FILTER
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070063 select HAVE_ARCH_TRACEHOOK
Masahiro Yamada2ff2b7e2019-08-19 14:54:20 +090064 select HAVE_ASM_MODVERSIONS
Greentime Hued48b292020-06-24 17:03:16 +080065 select HAVE_CONTEXT_TRACKING
Tobias Klausercbb3d912020-06-27 12:50:50 +020066 select HAVE_DEBUG_KMEMLEAK
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010067 select HAVE_DMA_CONTIGUOUS if MMU
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070068 select HAVE_EBPF_JIT if MMU
Jim Wilsonb90edb32018-10-16 14:42:59 -070069 select HAVE_FUTEX_CMPXCHG if FUTEX
Tobias Klauser20d38f72020-06-26 14:40:56 +020070 select HAVE_GCC_PLUGINS
Vincent Chenad5d1122020-06-09 22:14:48 +080071 select HAVE_GENERIC_VDSO if MMU && 64BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070072 select HAVE_PCI
Alan Kao178e9fc2018-04-20 07:27:49 +080073 select HAVE_PERF_EVENTS
Mao Han98a93b02019-09-05 11:46:35 +080074 select HAVE_PERF_REGS
75 select HAVE_PERF_USER_STACK_DUMP
Guo Renf2c96992020-07-10 16:19:57 +000076 select HAVE_STACKPROTECTOR
David Abdurachmanov5aeb1b32018-12-06 16:26:35 +010077 select HAVE_SYSCALL_TRACEPOINTS
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070078 select IRQ_DOMAIN
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070079 select MODULES_USE_ELF_RELA if MODULES
Zong Li2cffc952018-12-07 17:02:16 +080080 select MODULE_SECTIONS if MODULES
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070081 select OF
82 select OF_EARLY_FLATTREE
83 select OF_IRQ
Christoph Hellwig2eac9c22018-11-15 20:05:33 +010084 select PCI_DOMAINS_GENERIC if PCI
Christoph Hellwigeb01d422018-11-15 20:05:32 +010085 select PCI_MSI if PCI
Anup Patele71ee062020-06-01 14:45:43 +053086 select RISCV_INTC
Anup Patel2bc3fc82020-08-17 18:12:50 +053087 select RISCV_TIMER if RISCV_SBI
Logan Gunthorped95f1a52019-08-28 15:40:54 -060088 select SPARSEMEM_STATIC if 32BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070089 select SPARSE_IRQ
90 select SYSCTL_EXCEPTION_TRACE
91 select THREAD_INFO_IN_TASK
Christoph Hellwig11129e82020-09-07 07:58:22 +020092 select UACCESS_MEMCPY if !MMU
Alexandre Ghiti54c95a12019-09-23 15:39:21 -070093
94config ARCH_MMAP_RND_BITS_MIN
95 default 18 if 64BIT
96 default 8
97
98# max bits determined by the following formula:
99# VA_BITS - PAGE_SHIFT - 3
100config ARCH_MMAP_RND_BITS_MAX
101 default 24 if 64BIT # SV39 based
102 default 17
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700103
Christoph Hellwiga4c37332019-10-28 13:10:32 +0100104# set if we run in machine mode, cleared if we run in supervisor mode
105config RISCV_M_MODE
106 bool
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100107 default !MMU
Christoph Hellwiga4c37332019-10-28 13:10:32 +0100108
Damien Le Moaleded8bc2019-10-28 13:10:33 +0100109# set if we are running in S-mode and can use SBI calls
110config RISCV_SBI
111 bool
112 depends on !RISCV_M_MODE
113 default y
114
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700115config MMU
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100116 bool "MMU-based Paged Memory Management Support"
117 default y
118 help
119 Select if you want MMU-based virtualised addressing space
120 support by paged memory management. If unsure, say 'Y'.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700121
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100122config ZONE_DMA32
123 bool
Christoph Hellwigf1306f02018-04-27 08:41:09 +0200124 default y if 64BIT
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100125
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600126config VA_BITS
127 int
128 default 32 if 32BIT
129 default 39 if 64BIT
130
131config PA_BITS
132 int
133 default 34 if 32BIT
134 default 56 if 64BIT
135
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700136config PAGE_OFFSET
137 hex
138 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100139 default 0x80000000 if 64BIT && !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700140 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
141 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
142
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600143config ARCH_FLATMEM_ENABLE
144 def_bool y
145
146config ARCH_SPARSEMEM_ENABLE
147 def_bool y
Damien Le Moalaa2734202020-02-12 19:34:24 +0900148 depends on MMU
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600149 select SPARSEMEM_VMEMMAP_ENABLE
150
151config ARCH_SELECT_MEMORY_MODEL
152 def_bool ARCH_SPARSEMEM_ENABLE
153
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400154config ARCH_WANT_GENERAL_HUGETLB
155 def_bool y
156
157config 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
Atish Patraefca1392020-03-17 18:11:37 -0700337config RISCV_SBI_V01
338 bool "SBI v0.1 support"
339 default y
340 depends on RISCV_SBI
341 help
342 This config allows kernel to use SBI v0.1 APIs. This will be
343 deprecated in future once legacy M-mode software are no longer in use.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700344endmenu
345
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300346menu "Boot options"
347
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300348config CMDLINE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200349 string "Built-in kernel command line"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300350 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200351 For most platforms, the arguments for the kernel's command line
352 are provided at run-time, during boot. However, there are cases
353 where either no arguments are being provided or the provided
354 arguments are insufficient or even invalid.
355
356 When that occurs, it is possible to define a built-in command
357 line here and choose how the kernel should use it later on.
358
359choice
360 prompt "Built-in command line usage" if CMDLINE != ""
361 default CMDLINE_FALLBACK
362 help
363 Choose how the kernel will handle the provided built-in command
364 line.
365
366config CMDLINE_FALLBACK
367 bool "Use bootloader kernel arguments if available"
368 help
369 Use the built-in command line as fallback in case we get nothing
370 during boot. This is the default behaviour.
371
372config CMDLINE_EXTEND
373 bool "Extend bootloader kernel arguments"
374 help
375 The command-line arguments provided during boot will be
376 appended to the built-in command line. This is useful in
377 cases where the provided arguments are insufficient and
378 you don't want to or cannot modify them.
379
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300380
381config CMDLINE_FORCE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200382 bool "Always use the default kernel command string"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300383 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200384 Always use the built-in command line, even if we get one during
385 boot. This is useful in case you need to override the provided
386 command line on systems where you don't have or want control
387 over it.
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300388
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200389endchoice
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300390
Atish Patrad7071742020-09-17 15:37:14 -0700391config EFI_STUB
392 bool
393
394config EFI
395 bool "UEFI runtime support"
396 depends on OF
397 select LIBFDT
398 select UCS2_STRING
399 select EFI_PARAMS_FROM_FDT
400 select EFI_STUB
401 select EFI_GENERIC_STUB
Atish Patrab91540d2020-09-17 15:37:15 -0700402 select EFI_RUNTIME_WRAPPERS
Atish Patrad7071742020-09-17 15:37:14 -0700403 select RISCV_ISA_C
Atish Patrab91540d2020-09-17 15:37:15 -0700404 depends on MMU
Atish Patrad7071742020-09-17 15:37:14 -0700405 default y
406 help
407 This option provides support for runtime services provided
408 by UEFI firmware (such as non-volatile variables, realtime
409 clock, and platform reset). A UEFI stub is also provided to
410 allow the kernel to be booted as an EFI application. This
411 is only useful on systems that have UEFI firmware.
412
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300413endmenu
414
Palmer Dabbelt2d268252020-04-14 13:43:24 +0900415config BUILTIN_DTB
416 def_bool n
417 depends on RISCV_M_MODE
418 depends on OF
419
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700420menu "Power management options"
421
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900422source "kernel/power/Kconfig"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700423
424endmenu
Atish Patrad7071742020-09-17 15:37:14 -0700425
426source "drivers/firmware/Kconfig"