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