riscv: Add HAVE_IRQ_TIME_ACCOUNTING
[linux-2.6-microblaze.git] / arch / riscv / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # For a description of the syntax of this configuration file,
4 # see Documentation/kbuild/kconfig-language.rst.
5 #
6
7 config 64BIT
8         bool
9
10 config 32BIT
11         bool
12
13 config RISCV
14         def_bool y
15         select ARCH_CLOCKSOURCE_INIT
16         select ARCH_SUPPORTS_ATOMIC_RMW
17         select ARCH_HAS_BINFMT_FLAT
18         select ARCH_HAS_DEBUG_VM_PGTABLE
19         select ARCH_HAS_DEBUG_VIRTUAL if MMU
20         select ARCH_HAS_DEBUG_WX
21         select ARCH_HAS_GCOV_PROFILE_ALL
22         select ARCH_HAS_GIGANTIC_PAGE
23         select ARCH_HAS_KCOV
24         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
29         select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
30         select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
31         select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
32         select ARCH_WANT_FRAME_POINTERS
33         select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
34         select CLONE_BACKWARDS
35         select CLINT_TIMER if !MMU
36         select COMMON_CLK
37         select EDAC_SUPPORT
38         select GENERIC_ARCH_TOPOLOGY if SMP
39         select GENERIC_ATOMIC64 if !64BIT
40         select GENERIC_CLOCKEVENTS
41         select GENERIC_EARLY_IOREMAP
42         select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
43         select GENERIC_IOREMAP
44         select GENERIC_IRQ_MULTI_HANDLER
45         select GENERIC_IRQ_SHOW
46         select GENERIC_PCI_IOMAP
47         select GENERIC_PTDUMP if MMU
48         select GENERIC_SCHED_CLOCK
49         select GENERIC_SMP_IDLE_THREAD
50         select GENERIC_STRNCPY_FROM_USER if MMU
51         select GENERIC_STRNLEN_USER if MMU
52         select GENERIC_TIME_VSYSCALL if MMU && 64BIT
53         select HANDLE_DOMAIN_IRQ
54         select HAVE_ARCH_AUDITSYSCALL
55         select HAVE_ARCH_JUMP_LABEL
56         select HAVE_ARCH_JUMP_LABEL_RELATIVE
57         select HAVE_ARCH_KASAN if MMU && 64BIT
58         select HAVE_ARCH_KGDB
59         select HAVE_ARCH_KGDB_QXFER_PKT
60         select HAVE_ARCH_MMAP_RND_BITS if MMU
61         select HAVE_ARCH_SECCOMP_FILTER
62         select HAVE_ARCH_TRACEHOOK
63         select HAVE_ASM_MODVERSIONS
64         select HAVE_CONTEXT_TRACKING
65         select HAVE_DEBUG_KMEMLEAK
66         select HAVE_DMA_CONTIGUOUS if MMU
67         select HAVE_EBPF_JIT if MMU
68         select HAVE_FUTEX_CMPXCHG if FUTEX
69         select HAVE_GCC_PLUGINS
70         select HAVE_GENERIC_VDSO if MMU && 64BIT
71         select HAVE_IRQ_TIME_ACCOUNTING
72         select HAVE_PCI
73         select HAVE_PERF_EVENTS
74         select HAVE_PERF_REGS
75         select HAVE_PERF_USER_STACK_DUMP
76         select HAVE_STACKPROTECTOR
77         select HAVE_SYSCALL_TRACEPOINTS
78         select IRQ_DOMAIN
79         select MODULES_USE_ELF_RELA if MODULES
80         select MODULE_SECTIONS if MODULES
81         select OF
82         select OF_EARLY_FLATTREE
83         select OF_IRQ
84         select PCI_DOMAINS_GENERIC if PCI
85         select PCI_MSI if PCI
86         select RISCV_INTC
87         select RISCV_TIMER if RISCV_SBI
88         select SPARSEMEM_STATIC if 32BIT
89         select SPARSE_IRQ
90         select SYSCTL_EXCEPTION_TRACE
91         select THREAD_INFO_IN_TASK
92         select UACCESS_MEMCPY if !MMU
93
94 config 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
100 config ARCH_MMAP_RND_BITS_MAX
101         default 24 if 64BIT # SV39 based
102         default 17
103
104 # set if we run in machine mode, cleared if we run in supervisor mode
105 config RISCV_M_MODE
106         bool
107         default !MMU
108
109 # set if we are running in S-mode and can use SBI calls
110 config RISCV_SBI
111         bool
112         depends on !RISCV_M_MODE
113         default y
114
115 config MMU
116         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'.
121
122 config ZONE_DMA32
123         bool
124         default y if 64BIT
125
126 config VA_BITS
127         int
128         default 32 if 32BIT
129         default 39 if 64BIT
130
131 config PA_BITS
132         int
133         default 34 if 32BIT
134         default 56 if 64BIT
135
136 config PAGE_OFFSET
137         hex
138         default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
139         default 0x80000000 if 64BIT && !MMU
140         default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
141         default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
142
143 config ARCH_FLATMEM_ENABLE
144         def_bool y
145
146 config ARCH_SPARSEMEM_ENABLE
147         def_bool y
148         depends on MMU
149         select SPARSEMEM_VMEMMAP_ENABLE
150
151 config ARCH_SELECT_MEMORY_MODEL
152         def_bool ARCH_SPARSEMEM_ENABLE
153
154 config ARCH_WANT_GENERAL_HUGETLB
155         def_bool y
156
157 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
158         def_bool y
159
160 config SYS_SUPPORTS_HUGETLBFS
161         depends on MMU
162         def_bool y
163
164 config STACKTRACE_SUPPORT
165         def_bool y
166
167 config TRACE_IRQFLAGS_SUPPORT
168         def_bool y
169
170 config GENERIC_BUG
171         def_bool y
172         depends on BUG
173         select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
174
175 config GENERIC_BUG_RELATIVE_POINTERS
176         bool
177
178 config GENERIC_CALIBRATE_DELAY
179         def_bool y
180
181 config GENERIC_CSUM
182         def_bool y
183
184 config GENERIC_HWEIGHT
185         def_bool y
186
187 config FIX_EARLYCON_MEM
188         def_bool MMU
189
190 config PGTABLE_LEVELS
191         int
192         default 3 if 64BIT
193         default 2
194
195 config LOCKDEP_SUPPORT
196         def_bool y
197
198 source "arch/riscv/Kconfig.socs"
199
200 menu "Platform type"
201
202 choice
203         prompt "Base ISA"
204         default ARCH_RV64I
205         help
206           This selects the base ISA that this kernel will target and must match
207           the target platform.
208
209 config ARCH_RV32I
210         bool "RV32I"
211         select 32BIT
212         select GENERIC_LIB_ASHLDI3
213         select GENERIC_LIB_ASHRDI3
214         select GENERIC_LIB_LSHRDI3
215         select GENERIC_LIB_UCMPDI2
216         select MMU
217
218 config ARCH_RV64I
219         bool "RV64I"
220         select 64BIT
221         select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
222         select HAVE_DYNAMIC_FTRACE if MMU
223         select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
224         select HAVE_FTRACE_MCOUNT_RECORD
225         select HAVE_FUNCTION_GRAPH_TRACER
226         select HAVE_FUNCTION_TRACER
227         select SWIOTLB if MMU
228
229 endchoice
230
231 # We must be able to map all physical memory into the kernel, but the compiler
232 # is still a bit more efficient when generating code if it's setup in a manner
233 # such that it can only map 2GiB of memory.
234 choice
235         prompt "Kernel Code Model"
236         default CMODEL_MEDLOW if 32BIT
237         default CMODEL_MEDANY if 64BIT
238
239         config CMODEL_MEDLOW
240                 bool "medium low code model"
241         config CMODEL_MEDANY
242                 bool "medium any code model"
243 endchoice
244
245 config MODULE_SECTIONS
246         bool
247         select HAVE_MOD_ARCH_SPECIFIC
248
249 choice
250         prompt "Maximum Physical Memory"
251         default MAXPHYSMEM_2GB if 32BIT
252         default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
253         default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
254
255         config MAXPHYSMEM_2GB
256                 bool "2GiB"
257         config MAXPHYSMEM_128GB
258                 depends on 64BIT && CMODEL_MEDANY
259                 bool "128GiB"
260 endchoice
261
262
263 config SMP
264         bool "Symmetric Multi-Processing"
265         help
266           This enables support for systems with more than one CPU.  If
267           you say N here, the kernel will run on single and
268           multiprocessor machines, but will use only one CPU of a
269           multiprocessor machine. If you say Y here, the kernel will run
270           on many, but not all, single processor machines. On a single
271           processor machine, the kernel will run faster if you say N
272           here.
273
274           If you don't know what to do here, say N.
275
276 config NR_CPUS
277         int "Maximum number of CPUs (2-32)"
278         range 2 32
279         depends on SMP
280         default "8"
281
282 config HOTPLUG_CPU
283         bool "Support for hot-pluggable CPUs"
284         depends on SMP
285         select GENERIC_IRQ_MIGRATION
286         help
287
288           Say Y here to experiment with turning CPUs off and on.  CPUs
289           can be controlled through /sys/devices/system/cpu.
290
291           Say N if you want to disable CPU hotplug.
292
293 choice
294         prompt "CPU Tuning"
295         default TUNE_GENERIC
296
297 config TUNE_GENERIC
298         bool "generic"
299
300 endchoice
301
302 config RISCV_ISA_C
303         bool "Emit compressed instructions when building Linux"
304         default y
305         help
306            Adds "C" to the ISA subsets that the toolchain is allowed to emit
307            when building Linux, which results in compressed instructions in the
308            Linux binary.
309
310            If you don't know what to do here, say Y.
311
312 menu "supported PMU type"
313         depends on PERF_EVENTS
314
315 config RISCV_BASE_PMU
316         bool "Base Performance Monitoring Unit"
317         def_bool y
318         help
319           A base PMU that serves as a reference implementation and has limited
320           feature of perf.  It can run on any RISC-V machines so serves as the
321           fallback, but this option can also be disable to reduce kernel size.
322
323 endmenu
324
325 config FPU
326         bool "FPU support"
327         default y
328         help
329           Say N here if you want to disable all floating-point related procedure
330           in the kernel.
331
332           If you don't know what to do here, say Y.
333
334 endmenu
335
336 menu "Kernel features"
337
338 source "kernel/Kconfig.hz"
339
340 config RISCV_SBI_V01
341         bool "SBI v0.1 support"
342         default y
343         depends on RISCV_SBI
344         help
345           This config allows kernel to use SBI v0.1 APIs. This will be
346           deprecated in future once legacy M-mode software are no longer in use.
347 endmenu
348
349 menu "Boot options"
350
351 config CMDLINE
352         string "Built-in kernel command line"
353         help
354           For most platforms, the arguments for the kernel's command line
355           are provided at run-time, during boot. However, there are cases
356           where either no arguments are being provided or the provided
357           arguments are insufficient or even invalid.
358
359           When that occurs, it is possible to define a built-in command
360           line here and choose how the kernel should use it later on.
361
362 choice
363         prompt "Built-in command line usage" if CMDLINE != ""
364         default CMDLINE_FALLBACK
365         help
366           Choose how the kernel will handle the provided built-in command
367           line.
368
369 config CMDLINE_FALLBACK
370         bool "Use bootloader kernel arguments if available"
371         help
372           Use the built-in command line as fallback in case we get nothing
373           during boot. This is the default behaviour.
374
375 config CMDLINE_EXTEND
376         bool "Extend bootloader kernel arguments"
377         help
378           The command-line arguments provided during boot will be
379           appended to the built-in command line. This is useful in
380           cases where the provided arguments are insufficient and
381           you don't want to or cannot modify them.
382
383
384 config CMDLINE_FORCE
385         bool "Always use the default kernel command string"
386         help
387           Always use the built-in command line, even if we get one during
388           boot. This is useful in case you need to override the provided
389           command line on systems where you don't have or want control
390           over it.
391
392 endchoice
393
394 config EFI_STUB
395         bool
396
397 config EFI
398         bool "UEFI runtime support"
399         depends on OF
400         select LIBFDT
401         select UCS2_STRING
402         select EFI_PARAMS_FROM_FDT
403         select EFI_STUB
404         select EFI_GENERIC_STUB
405         select EFI_RUNTIME_WRAPPERS
406         select RISCV_ISA_C
407         depends on MMU
408         default y
409         help
410           This option provides support for runtime services provided
411           by UEFI firmware (such as non-volatile variables, realtime
412           clock, and platform reset). A UEFI stub is also provided to
413           allow the kernel to be booted as an EFI application. This
414           is only useful on systems that have UEFI firmware.
415
416 endmenu
417
418 config BUILTIN_DTB
419         def_bool n
420         depends on RISCV_M_MODE
421         depends on OF
422
423 menu "Power management options"
424
425 source "kernel/power/Kconfig"
426
427 endmenu
428
429 source "drivers/firmware/Kconfig"