docs: rename Documentation/vm to Documentation/mm
[linux-2.6-microblaze.git] / arch / loongarch / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 config LOONGARCH
3         bool
4         default y
5         select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
6         select ARCH_BINFMT_ELF_STATE
7         select ARCH_ENABLE_MEMORY_HOTPLUG
8         select ARCH_ENABLE_MEMORY_HOTREMOVE
9         select ARCH_HAS_ACPI_TABLE_UPGRADE      if ACPI
10         select ARCH_HAS_PHYS_TO_DMA
11         select ARCH_HAS_PTE_SPECIAL
12         select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
13         select ARCH_INLINE_READ_LOCK if !PREEMPTION
14         select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION
15         select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION
16         select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION
17         select ARCH_INLINE_READ_UNLOCK if !PREEMPTION
18         select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION
19         select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION
20         select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION
21         select ARCH_INLINE_WRITE_LOCK if !PREEMPTION
22         select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION
23         select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION
24         select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION
25         select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION
26         select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION
27         select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION
28         select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION
29         select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION
30         select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION
31         select ARCH_INLINE_SPIN_LOCK if !PREEMPTION
32         select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION
33         select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION
34         select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION
35         select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION
36         select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION
37         select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION
38         select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION
39         select ARCH_MIGHT_HAVE_PC_PARPORT
40         select ARCH_MIGHT_HAVE_PC_SERIO
41         select ARCH_SPARSEMEM_ENABLE
42         select ARCH_SUPPORTS_ACPI
43         select ARCH_SUPPORTS_ATOMIC_RMW
44         select ARCH_SUPPORTS_HUGETLBFS
45         select ARCH_SUPPORTS_NUMA_BALANCING
46         select ARCH_USE_BUILTIN_BSWAP
47         select ARCH_USE_CMPXCHG_LOCKREF
48         select ARCH_USE_QUEUED_RWLOCKS
49         select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
50         select ARCH_WANTS_NO_INSTR
51         select BUILDTIME_TABLE_SORT
52         select COMMON_CLK
53         select GENERIC_CLOCKEVENTS
54         select GENERIC_CMOS_UPDATE
55         select GENERIC_CPU_AUTOPROBE
56         select GENERIC_ENTRY
57         select GENERIC_FIND_FIRST_BIT
58         select GENERIC_GETTIMEOFDAY
59         select GENERIC_IRQ_MULTI_HANDLER
60         select GENERIC_IRQ_PROBE
61         select GENERIC_IRQ_SHOW
62         select GENERIC_LIB_ASHLDI3
63         select GENERIC_LIB_ASHRDI3
64         select GENERIC_LIB_CMPDI2
65         select GENERIC_LIB_LSHRDI3
66         select GENERIC_LIB_UCMPDI2
67         select GENERIC_PCI_IOMAP
68         select GENERIC_SCHED_CLOCK
69         select GENERIC_SMP_IDLE_THREAD
70         select GENERIC_TIME_VSYSCALL
71         select GPIOLIB
72         select HAVE_ARCH_AUDITSYSCALL
73         select HAVE_ARCH_COMPILER_H
74         select HAVE_ARCH_MMAP_RND_BITS if MMU
75         select HAVE_ARCH_SECCOMP_FILTER
76         select HAVE_ARCH_TRACEHOOK
77         select HAVE_ARCH_TRANSPARENT_HUGEPAGE
78         select HAVE_ASM_MODVERSIONS
79         select HAVE_CONTEXT_TRACKING
80         select HAVE_COPY_THREAD_TLS
81         select HAVE_DEBUG_STACKOVERFLOW
82         select HAVE_DMA_CONTIGUOUS
83         select HAVE_EXIT_THREAD
84         select HAVE_FAST_GUP
85         select HAVE_GENERIC_VDSO
86         select HAVE_IOREMAP_PROT
87         select HAVE_IRQ_EXIT_ON_IRQ_STACK
88         select HAVE_IRQ_TIME_ACCOUNTING
89         select HAVE_MEMBLOCK
90         select HAVE_MEMBLOCK_NODE_MAP
91         select HAVE_MOD_ARCH_SPECIFIC
92         select HAVE_NMI
93         select HAVE_PERF_EVENTS
94         select HAVE_REGS_AND_STACK_ACCESS_API
95         select HAVE_RSEQ
96         select HAVE_SETUP_PER_CPU_AREA if NUMA
97         select HAVE_SYSCALL_TRACEPOINTS
98         select HAVE_TIF_NOHZ
99         select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP
100         select IRQ_FORCED_THREADING
101         select IRQ_LOONGARCH_CPU
102         select MODULES_USE_ELF_RELA if MODULES
103         select NEED_PER_CPU_EMBED_FIRST_CHUNK
104         select NEED_PER_CPU_PAGE_FIRST_CHUNK
105         select OF
106         select OF_EARLY_FLATTREE
107         select PERF_USE_VMALLOC
108         select RTC_LIB
109         select SPARSE_IRQ
110         select SYSCTL_EXCEPTION_TRACE
111         select SWIOTLB
112         select TRACE_IRQFLAGS_SUPPORT
113         select USE_PERCPU_NUMA_NODE_ID
114         select ZONE_DMA32
115
116 config 32BIT
117         bool
118
119 config 64BIT
120         def_bool y
121
122 config CPU_HAS_FPU
123         bool
124         default y
125
126 config CPU_HAS_PREFETCH
127         bool
128         default y
129
130 config GENERIC_CALIBRATE_DELAY
131         def_bool y
132
133 config GENERIC_CSUM
134         def_bool y
135
136 config GENERIC_HWEIGHT
137         def_bool y
138
139 config L1_CACHE_SHIFT
140         int
141         default "6"
142
143 config LOCKDEP_SUPPORT
144         bool
145         default y
146
147 # MACH_LOONGSON32 and MACH_LOONGSON64 are delibrately carried over from the
148 # MIPS Loongson code, to preserve Loongson-specific code paths in drivers that
149 # are shared between architectures, and specifically expecting the symbols.
150 config MACH_LOONGSON32
151         def_bool 32BIT
152
153 config MACH_LOONGSON64
154         def_bool 64BIT
155
156 config PAGE_SIZE_4KB
157         bool
158
159 config PAGE_SIZE_16KB
160         bool
161
162 config PAGE_SIZE_64KB
163         bool
164
165 config PGTABLE_2LEVEL
166         bool
167
168 config PGTABLE_3LEVEL
169         bool
170
171 config PGTABLE_4LEVEL
172         bool
173
174 config PGTABLE_LEVELS
175         int
176         default 2 if PGTABLE_2LEVEL
177         default 3 if PGTABLE_3LEVEL
178         default 4 if PGTABLE_4LEVEL
179
180 config SCHED_OMIT_FRAME_POINTER
181         bool
182         default y
183
184 menu "Kernel type and options"
185
186 source "kernel/Kconfig.hz"
187
188 choice
189         prompt "Page Table Layout"
190         default 16KB_2LEVEL if 32BIT
191         default 16KB_3LEVEL if 64BIT
192         help
193           Allows choosing the page table layout, which is a combination
194           of page size and page table levels. The size of virtual memory
195           address space are determined by the page table layout.
196
197 config 4KB_3LEVEL
198         bool "4KB with 3 levels"
199         select PAGE_SIZE_4KB
200         select PGTABLE_3LEVEL
201         help
202           This option selects 4KB page size with 3 level page tables, which
203           support a maximum of 39 bits of application virtual memory.
204
205 config 4KB_4LEVEL
206         bool "4KB with 4 levels"
207         select PAGE_SIZE_4KB
208         select PGTABLE_4LEVEL
209         help
210           This option selects 4KB page size with 4 level page tables, which
211           support a maximum of 48 bits of application virtual memory.
212
213 config 16KB_2LEVEL
214         bool "16KB with 2 levels"
215         select PAGE_SIZE_16KB
216         select PGTABLE_2LEVEL
217         help
218           This option selects 16KB page size with 2 level page tables, which
219           support a maximum of 36 bits of application virtual memory.
220
221 config 16KB_3LEVEL
222         bool "16KB with 3 levels"
223         select PAGE_SIZE_16KB
224         select PGTABLE_3LEVEL
225         help
226           This option selects 16KB page size with 3 level page tables, which
227           support a maximum of 47 bits of application virtual memory.
228
229 config 64KB_2LEVEL
230         bool "64KB with 2 levels"
231         select PAGE_SIZE_64KB
232         select PGTABLE_2LEVEL
233         help
234           This option selects 64KB page size with 2 level page tables, which
235           support a maximum of 42 bits of application virtual memory.
236
237 config 64KB_3LEVEL
238         bool "64KB with 3 levels"
239         select PAGE_SIZE_64KB
240         select PGTABLE_3LEVEL
241         help
242           This option selects 64KB page size with 3 level page tables, which
243           support a maximum of 55 bits of application virtual memory.
244
245 endchoice
246
247 config CMDLINE
248         string "Built-in kernel command line"
249         help
250           For most platforms, the arguments for the kernel's command line
251           are provided at run-time, during boot. However, there are cases
252           where either no arguments are being provided or the provided
253           arguments are insufficient or even invalid.
254
255           When that occurs, it is possible to define a built-in command
256           line here and choose how the kernel should use it later on.
257
258 choice
259         prompt "Kernel command line type"
260         default CMDLINE_BOOTLOADER
261         help
262           Choose how the kernel will handle the provided built-in command
263           line.
264
265 config CMDLINE_BOOTLOADER
266         bool "Use bootloader kernel arguments if available"
267         help
268           Prefer the command-line passed by the boot loader if available.
269           Use the built-in command line as fallback in case we get nothing
270           during boot. This is the default behaviour.
271
272 config CMDLINE_EXTEND
273         bool "Use built-in to extend bootloader kernel arguments"
274         help
275           The command-line arguments provided during boot will be
276           appended to the built-in command line. This is useful in
277           cases where the provided arguments are insufficient and
278           you don't want to or cannot modify them.
279
280 config CMDLINE_FORCE
281         bool "Always use the built-in kernel command string"
282         help
283           Always use the built-in command line, even if we get one during
284           boot. This is useful in case you need to override the provided
285           command line on systems where you don't have or want control
286           over it.
287
288 endchoice
289
290 config DMI
291         bool "Enable DMI scanning"
292         select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
293         default y
294         help
295           This enables SMBIOS/DMI feature for systems, and scanning of
296           DMI to identify machine quirks.
297
298 config EFI
299         bool "EFI runtime service support"
300         select UCS2_STRING
301         select EFI_PARAMS_FROM_FDT
302         select EFI_RUNTIME_WRAPPERS
303         help
304           This enables the kernel to use EFI runtime services that are
305           available (such as the EFI variable services).
306
307 config SMP
308         bool "Multi-Processing support"
309         help
310           This enables support for systems with more than one CPU. If you have
311           a system with only one CPU, say N. If you have a system with more
312           than one CPU, say Y.
313
314           If you say N here, the kernel will run on uni- and multiprocessor
315           machines, but will use only one CPU of a multiprocessor machine. If
316           you say Y here, the kernel will run on many, but not all,
317           uniprocessor machines. On a uniprocessor machine, the kernel
318           will run faster if you say N here.
319
320           See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>.
321
322           If you don't know what to do here, say N.
323
324 config HOTPLUG_CPU
325         bool "Support for hot-pluggable CPUs"
326         depends on SMP
327         select GENERIC_IRQ_MIGRATION
328         help
329           Say Y here to allow turning CPUs off and on. CPUs can be
330           controlled through /sys/devices/system/cpu.
331           (Note: power management support will enable this option
332             automatically on SMP systems. )
333           Say N if you want to disable CPU hotplug.
334
335 config NR_CPUS
336         int "Maximum number of CPUs (2-256)"
337         range 2 256
338         depends on SMP
339         default "64"
340         help
341           This allows you to specify the maximum number of CPUs which this
342           kernel will support.
343
344 config NUMA
345         bool "NUMA Support"
346         select SMP
347         select ACPI_NUMA if ACPI
348         help
349           Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
350           support.  This option improves performance on systems with more
351           than one NUMA node; on single node systems it is generally better
352           to leave it disabled.
353
354 config NODES_SHIFT
355         int
356         default "6"
357         depends on NUMA
358
359 config FORCE_MAX_ZONEORDER
360         int "Maximum zone order"
361         range 14 64 if PAGE_SIZE_64KB
362         default "14" if PAGE_SIZE_64KB
363         range 12 64 if PAGE_SIZE_16KB
364         default "12" if PAGE_SIZE_16KB
365         range 11 64
366         default "11"
367         help
368           The kernel memory allocator divides physically contiguous memory
369           blocks into "zones", where each zone is a power of two number of
370           pages.  This option selects the largest power of two that the kernel
371           keeps in the memory allocator.  If you need to allocate very large
372           blocks of physically contiguous memory, then you may need to
373           increase this value.
374
375           This config option is actually maximum order plus one. For example,
376           a value of 11 means that the largest free memory block is 2^10 pages.
377
378           The page size is not necessarily 4KB.  Keep this in mind
379           when choosing a value for this option.
380
381 config SECCOMP
382         bool "Enable seccomp to safely compute untrusted bytecode"
383         depends on PROC_FS
384         default y
385         help
386           This kernel feature is useful for number crunching applications
387           that may need to compute untrusted bytecode during their
388           execution. By using pipes or other transports made available to
389           the process as file descriptors supporting the read/write
390           syscalls, it's possible to isolate those applications in
391           their own address space using seccomp. Once seccomp is
392           enabled via /proc/<pid>/seccomp, it cannot be disabled
393           and the task is only allowed to execute a few safe syscalls
394           defined by each seccomp mode.
395
396           If unsure, say Y. Only embedded should say N here.
397
398 endmenu
399
400 config ARCH_SELECT_MEMORY_MODEL
401         def_bool y
402
403 config ARCH_FLATMEM_ENABLE
404         def_bool y
405         depends on !NUMA
406
407 config ARCH_SPARSEMEM_ENABLE
408         def_bool y
409         help
410           Say Y to support efficient handling of sparse physical memory,
411           for architectures which are either NUMA (Non-Uniform Memory Access)
412           or have huge holes in the physical address space for other reasons.
413           See <file:Documentation/mm/numa.rst> for more.
414
415 config ARCH_ENABLE_THP_MIGRATION
416         def_bool y
417         depends on TRANSPARENT_HUGEPAGE
418
419 config ARCH_MEMORY_PROBE
420         def_bool y
421         depends on MEMORY_HOTPLUG
422
423 config MMU
424         bool
425         default y
426
427 config ARCH_MMAP_RND_BITS_MIN
428         default 12
429
430 config ARCH_MMAP_RND_BITS_MAX
431         default 18
432
433 menu "Power management options"
434
435 source "drivers/acpi/Kconfig"
436
437 endmenu
438
439 source "drivers/firmware/Kconfig"