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