OSDN Git Service

b85492c42ccb8f0b785b4e8e26711b9ffed4475e
[tomoyo/tomoyo-test1.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         # even on 32-bit, physical (and DMA) addresses are > 32-bits
16         select PHYS_ADDR_T_64BIT
17         select OF
18         select OF_EARLY_FLATTREE
19         select OF_IRQ
20         select ARCH_HAS_BINFMT_FLAT
21         select ARCH_WANT_FRAME_POINTERS
22         select CLONE_BACKWARDS
23         select COMMON_CLK
24         select GENERIC_CLOCKEVENTS
25         select GENERIC_CPU_DEVICES
26         select GENERIC_IRQ_SHOW
27         select GENERIC_PCI_IOMAP
28         select GENERIC_SCHED_CLOCK
29         select GENERIC_STRNCPY_FROM_USER
30         select GENERIC_STRNLEN_USER
31         select GENERIC_SMP_IDLE_THREAD
32         select GENERIC_ATOMIC64 if !64BIT
33         select HAVE_ARCH_AUDITSYSCALL
34         select HAVE_ASM_MODVERSIONS
35         select HAVE_MEMBLOCK_NODE_MAP
36         select HAVE_DMA_CONTIGUOUS
37         select HAVE_FUTEX_CMPXCHG if FUTEX
38         select HAVE_PERF_EVENTS
39         select HAVE_PERF_REGS
40         select HAVE_PERF_USER_STACK_DUMP
41         select HAVE_SYSCALL_TRACEPOINTS
42         select IRQ_DOMAIN
43         select SPARSE_IRQ
44         select SYSCTL_EXCEPTION_TRACE
45         select HAVE_ARCH_TRACEHOOK
46         select HAVE_PCI
47         select MODULES_USE_ELF_RELA if MODULES
48         select MODULE_SECTIONS if MODULES
49         select THREAD_INFO_IN_TASK
50         select PCI_DOMAINS_GENERIC if PCI
51         select PCI_MSI if PCI
52         select RISCV_TIMER
53         select GENERIC_IRQ_MULTI_HANDLER
54         select GENERIC_ARCH_TOPOLOGY if SMP
55         select ARCH_HAS_PTE_SPECIAL
56         select ARCH_HAS_MMIOWB
57         select HAVE_EBPF_JIT if 64BIT
58         select EDAC_SUPPORT
59         select ARCH_HAS_GIGANTIC_PAGE
60         select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
61         select SPARSEMEM_STATIC if 32BIT
62         select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
63         select HAVE_ARCH_MMAP_RND_BITS
64
65 config ARCH_MMAP_RND_BITS_MIN
66         default 18 if 64BIT
67         default 8
68
69 # max bits determined by the following formula:
70 #  VA_BITS - PAGE_SHIFT - 3
71 config ARCH_MMAP_RND_BITS_MAX
72         default 24 if 64BIT # SV39 based
73         default 17
74
75 # set if we run in machine mode, cleared if we run in supervisor mode
76 config RISCV_M_MODE
77         bool
78
79 # set if we are running in S-mode and can use SBI calls
80 config RISCV_SBI
81         bool
82         depends on !RISCV_M_MODE
83         default y
84
85 config MMU
86         def_bool y
87
88 config ZONE_DMA32
89         bool
90         default y if 64BIT
91
92 config VA_BITS
93         int
94         default 32 if 32BIT
95         default 39 if 64BIT
96
97 config PA_BITS
98         int
99         default 34 if 32BIT
100         default 56 if 64BIT
101
102 config PAGE_OFFSET
103         hex
104         default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
105         default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
106         default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
107
108 config ARCH_FLATMEM_ENABLE
109         def_bool y
110
111 config ARCH_SPARSEMEM_ENABLE
112         def_bool y
113         select SPARSEMEM_VMEMMAP_ENABLE
114
115 config ARCH_SELECT_MEMORY_MODEL
116         def_bool ARCH_SPARSEMEM_ENABLE
117
118 config ARCH_WANT_GENERAL_HUGETLB
119         def_bool y
120
121 config SYS_SUPPORTS_HUGETLBFS
122         def_bool y
123
124 config STACKTRACE_SUPPORT
125         def_bool y
126
127 config TRACE_IRQFLAGS_SUPPORT
128         def_bool y
129
130 config GENERIC_BUG
131         def_bool y
132         depends on BUG
133         select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
134
135 config GENERIC_BUG_RELATIVE_POINTERS
136         bool
137
138 config GENERIC_CALIBRATE_DELAY
139         def_bool y
140
141 config GENERIC_CSUM
142         def_bool y
143
144 config GENERIC_HWEIGHT
145         def_bool y
146
147 config FIX_EARLYCON_MEM
148         def_bool y
149
150 config PGTABLE_LEVELS
151         int
152         default 3 if 64BIT
153         default 2
154
155 source "arch/riscv/Kconfig.socs"
156
157 menu "Platform type"
158
159 choice
160         prompt "Base ISA"
161         default ARCH_RV64I
162         help
163           This selects the base ISA that this kernel will target and must match
164           the target platform.
165
166 config ARCH_RV32I
167         bool "RV32I"
168         select 32BIT
169         select GENERIC_LIB_ASHLDI3
170         select GENERIC_LIB_ASHRDI3
171         select GENERIC_LIB_LSHRDI3
172         select GENERIC_LIB_UCMPDI2
173
174 config ARCH_RV64I
175         bool "RV64I"
176         select 64BIT
177         select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000
178         select HAVE_FUNCTION_TRACER
179         select HAVE_FUNCTION_GRAPH_TRACER
180         select HAVE_FTRACE_MCOUNT_RECORD
181         select HAVE_DYNAMIC_FTRACE
182         select HAVE_DYNAMIC_FTRACE_WITH_REGS
183         select SWIOTLB
184
185 endchoice
186
187 # We must be able to map all physical memory into the kernel, but the compiler
188 # is still a bit more efficient when generating code if it's setup in a manner
189 # such that it can only map 2GiB of memory.
190 choice
191         prompt "Kernel Code Model"
192         default CMODEL_MEDLOW if 32BIT
193         default CMODEL_MEDANY if 64BIT
194
195         config CMODEL_MEDLOW
196                 bool "medium low code model"
197         config CMODEL_MEDANY
198                 bool "medium any code model"
199 endchoice
200
201 config MODULE_SECTIONS
202         bool
203         select HAVE_MOD_ARCH_SPECIFIC
204
205 choice
206         prompt "Maximum Physical Memory"
207         default MAXPHYSMEM_2GB if 32BIT
208         default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
209         default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
210
211         config MAXPHYSMEM_2GB
212                 bool "2GiB"
213         config MAXPHYSMEM_128GB
214                 depends on 64BIT && CMODEL_MEDANY
215                 bool "128GiB"
216 endchoice
217
218
219 config SMP
220         bool "Symmetric Multi-Processing"
221         help
222           This enables support for systems with more than one CPU.  If
223           you say N here, the kernel will run on single and
224           multiprocessor machines, but will use only one CPU of a
225           multiprocessor machine. If you say Y here, the kernel will run
226           on many, but not all, single processor machines. On a single
227           processor machine, the kernel will run faster if you say N
228           here.
229
230           If you don't know what to do here, say N.
231
232 config NR_CPUS
233         int "Maximum number of CPUs (2-32)"
234         range 2 32
235         depends on SMP
236         default "8"
237
238 choice
239         prompt "CPU Tuning"
240         default TUNE_GENERIC
241
242 config TUNE_GENERIC
243         bool "generic"
244
245 endchoice
246
247 config RISCV_ISA_C
248         bool "Emit compressed instructions when building Linux"
249         default y
250         help
251            Adds "C" to the ISA subsets that the toolchain is allowed to emit
252            when building Linux, which results in compressed instructions in the
253            Linux binary.
254
255            If you don't know what to do here, say Y.
256
257 menu "supported PMU type"
258         depends on PERF_EVENTS
259
260 config RISCV_BASE_PMU
261         bool "Base Performance Monitoring Unit"
262         def_bool y
263         help
264           A base PMU that serves as a reference implementation and has limited
265           feature of perf.  It can run on any RISC-V machines so serves as the
266           fallback, but this option can also be disable to reduce kernel size.
267
268 endmenu
269
270 config FPU
271         bool "FPU support"
272         default y
273         help
274           Say N here if you want to disable all floating-point related procedure
275           in the kernel.
276
277           If you don't know what to do here, say Y.
278
279 endmenu
280
281 menu "Kernel features"
282
283 source "kernel/Kconfig.hz"
284
285 endmenu
286
287 menu "Boot options"
288
289 config CMDLINE
290         string "Built-in kernel command line"
291         help
292           For most platforms, the arguments for the kernel's command line
293           are provided at run-time, during boot. However, there are cases
294           where either no arguments are being provided or the provided
295           arguments are insufficient or even invalid.
296
297           When that occurs, it is possible to define a built-in command
298           line here and choose how the kernel should use it later on.
299
300 choice
301         prompt "Built-in command line usage" if CMDLINE != ""
302         default CMDLINE_FALLBACK
303         help
304           Choose how the kernel will handle the provided built-in command
305           line.
306
307 config CMDLINE_FALLBACK
308         bool "Use bootloader kernel arguments if available"
309         help
310           Use the built-in command line as fallback in case we get nothing
311           during boot. This is the default behaviour.
312
313 config CMDLINE_EXTEND
314         bool "Extend bootloader kernel arguments"
315         help
316           The command-line arguments provided during boot will be
317           appended to the built-in command line. This is useful in
318           cases where the provided arguments are insufficient and
319           you don't want to or cannot modify them.
320
321
322 config CMDLINE_FORCE
323         bool "Always use the default kernel command string"
324         help
325           Always use the built-in command line, even if we get one during
326           boot. This is useful in case you need to override the provided
327           command line on systems where you don't have or want control
328           over it.
329
330 endchoice
331
332 endmenu
333
334 menu "Power management options"
335
336 source "kernel/power/Kconfig"
337
338 endmenu