blob: 8244b8f7e7c3c28651c20d848cae763d512ebc96 [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
Christoph Hellwigad97f9d2019-06-13 09:09:03 +020015 select ARCH_HAS_BINFMT_FLAT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070016 select ARCH_HAS_DEBUG_VIRTUAL if MMU
Zong Lib422d282020-06-03 16:03:55 -070017 select ARCH_HAS_DEBUG_WX
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070018 select ARCH_HAS_GCOV_PROFILE_ALL
19 select ARCH_HAS_GIGANTIC_PAGE
20 select ARCH_HAS_MMIOWB
21 select ARCH_HAS_PTE_SPECIAL
22 select ARCH_HAS_SET_DIRECT_MAP
23 select ARCH_HAS_SET_MEMORY
24 select ARCH_HAS_STRICT_KERNEL_RWX if MMU
25 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070026 select ARCH_WANT_FRAME_POINTERS
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070027 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070028 select CLONE_BACKWARDS
29 select COMMON_CLK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070030 select EDAC_SUPPORT
31 select GENERIC_ARCH_TOPOLOGY if SMP
32 select GENERIC_ATOMIC64 if !64BIT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070033 select GENERIC_CLOCKEVENTS
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070034 select GENERIC_IOREMAP
35 select GENERIC_IRQ_MULTI_HANDLER
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070036 select GENERIC_IRQ_SHOW
37 select GENERIC_PCI_IOMAP
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070038 select GENERIC_PTDUMP if MMU
Anup Patel9b9afe42018-12-04 15:59:51 +053039 select GENERIC_SCHED_CLOCK
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070040 select GENERIC_SMP_IDLE_THREAD
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010041 select GENERIC_STRNCPY_FROM_USER if MMU
42 select GENERIC_STRNLEN_USER if MMU
David Abdurachmanovefe75c42018-10-29 11:48:53 +010043 select HAVE_ARCH_AUDITSYSCALL
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070044 select HAVE_ARCH_KASAN if MMU && 64BIT
45 select HAVE_ARCH_KGDB
46 select HAVE_ARCH_KGDB_QXFER_PKT
47 select HAVE_ARCH_MMAP_RND_BITS if MMU
David Abdurachmanov53406272019-10-04 17:12:22 -070048 select HAVE_ARCH_SECCOMP_FILTER
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070049 select HAVE_ARCH_TRACEHOOK
Masahiro Yamada2ff2b7e2019-08-19 14:54:20 +090050 select HAVE_ASM_MODVERSIONS
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070051 select HAVE_COPY_THREAD_TLS
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010052 select HAVE_DMA_CONTIGUOUS if MMU
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070053 select HAVE_EBPF_JIT if MMU
Jim Wilsonb90edb32018-10-16 14:42:59 -070054 select HAVE_FUTEX_CMPXCHG if FUTEX
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070055 select HAVE_PCI
Alan Kao178e9fc2018-04-20 07:27:49 +080056 select HAVE_PERF_EVENTS
Mao Han98a93b02019-09-05 11:46:35 +080057 select HAVE_PERF_REGS
58 select HAVE_PERF_USER_STACK_DUMP
David Abdurachmanov5aeb1b32018-12-06 16:26:35 +010059 select HAVE_SYSCALL_TRACEPOINTS
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070060 select IRQ_DOMAIN
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070061 select MODULES_USE_ELF_RELA if MODULES
Zong Li2cffc952018-12-07 17:02:16 +080062 select MODULE_SECTIONS if MODULES
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070063 select OF
64 select OF_EARLY_FLATTREE
65 select OF_IRQ
Christoph Hellwig2eac9c22018-11-15 20:05:33 +010066 select PCI_DOMAINS_GENERIC if PCI
Christoph Hellwigeb01d422018-11-15 20:05:32 +010067 select PCI_MSI if PCI
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070068 select RISCV_TIMER
Logan Gunthorped95f1a52019-08-28 15:40:54 -060069 select SPARSEMEM_STATIC if 32BIT
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -070070 select SPARSE_IRQ
71 select SYSCTL_EXCEPTION_TRACE
72 select THREAD_INFO_IN_TASK
Alexandre Ghiti54c95a12019-09-23 15:39:21 -070073
74config ARCH_MMAP_RND_BITS_MIN
75 default 18 if 64BIT
76 default 8
77
78# max bits determined by the following formula:
79# VA_BITS - PAGE_SHIFT - 3
80config ARCH_MMAP_RND_BITS_MAX
81 default 24 if 64BIT # SV39 based
82 default 17
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070083
Christoph Hellwiga4c37332019-10-28 13:10:32 +010084# set if we run in machine mode, cleared if we run in supervisor mode
85config RISCV_M_MODE
86 bool
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010087 default !MMU
Christoph Hellwiga4c37332019-10-28 13:10:32 +010088
Damien Le Moaleded8bc2019-10-28 13:10:33 +010089# set if we are running in S-mode and can use SBI calls
90config RISCV_SBI
91 bool
92 depends on !RISCV_M_MODE
93 default y
94
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070095config MMU
Christoph Hellwig6bd33e12019-10-28 13:10:41 +010096 bool "MMU-based Paged Memory Management Support"
97 default y
98 help
99 Select if you want MMU-based virtualised addressing space
100 support by paged memory management. If unsure, say 'Y'.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700101
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100102config ZONE_DMA32
103 bool
Christoph Hellwigf1306f02018-04-27 08:41:09 +0200104 default y if 64BIT
Christoph Hellwig5ec9c4f2018-01-16 09:37:50 +0100105
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600106config VA_BITS
107 int
108 default 32 if 32BIT
109 default 39 if 64BIT
110
111config PA_BITS
112 int
113 default 34 if 32BIT
114 default 56 if 64BIT
115
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700116config PAGE_OFFSET
117 hex
118 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100119 default 0x80000000 if 64BIT && !MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700120 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
121 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
122
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600123config ARCH_FLATMEM_ENABLE
124 def_bool y
125
126config ARCH_SPARSEMEM_ENABLE
127 def_bool y
Damien Le Moalaa2734202020-02-12 19:34:24 +0900128 depends on MMU
Logan Gunthorped95f1a52019-08-28 15:40:54 -0600129 select SPARSEMEM_VMEMMAP_ENABLE
130
131config ARCH_SELECT_MEMORY_MODEL
132 def_bool ARCH_SPARSEMEM_ENABLE
133
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400134config ARCH_WANT_GENERAL_HUGETLB
135 def_bool y
136
Zong Li5fde3db2020-03-10 00:55:38 +0800137config ARCH_SUPPORTS_DEBUG_PAGEALLOC
138 def_bool y
139
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400140config SYS_SUPPORTS_HUGETLBFS
Kefeng Wang69868412020-05-11 10:19:58 +0800141 depends on MMU
Alexandre Ghiti9e953cd2019-05-26 08:50:38 -0400142 def_bool y
143
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700144config STACKTRACE_SUPPORT
145 def_bool y
146
Alan Kao10626c32017-12-18 17:52:48 +0800147config TRACE_IRQFLAGS_SUPPORT
148 def_bool y
149
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700150config GENERIC_BUG
151 def_bool y
152 depends on BUG
153 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
154
155config GENERIC_BUG_RELATIVE_POINTERS
156 bool
157
158config GENERIC_CALIBRATE_DELAY
159 def_bool y
160
161config GENERIC_CSUM
162 def_bool y
163
164config GENERIC_HWEIGHT
165 def_bool y
166
Anup Patelf2c17aa2019-01-07 20:57:01 +0530167config FIX_EARLYCON_MEM
Andreas Schwab0312a3d2019-12-17 12:15:16 +0100168 def_bool MMU
Anup Patelf2c17aa2019-01-07 20:57:01 +0530169
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700170config PGTABLE_LEVELS
171 int
172 default 3 if 64BIT
173 default 2
174
Loys Ollivier0cbb8a32019-06-17 21:29:48 +0200175source "arch/riscv/Kconfig.socs"
176
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700177menu "Platform type"
178
179choice
180 prompt "Base ISA"
181 default ARCH_RV64I
182 help
Antony Pavlov86cca812019-01-08 22:45:57 +0300183 This selects the base ISA that this kernel will target and must match
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700184 the target platform.
185
186config ARCH_RV32I
187 bool "RV32I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700188 select 32BIT
Matt Redfearne3d59802018-04-11 08:50:17 +0100189 select GENERIC_LIB_ASHLDI3
190 select GENERIC_LIB_ASHRDI3
191 select GENERIC_LIB_LSHRDI3
Zong Li8f791252018-06-25 16:49:38 +0800192 select GENERIC_LIB_UCMPDI2
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100193 select MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700194
195config ARCH_RV64I
196 bool "RV64I"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700197 select 64BIT
Ard Biesheuvelc12d3362019-11-08 13:22:27 +0100198 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100199 select HAVE_DYNAMIC_FTRACE if MMU
200 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
Palmer Dabbelte8c7ef72020-06-04 13:55:14 -0700201 select HAVE_FTRACE_MCOUNT_RECORD
202 select HAVE_FUNCTION_GRAPH_TRACER
203 select HAVE_FUNCTION_TRACER
Christoph Hellwig6bd33e12019-10-28 13:10:41 +0100204 select SWIOTLB if MMU
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700205
206endchoice
207
208# We must be able to map all physical memory into the kernel, but the compiler
209# is still a bit more efficient when generating code if it's setup in a manner
210# such that it can only map 2GiB of memory.
211choice
212 prompt "Kernel Code Model"
213 default CMODEL_MEDLOW if 32BIT
214 default CMODEL_MEDANY if 64BIT
215
216 config CMODEL_MEDLOW
217 bool "medium low code model"
218 config CMODEL_MEDANY
219 bool "medium any code model"
220endchoice
221
Zong Liab1ef682018-03-15 16:50:41 +0800222config MODULE_SECTIONS
223 bool
224 select HAVE_MOD_ARCH_SPECIFIC
225
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700226choice
227 prompt "Maximum Physical Memory"
228 default MAXPHYSMEM_2GB if 32BIT
229 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
230 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
231
232 config MAXPHYSMEM_2GB
233 bool "2GiB"
234 config MAXPHYSMEM_128GB
235 depends on 64BIT && CMODEL_MEDANY
236 bool "128GiB"
237endchoice
238
239
240config SMP
241 bool "Symmetric Multi-Processing"
242 help
243 This enables support for systems with more than one CPU. If
244 you say N here, the kernel will run on single and
245 multiprocessor machines, but will use only one CPU of a
246 multiprocessor machine. If you say Y here, the kernel will run
247 on many, but not all, single processor machines. On a single
248 processor machine, the kernel will run faster if you say N
249 here.
250
251 If you don't know what to do here, say N.
252
253config NR_CPUS
254 int "Maximum number of CPUs (2-32)"
255 range 2 32
256 depends on SMP
257 default "8"
258
Atish Patraf1e58582020-03-17 18:11:44 -0700259config HOTPLUG_CPU
260 bool "Support for hot-pluggable CPUs"
261 depends on SMP
262 select GENERIC_IRQ_MIGRATION
263 help
264
265 Say Y here to experiment with turning CPUs off and on. CPUs
266 can be controlled through /sys/devices/system/cpu.
267
268 Say N if you want to disable CPU hotplug.
269
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700270choice
271 prompt "CPU Tuning"
272 default TUNE_GENERIC
273
274config TUNE_GENERIC
275 bool "generic"
276
277endchoice
278
279config RISCV_ISA_C
280 bool "Emit compressed instructions when building Linux"
281 default y
282 help
283 Adds "C" to the ISA subsets that the toolchain is allowed to emit
284 when building Linux, which results in compressed instructions in the
285 Linux binary.
286
287 If you don't know what to do here, say Y.
288
Alan Kao178e9fc2018-04-20 07:27:49 +0800289menu "supported PMU type"
290 depends on PERF_EVENTS
291
292config RISCV_BASE_PMU
293 bool "Base Performance Monitoring Unit"
294 def_bool y
295 help
296 A base PMU that serves as a reference implementation and has limited
297 feature of perf. It can run on any RISC-V machines so serves as the
298 fallback, but this option can also be disable to reduce kernel size.
299
300endmenu
301
Alan Kao9671f702018-10-09 10:18:33 +0800302config FPU
303 bool "FPU support"
304 default y
305 help
306 Say N here if you want to disable all floating-point related procedure
307 in the kernel.
308
309 If you don't know what to do here, say Y.
310
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700311endmenu
312
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300313menu "Kernel features"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700314
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700315source "kernel/Kconfig.hz"
316
David Abdurachmanov53406272019-10-04 17:12:22 -0700317config SECCOMP
318 bool "Enable seccomp to safely compute untrusted bytecode"
319 help
320 This kernel feature is useful for number crunching applications
321 that may need to compute untrusted bytecode during their
322 execution. By using pipes or other transports made available to
323 the process as file descriptors supporting the read/write
324 syscalls, it's possible to isolate those applications in
325 their own address space using seccomp. Once seccomp is
326 enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
327 and the task is only allowed to execute a few safe syscalls
328 defined by each seccomp mode.
329
Atish Patraefca1392020-03-17 18:11:37 -0700330config RISCV_SBI_V01
331 bool "SBI v0.1 support"
332 default y
333 depends on RISCV_SBI
334 help
335 This config allows kernel to use SBI v0.1 APIs. This will be
336 deprecated in future once legacy M-mode software are no longer in use.
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700337endmenu
338
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300339menu "Boot options"
340
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300341config CMDLINE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200342 string "Built-in kernel command line"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300343 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200344 For most platforms, the arguments for the kernel's command line
345 are provided at run-time, during boot. However, there are cases
346 where either no arguments are being provided or the provided
347 arguments are insufficient or even invalid.
348
349 When that occurs, it is possible to define a built-in command
350 line here and choose how the kernel should use it later on.
351
352choice
353 prompt "Built-in command line usage" if CMDLINE != ""
354 default CMDLINE_FALLBACK
355 help
356 Choose how the kernel will handle the provided built-in command
357 line.
358
359config CMDLINE_FALLBACK
360 bool "Use bootloader kernel arguments if available"
361 help
362 Use the built-in command line as fallback in case we get nothing
363 during boot. This is the default behaviour.
364
365config CMDLINE_EXTEND
366 bool "Extend bootloader kernel arguments"
367 help
368 The command-line arguments provided during boot will be
369 appended to the built-in command line. This is useful in
370 cases where the provided arguments are insufficient and
371 you don't want to or cannot modify them.
372
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300373
374config CMDLINE_FORCE
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200375 bool "Always use the default kernel command string"
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300376 help
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200377 Always use the built-in command line, even if we get one during
378 boot. This is useful in case you need to override the provided
379 command line on systems where you don't have or want control
380 over it.
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300381
Nick Kossifidis3aed8c42018-11-18 02:06:56 +0200382endchoice
Nick Kossifidisaef53f92018-09-20 01:48:15 +0300383
384endmenu
385
Palmer Dabbelt2d268252020-04-14 13:43:24 +0900386config BUILTIN_DTB
387 def_bool n
388 depends on RISCV_M_MODE
389 depends on OF
390
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700391menu "Power management options"
392
Masahiro Yamada8636a1f2018-12-11 20:01:04 +0900393source "kernel/power/Kconfig"
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -0700394
395endmenu