summaryrefslogtreecommitdiff
path: root/arch/riscv/Kconfig
blob: 51d89c4b1dca6d342ea881499664e9807a50f49a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#

config 64BIT
	bool

config 32BIT
	bool

config RISCV
	def_bool y
	# even on 32-bit, physical (and DMA) addresses are > 32-bits
	select PHYS_ADDR_T_64BIT
	select OF
	select OF_EARLY_FLATTREE
	select OF_IRQ
	select ARCH_WANT_FRAME_POINTERS
	select CLONE_BACKWARDS
	select COMMON_CLK
	select GENERIC_CLOCKEVENTS
	select GENERIC_CPU_DEVICES
	select GENERIC_IRQ_SHOW
	select GENERIC_PCI_IOMAP
	select GENERIC_STRNCPY_FROM_USER
	select GENERIC_STRNLEN_USER
	select GENERIC_SMP_IDLE_THREAD
	select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A
	select HAVE_MEMBLOCK_NODE_MAP
	select HAVE_DMA_CONTIGUOUS
	select HAVE_FUTEX_CMPXCHG if FUTEX
	select HAVE_GENERIC_DMA_COHERENT
	select HAVE_PERF_EVENTS
	select IRQ_DOMAIN
	select RISCV_ISA_A if SMP
	select SPARSE_IRQ
	select SYSCTL_EXCEPTION_TRACE
	select HAVE_ARCH_TRACEHOOK
	select MODULES_USE_ELF_RELA if MODULES
	select THREAD_INFO_IN_TASK
	select RISCV_TIMER
	select GENERIC_IRQ_MULTI_HANDLER
	select ARCH_HAS_PTE_SPECIAL

config MMU
	def_bool y

config ZONE_DMA32
	bool
	default y if 64BIT

config PAGE_OFFSET
	hex
	default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
	default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
	default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB

config STACKTRACE_SUPPORT
	def_bool y

config TRACE_IRQFLAGS_SUPPORT
	def_bool y

config RWSEM_GENERIC_SPINLOCK
	def_bool y

config GENERIC_BUG
	def_bool y
	depends on BUG
	select GENERIC_BUG_RELATIVE_POINTERS if 64BIT

config GENERIC_BUG_RELATIVE_POINTERS
	bool

config GENERIC_CALIBRATE_DELAY
	def_bool y

config GENERIC_CSUM
	def_bool y

config GENERIC_HWEIGHT
	def_bool y

config PGTABLE_LEVELS
	int
	default 3 if 64BIT
	default 2

config HAVE_KPROBES
	def_bool n

menu "Platform type"

choice
	prompt "Base ISA"
	default ARCH_RV64I
	help
	  This selects the base ISA that this kernel will traget and must match
	  the target platform.

config ARCH_RV32I
	bool "RV32I"
	select 32BIT
	select GENERIC_LIB_ASHLDI3
	select GENERIC_LIB_ASHRDI3
	select GENERIC_LIB_LSHRDI3
	select GENERIC_LIB_UCMPDI2

config ARCH_RV64I
	bool "RV64I"
	select 64BIT
	select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000
	select HAVE_FUNCTION_TRACER
	select HAVE_FUNCTION_GRAPH_TRACER
	select HAVE_FTRACE_MCOUNT_RECORD
	select HAVE_DYNAMIC_FTRACE
	select HAVE_DYNAMIC_FTRACE_WITH_REGS
	select SWIOTLB

endchoice

# We must be able to map all physical memory into the kernel, but the compiler
# is still a bit more efficient when generating code if it's setup in a manner
# such that it can only map 2GiB of memory.
choice
	prompt "Kernel Code Model"
	default CMODEL_MEDLOW if 32BIT
	default CMODEL_MEDANY if 64BIT

	config CMODEL_MEDLOW
		bool "medium low code model"
	config CMODEL_MEDANY
		bool "medium any code model"
endchoice

config MODULE_SECTIONS
	bool
	select HAVE_MOD_ARCH_SPECIFIC

choice
	prompt "Maximum Physical Memory"
	default MAXPHYSMEM_2GB if 32BIT
	default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
	default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY

	config MAXPHYSMEM_2GB
		bool "2GiB"
	config MAXPHYSMEM_128GB
		depends on 64BIT && CMODEL_MEDANY
		select MODULE_SECTIONS if MODULES
		bool "128GiB"
endchoice


config SMP
	bool "Symmetric Multi-Processing"
	help
	  This enables support for systems with more than one CPU.  If
	  you say N here, the kernel will run on single and
	  multiprocessor machines, but will use only one CPU of a
	  multiprocessor machine. If you say Y here, the kernel will run
	  on many, but not all, single processor machines. On a single
	  processor machine, the kernel will run faster if you say N
	  here.

	  If you don't know what to do here, say N.

config NR_CPUS
	int "Maximum number of CPUs (2-32)"
	range 2 32
	depends on SMP
	default "8"

choice
	prompt "CPU Tuning"
	default TUNE_GENERIC

config TUNE_GENERIC
	bool "generic"

endchoice

config RISCV_ISA_C
	bool "Emit compressed instructions when building Linux"
	default y
	help
	   Adds "C" to the ISA subsets that the toolchain is allowed to emit
	   when building Linux, which results in compressed instructions in the
	   Linux binary.

	   If you don't know what to do here, say Y.

config RISCV_ISA_A
	def_bool y

menu "supported PMU type"
	depends on PERF_EVENTS

config RISCV_BASE_PMU
	bool "Base Performance Monitoring Unit"
	def_bool y
	help
	  A base PMU that serves as a reference implementation and has limited
	  feature of perf.  It can run on any RISC-V machines so serves as the
	  fallback, but this option can also be disable to reduce kernel size.

endmenu

config FPU
	bool "FPU support"
	default y
	help
	  Say N here if you want to disable all floating-point related procedure
	  in the kernel.

	  If you don't know what to do here, say Y.

endmenu

menu "Kernel features"

source "kernel/Kconfig.hz"

endmenu

menu "Boot options"

config CMDLINE_BOOL
	bool "Built-in kernel command line"
	help
	  For most platforms, it is firmware or second stage bootloader
	  that by default specifies the kernel command line options.
	  However, it might be necessary or advantageous to either override
	  the default kernel command line or add a few extra options to it.
	  For such cases, this option allows hardcoding command line options
	  directly into the kernel.

	  For that, choose 'Y' here and fill in the extra boot parameters
	  in CONFIG_CMDLINE.

	  The built-in options will be concatenated to the default command
	  line if CMDLINE_FORCE is set to 'N'. Otherwise, the default
	  command line will be ignored and replaced by the built-in string.

config CMDLINE
	string "Built-in kernel command string"
	depends on CMDLINE_BOOL
	default ""
	help
	  Supply command-line options at build time by entering them here.

config CMDLINE_FORCE
	bool "Built-in command line overrides bootloader arguments"
	depends on CMDLINE_BOOL
	help
	  Set this option to 'Y' to have the kernel ignore the bootloader
	  or firmware command line.  Instead, the built-in command line
	  will be used exclusively.

	  If you don't know what to do here, say N.

endmenu

menu "Bus support"

config PCI
	bool "PCI support"
	select PCI_MSI
	help
	  This feature enables support for PCI bus system. If you say Y
	  here, the kernel will include drivers and infrastructure code
	  to support PCI bus devices.

	  If you don't know what to do here, say Y.

config PCI_DOMAINS
	def_bool PCI

config PCI_DOMAINS_GENERIC
	def_bool PCI

source "drivers/pci/Kconfig"

endmenu

menu "Power management options"

source kernel/power/Kconfig

endmenu