Linux 6.9-rc1
[linux-2.6-microblaze.git] / arch / parisc / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 config PARISC
3         def_bool y
4         select ALTERNATE_USER_ADDRESS_SPACE
5         select ARCH_32BIT_OFF_T if !64BIT
6         select ARCH_MIGHT_HAVE_PC_PARPORT
7         select HAVE_FUNCTION_TRACER
8         select HAVE_FUNCTION_GRAPH_TRACER
9         select HAVE_SYSCALL_TRACEPOINTS
10         select ARCH_WANT_FRAME_POINTERS
11         select ARCH_HAS_CPU_CACHE_ALIASING
12         select ARCH_HAS_DMA_ALLOC if PA11
13         select ARCH_HAS_ELF_RANDOMIZE
14         select ARCH_HAS_STRICT_KERNEL_RWX
15         select ARCH_HAS_STRICT_MODULE_RWX
16         select ARCH_HAS_UBSAN
17         select ARCH_HAS_PTE_SPECIAL
18         select ARCH_NO_SG_CHAIN
19         select ARCH_SUPPORTS_HUGETLBFS if PA20
20         select ARCH_SUPPORTS_MEMORY_FAILURE
21         select ARCH_STACKWALK
22         select ARCH_HAS_DEBUG_VM_PGTABLE
23         select HAVE_RELIABLE_STACKTRACE
24         select DMA_OPS
25         select RTC_CLASS
26         select RTC_DRV_GENERIC
27         select INIT_ALL_POSSIBLE
28         select BUG
29         select HAVE_KERNEL_UNCOMPRESSED
30         select HAVE_PCI
31         select HAVE_PERF_EVENTS
32         select HAVE_KERNEL_BZIP2
33         select HAVE_KERNEL_GZIP
34         select HAVE_KERNEL_LZ4
35         select HAVE_KERNEL_LZMA
36         select HAVE_KERNEL_LZO
37         select HAVE_KERNEL_XZ
38         select GENERIC_ATOMIC64 if !64BIT
39         select GENERIC_IRQ_PROBE
40         select GENERIC_PCI_IOMAP
41         select GENERIC_IOREMAP
42         select ARCH_HAVE_NMI_SAFE_CMPXCHG
43         select GENERIC_SMP_IDLE_THREAD
44         select GENERIC_ARCH_TOPOLOGY if SMP
45         select GENERIC_CPU_DEVICES if !SMP
46         select GENERIC_LIB_DEVMEM_IS_ALLOWED
47         select SYSCTL_ARCH_UNALIGN_ALLOW
48         select SYSCTL_EXCEPTION_TRACE
49         select HAVE_MOD_ARCH_SPECIFIC
50         select MODULES_USE_ELF_RELA
51         select CLONE_BACKWARDS
52         select TTY # Needed for pdc_cons.c
53         select HAS_IOPORT if PCI || EISA
54         select HAVE_DEBUG_STACKOVERFLOW
55         select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
56         select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
57         select HAVE_ARCH_MMAP_RND_BITS
58         select HAVE_ARCH_AUDITSYSCALL
59         select HAVE_ARCH_HASH
60         select HAVE_ARCH_JUMP_LABEL
61         select HAVE_ARCH_JUMP_LABEL_RELATIVE
62         select HAVE_ARCH_KFENCE
63         select HAVE_ARCH_SECCOMP_FILTER
64         select HAVE_ARCH_TRACEHOOK
65         select HAVE_EBPF_JIT
66         select ARCH_WANT_DEFAULT_BPF_JIT
67         select HAVE_REGS_AND_STACK_ACCESS_API
68         select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
69         select GENERIC_SCHED_CLOCK
70         select GENERIC_IRQ_MIGRATION if SMP
71         select HAVE_UNSTABLE_SCHED_CLOCK if SMP
72         select LEGACY_TIMER_TICK
73         select CPU_NO_EFFICIENT_FFS
74         select THREAD_INFO_IN_TASK
75         select NEED_DMA_MAP_STATE
76         select NEED_SG_DMA_LENGTH
77         select HAVE_ARCH_KGDB
78         select HAVE_KPROBES
79         select HAVE_KRETPROBES
80         select HAVE_DYNAMIC_FTRACE if $(cc-option,-fpatchable-function-entry=1,1)
81         select HAVE_FTRACE_MCOUNT_RECORD if HAVE_DYNAMIC_FTRACE
82         select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if DYNAMIC_FTRACE
83         select HAVE_KPROBES_ON_FTRACE
84         select HAVE_DYNAMIC_FTRACE_WITH_REGS
85         select HAVE_SOFTIRQ_ON_OWN_STACK if IRQSTACKS
86         select TRACE_IRQFLAGS_SUPPORT
87         select HAVE_FUNCTION_DESCRIPTORS if 64BIT
88
89         help
90           The PA-RISC microprocessor is designed by Hewlett-Packard and used
91           in many of their workstations & servers (HP9000 700 and 800 series,
92           and later HP3000 series).  The PA-RISC Linux project home page is
93           at <https://parisc.wiki.kernel.org>.
94
95 config CPU_BIG_ENDIAN
96         def_bool y
97
98 config MMU
99         def_bool y
100
101 config STACK_GROWSUP
102         def_bool y
103
104 config GENERIC_LOCKBREAK
105         bool
106         default y
107         depends on SMP && PREEMPTION
108
109 config ARCH_HAS_ILOG2_U32
110         bool
111         default n
112
113 config ARCH_HAS_ILOG2_U64
114         bool
115         default n
116
117 config GENERIC_BUG
118         def_bool y
119         depends on BUG
120         select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
121
122 config GENERIC_BUG_RELATIVE_POINTERS
123         bool
124
125 config GENERIC_HWEIGHT
126         bool
127         default y
128
129 config GENERIC_CALIBRATE_DELAY
130         bool
131         default y
132
133 config TIME_LOW_RES
134         bool
135         depends on SMP
136         default y
137
138 config ARCH_MMAP_RND_BITS_MIN
139         default 18 if 64BIT
140         default 8
141
142 config ARCH_MMAP_RND_COMPAT_BITS_MIN
143         default 8
144
145 config ARCH_MMAP_RND_BITS_MAX
146         default 18 if 64BIT
147         default 13
148
149 config ARCH_MMAP_RND_COMPAT_BITS_MAX
150         default 13
151
152 # unless you want to implement ACPI on PA-RISC ... ;-)
153 config PM
154         bool
155
156 config STACKTRACE_SUPPORT
157         def_bool y
158
159 config LOCKDEP_SUPPORT
160         bool
161         default y
162
163 config ISA_DMA_API
164         bool
165
166 config ARCH_MAY_HAVE_PC_FDC
167         bool
168         depends on BROKEN
169         default y
170
171 config PGTABLE_LEVELS
172         int
173         default 3 if 64BIT && PARISC_PAGE_SIZE_4KB
174         default 2
175
176 menu "Processor type and features"
177
178 choice
179         prompt "Processor type"
180         default PA7000 if "$(ARCH)" = "parisc"
181
182 config PA7000
183         bool "PA7000/PA7100" if "$(ARCH)" = "parisc"
184         help
185           This is the processor type of your CPU.  This information is
186           used for optimizing purposes.  In order to compile a kernel
187           that can run on all 32-bit PA CPUs (albeit not optimally fast),
188           you can specify "PA7000" here.
189
190           Specifying "PA8000" here will allow you to select a 64-bit kernel
191           which is required on some machines.
192
193 config PA7100LC
194         bool "PA7100LC" if "$(ARCH)" = "parisc"
195         help
196           Select this option for the PCX-L processor, as used in the
197           712, 715/64, 715/80, 715/100, 715/100XC, 725/100, 743, 748,
198           D200, D210, D300, D310 and E-class
199
200 config PA7200
201         bool "PA7200" if "$(ARCH)" = "parisc"
202         help
203           Select this option for the PCX-T' processor, as used in the
204           C100, C110, J100, J110, J210XC, D250, D260, D350, D360,
205           K100, K200, K210, K220, K400, K410 and K420
206
207 config PA7300LC
208         bool "PA7300LC" if "$(ARCH)" = "parisc"
209         help
210           Select this option for the PCX-L2 processor, as used in the
211           744, A180, B132L, B160L, B180L, C132L, C160L, C180L,
212           D220, D230, D320 and D330.
213
214 config PA8X00
215         bool "PA8000 and up"
216         help
217           Select this option for PCX-U to PCX-W2 processors.
218
219 endchoice
220
221 # Define implied options from the CPU selection here
222
223 config PA20
224         def_bool y
225         depends on PA8X00
226
227 config PA11
228         def_bool y
229         depends on PA7000 || PA7100LC || PA7200 || PA7300LC
230         select ARCH_HAS_SYNC_DMA_FOR_CPU
231         select ARCH_HAS_SYNC_DMA_FOR_DEVICE
232
233 config PREFETCH
234         def_bool y
235         depends on PA8X00 || PA7200
236
237 config PARISC_HUGE_KERNEL
238         def_bool y if !MODULES || UBSAN || FTRACE || COMPILE_TEST
239
240 config MLONGCALLS
241         bool "Enable the -mlong-calls compiler option for big kernels" if !PARISC_HUGE_KERNEL
242         depends on PA8X00
243         default PARISC_HUGE_KERNEL
244         help
245           If you configure the kernel to include many drivers built-in instead
246           as modules, the kernel executable may become too big, so that the
247           linker will not be able to resolve some long branches and fails to link
248           your vmlinux kernel. In that case enabling this option will help you
249           to overcome this limit by using the -mlong-calls compiler option.
250
251           Usually you want to say N here, unless you e.g. want to build
252           a kernel which includes all necessary drivers built-in and which can
253           be used for TFTP booting without the need to have an initrd ramdisk.
254
255           Enabling this option will probably slow down your kernel.
256
257 config 64BIT
258         bool "64-bit kernel" if "$(ARCH)" = "parisc"
259         depends on PA8X00
260         default "$(ARCH)" = "parisc64"
261         help
262           Enable this if you want to support 64bit kernel on PA-RISC platform.
263
264           At the moment, only people willing to use more than 2GB of RAM,
265           or having a 64bit-only capable PA-RISC machine should say Y here.
266
267           Since there is no 64bit userland on PA-RISC, there is no point to
268           enable this option otherwise. The 64bit kernel is significantly bigger
269           and slower than the 32bit one.
270
271 choice
272         prompt "Kernel page size"
273         default PARISC_PAGE_SIZE_4KB
274
275 config PARISC_PAGE_SIZE_4KB
276         bool "4KB"
277         select HAVE_PAGE_SIZE_4KB
278         help
279           This lets you select the page size of the kernel.  For best
280           performance, a page size of 16KB is recommended.  For best
281           compatibility with 32bit applications, a page size of 4KB should be
282           selected (the vast majority of 32bit binaries work perfectly fine
283           with a larger page size).
284
285           4KB                For best 32bit compatibility
286           16KB               For best performance
287           64KB               For best performance, might give more overhead.
288
289           If you don't know what to do, choose 4KB.
290
291 config PARISC_PAGE_SIZE_16KB
292         bool "16KB"
293         select HAVE_PAGE_SIZE_16KB
294         depends on PA8X00 && BROKEN && !KFENCE
295
296 config PARISC_PAGE_SIZE_64KB
297         bool "64KB"
298         select HAVE_PAGE_SIZE_64KB
299         depends on PA8X00 && BROKEN && !KFENCE
300
301 endchoice
302
303 config SMP
304         bool "Symmetric multi-processing support"
305         help
306           This enables support for systems with more than one CPU. If you have
307           a system with only one CPU, say N. If you have a system with more
308           than one CPU, say Y.
309
310           If you say N here, the kernel will run on uni- and multiprocessor
311           machines, but will use only one CPU of a multiprocessor machine.
312           On a uniprocessor machine, the kernel will run faster if you say N.
313
314           See also <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO
315           available at <https://www.tldp.org/docs.html#howto>.
316
317           If you don't know what to do here, say N.
318
319 config SCHED_MC
320         bool "Multi-core scheduler support"
321         depends on GENERIC_ARCH_TOPOLOGY && PA8X00
322         help
323           Multi-core scheduler support improves the CPU scheduler's decision
324           making when dealing with multi-core CPU chips at a cost of slightly
325           increased overhead in some places. If unsure say N here.
326
327 config IRQSTACKS
328         bool "Use separate kernel stacks when processing interrupts"
329         default y
330         help
331           If you say Y here the kernel will use separate kernel stacks
332           for handling hard and soft interrupts.  This can help avoid
333           overflowing the process kernel stacks.
334
335 config HOTPLUG_CPU
336         bool
337         default y if SMP
338
339 config ARCH_SELECT_MEMORY_MODEL
340         def_bool y
341         depends on 64BIT
342
343 config ARCH_SPARSEMEM_ENABLE
344         def_bool y
345         depends on 64BIT
346
347 config ARCH_FLATMEM_ENABLE
348         def_bool y
349
350 config ARCH_SPARSEMEM_DEFAULT
351         def_bool y
352         depends on ARCH_SPARSEMEM_ENABLE
353
354 source "kernel/Kconfig.hz"
355
356 config COMPAT
357         def_bool y
358         depends on 64BIT
359
360 config AUDIT_ARCH
361         def_bool y
362
363 config NR_CPUS
364         int "Maximum number of CPUs (2-32)"
365         range 2 32
366         depends on SMP
367         default "8" if 64BIT
368         default "16"
369
370 endmenu
371
372 config ARCH_SUPPORTS_KEXEC
373         def_bool y
374
375 config ARCH_SUPPORTS_KEXEC_FILE
376         def_bool y
377
378 config ARCH_SELECTS_KEXEC_FILE
379         def_bool y
380         depends on KEXEC_FILE
381         select KEXEC_ELF
382
383 source "drivers/parisc/Kconfig"