Merge tag 'riscv-for-linus-4.21-mw1' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-block.git] / arch / riscv / Kconfig
CommitLineData
fbe934d6
PD
1#
2# For a description of the syntax of this configuration file,
3# see Documentation/kbuild/kconfig-language.txt.
4#
5
c3e4ed01
CH
6config 64BIT
7 bool
8
9config 32BIT
10 bool
11
fbe934d6
PD
12config RISCV
13 def_bool y
d4a451d5
CH
14 # even on 32-bit, physical (and DMA) addresses are > 32-bits
15 select PHYS_ADDR_T_64BIT
fbe934d6
PD
16 select OF
17 select OF_EARLY_FLATTREE
18 select OF_IRQ
fbe934d6
PD
19 select ARCH_WANT_FRAME_POINTERS
20 select CLONE_BACKWARDS
21 select COMMON_CLK
86e11757 22 select DMA_DIRECT_OPS
fbe934d6
PD
23 select GENERIC_CLOCKEVENTS
24 select GENERIC_CPU_DEVICES
25 select GENERIC_IRQ_SHOW
26 select GENERIC_PCI_IOMAP
9b9afe4a 27 select GENERIC_SCHED_CLOCK
fbe934d6
PD
28 select GENERIC_STRNCPY_FROM_USER
29 select GENERIC_STRNLEN_USER
30 select GENERIC_SMP_IDLE_THREAD
31 select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A
5ec9c4ff 32 select HAVE_MEMBLOCK_NODE_MAP
fbe934d6 33 select HAVE_DMA_CONTIGUOUS
b90edb33 34 select HAVE_FUTEX_CMPXCHG if FUTEX
fbe934d6 35 select HAVE_GENERIC_DMA_COHERENT
178e9fc4 36 select HAVE_PERF_EVENTS
fbe934d6 37 select IRQ_DOMAIN
fbe934d6
PD
38 select RISCV_ISA_A if SMP
39 select SPARSE_IRQ
40 select SYSCTL_EXCEPTION_TRACE
41 select HAVE_ARCH_TRACEHOOK
42 select MODULES_USE_ELF_RELA if MODULES
43 select THREAD_INFO_IN_TASK
fbe934d6 44 select RISCV_TIMER
cc6c9848 45 select GENERIC_IRQ_MULTI_HANDLER
3010a5ea 46 select ARCH_HAS_PTE_SPECIAL
fbe934d6
PD
47
48config MMU
49 def_bool y
50
5ec9c4ff
CH
51config ZONE_DMA32
52 bool
f1306f04 53 default y if 64BIT
5ec9c4ff 54
fbe934d6
PD
55config PAGE_OFFSET
56 hex
57 default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
58 default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
59 default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
60
61config STACKTRACE_SUPPORT
62 def_bool y
63
10626c32
AK
64config TRACE_IRQFLAGS_SUPPORT
65 def_bool y
66
fbe934d6
PD
67config RWSEM_GENERIC_SPINLOCK
68 def_bool y
69
70config GENERIC_BUG
71 def_bool y
72 depends on BUG
73 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
74
75config GENERIC_BUG_RELATIVE_POINTERS
76 bool
77
78config GENERIC_CALIBRATE_DELAY
79 def_bool y
80
81config GENERIC_CSUM
82 def_bool y
83
84config GENERIC_HWEIGHT
85 def_bool y
86
87config PGTABLE_LEVELS
88 int
89 default 3 if 64BIT
90 default 2
91
92config HAVE_KPROBES
93 def_bool n
94
fbe934d6
PD
95menu "Platform type"
96
97choice
98 prompt "Base ISA"
99 default ARCH_RV64I
100 help
101 This selects the base ISA that this kernel will traget and must match
102 the target platform.
103
104config ARCH_RV32I
105 bool "RV32I"
fbe934d6 106 select 32BIT
e3d59805
MR
107 select GENERIC_LIB_ASHLDI3
108 select GENERIC_LIB_ASHRDI3
109 select GENERIC_LIB_LSHRDI3
8f79125d 110 select GENERIC_LIB_UCMPDI2
fbe934d6
PD
111
112config ARCH_RV64I
113 bool "RV64I"
fbe934d6 114 select 64BIT
ee592884 115 select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000
10626c32
AK
116 select HAVE_FUNCTION_TRACER
117 select HAVE_FUNCTION_GRAPH_TRACER
a1d2a6b4 118 select HAVE_FTRACE_MCOUNT_RECORD
c15ac4fd 119 select HAVE_DYNAMIC_FTRACE
aea4c671 120 select HAVE_DYNAMIC_FTRACE_WITH_REGS
10314e09 121 select SWIOTLB
fbe934d6
PD
122
123endchoice
124
125# We must be able to map all physical memory into the kernel, but the compiler
126# is still a bit more efficient when generating code if it's setup in a manner
127# such that it can only map 2GiB of memory.
128choice
129 prompt "Kernel Code Model"
130 default CMODEL_MEDLOW if 32BIT
131 default CMODEL_MEDANY if 64BIT
132
133 config CMODEL_MEDLOW
134 bool "medium low code model"
135 config CMODEL_MEDANY
136 bool "medium any code model"
137endchoice
138
ab1ef68e
ZL
139config MODULE_SECTIONS
140 bool
141 select HAVE_MOD_ARCH_SPECIFIC
142
fbe934d6
PD
143choice
144 prompt "Maximum Physical Memory"
145 default MAXPHYSMEM_2GB if 32BIT
146 default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
147 default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
148
149 config MAXPHYSMEM_2GB
150 bool "2GiB"
151 config MAXPHYSMEM_128GB
152 depends on 64BIT && CMODEL_MEDANY
ab1ef68e 153 select MODULE_SECTIONS if MODULES
fbe934d6
PD
154 bool "128GiB"
155endchoice
156
157
158config SMP
159 bool "Symmetric Multi-Processing"
160 help
161 This enables support for systems with more than one CPU. If
162 you say N here, the kernel will run on single and
163 multiprocessor machines, but will use only one CPU of a
164 multiprocessor machine. If you say Y here, the kernel will run
165 on many, but not all, single processor machines. On a single
166 processor machine, the kernel will run faster if you say N
167 here.
168
169 If you don't know what to do here, say N.
170
171config NR_CPUS
172 int "Maximum number of CPUs (2-32)"
173 range 2 32
174 depends on SMP
175 default "8"
176
fbe934d6
PD
177choice
178 prompt "CPU Tuning"
179 default TUNE_GENERIC
180
181config TUNE_GENERIC
182 bool "generic"
183
184endchoice
185
186config RISCV_ISA_C
187 bool "Emit compressed instructions when building Linux"
188 default y
189 help
190 Adds "C" to the ISA subsets that the toolchain is allowed to emit
191 when building Linux, which results in compressed instructions in the
192 Linux binary.
193
194 If you don't know what to do here, say Y.
195
196config RISCV_ISA_A
197 def_bool y
198
178e9fc4
AK
199menu "supported PMU type"
200 depends on PERF_EVENTS
201
202config RISCV_BASE_PMU
203 bool "Base Performance Monitoring Unit"
204 def_bool y
205 help
206 A base PMU that serves as a reference implementation and has limited
207 feature of perf. It can run on any RISC-V machines so serves as the
208 fallback, but this option can also be disable to reduce kernel size.
209
210endmenu
211
9671f706
AK
212config FPU
213 bool "FPU support"
214 default y
215 help
216 Say N here if you want to disable all floating-point related procedure
217 in the kernel.
218
219 If you don't know what to do here, say Y.
220
fbe934d6
PD
221endmenu
222
aef53f97 223menu "Kernel features"
fbe934d6 224
fbe934d6
PD
225source "kernel/Kconfig.hz"
226
227endmenu
228
aef53f97
NK
229menu "Boot options"
230
3aed8c43
NK
231config CMDLINE
232 string "Built-in kernel command line"
aef53f97 233 help
3aed8c43
NK
234 For most platforms, the arguments for the kernel's command line
235 are provided at run-time, during boot. However, there are cases
236 where either no arguments are being provided or the provided
237 arguments are insufficient or even invalid.
aef53f97 238
3aed8c43
NK
239 When that occurs, it is possible to define a built-in command
240 line here and choose how the kernel should use it later on.
aef53f97 241
3aed8c43
NK
242choice
243 prompt "Built-in command line usage" if CMDLINE != ""
244 default CMDLINE_FALLBACK
245 help
246 Choose how the kernel will handle the provided built-in command
247 line.
aef53f97 248
3aed8c43
NK
249config CMDLINE_FALLBACK
250 bool "Use bootloader kernel arguments if available"
aef53f97 251 help
3aed8c43
NK
252 Use the built-in command line as fallback in case we get nothing
253 during boot. This is the default behaviour.
254
255config CMDLINE_EXTEND
256 bool "Extend bootloader kernel arguments"
257 help
258 The command-line arguments provided during boot will be
259 appended to the built-in command line. This is useful in
260 cases where the provided arguments are insufficient and
261 you don't want to or cannot modify them.
262
aef53f97
NK
263
264config CMDLINE_FORCE
3aed8c43 265 bool "Always use the default kernel command string"
aef53f97 266 help
3aed8c43
NK
267 Always use the built-in command line, even if we get one during
268 boot. This is useful in case you need to override the provided
269 command line on systems where you don't have or want control
270 over it.
aef53f97 271
3aed8c43 272endchoice
aef53f97
NK
273
274endmenu
275
fbe934d6
PD
276menu "Bus support"
277
278config PCI
279 bool "PCI support"
280 select PCI_MSI
281 help
282 This feature enables support for PCI bus system. If you say Y
283 here, the kernel will include drivers and infrastructure code
284 to support PCI bus devices.
285
286 If you don't know what to do here, say Y.
287
288config PCI_DOMAINS
289 def_bool PCI
290
291config PCI_DOMAINS_GENERIC
292 def_bool PCI
293
294source "drivers/pci/Kconfig"
295
296endmenu
297
fbe934d6
PD
298menu "Power management options"
299
300source kernel/power/Kconfig
301
302endmenu