xref: /openbmc/linux/arch/parisc/Kconfig (revision 597568e8)
1# SPDX-License-Identifier: GPL-2.0
2config 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
79config CPU_BIG_ENDIAN
80	def_bool y
81
82config MMU
83	def_bool y
84
85config STACK_GROWSUP
86	def_bool y
87
88config GENERIC_LOCKBREAK
89	bool
90	default y
91	depends on SMP && PREEMPTION
92
93config ARCH_HAS_ILOG2_U32
94	bool
95	default n
96
97config ARCH_HAS_ILOG2_U64
98	bool
99	default n
100
101config GENERIC_BUG
102	bool
103	default y
104	depends on BUG
105
106config GENERIC_HWEIGHT
107	bool
108	default y
109
110config GENERIC_CALIBRATE_DELAY
111	bool
112	default y
113
114config TIME_LOW_RES
115	bool
116	depends on SMP
117	default y
118
119# unless you want to implement ACPI on PA-RISC ... ;-)
120config PM
121	bool
122
123config STACKTRACE_SUPPORT
124	def_bool y
125
126config ISA_DMA_API
127	bool
128
129config ARCH_MAY_HAVE_PC_FDC
130	bool
131	depends on BROKEN
132	default y
133
134config PGTABLE_LEVELS
135	int
136	default 3 if 64BIT && PARISC_PAGE_SIZE_4KB
137	default 2
138
139menu "Processor type and features"
140
141choice
142	prompt "Processor type"
143	default PA7000
144
145config 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
156config 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
163config 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
170config 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
177config PA8X00
178	bool "PA8000 and up"
179	help
180	  Select this option for PCX-U to PCX-W2 processors.
181
182endchoice
183
184# Define implied options from the CPU selection here
185
186config PA20
187	def_bool y
188	depends on PA8X00
189
190config 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
196config PREFETCH
197	def_bool y
198	depends on PA8X00 || PA7200
199
200config PARISC_HUGE_KERNEL
201	def_bool y if !MODULES || UBSAN || FTRACE || COMPILE_TEST
202
203config 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
220config 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
233choice
234	prompt "Kernel page size"
235	default PARISC_PAGE_SIZE_4KB
236
237config 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
252config PARISC_PAGE_SIZE_16KB
253	bool "16KB"
254	depends on PA8X00 && BROKEN && !KFENCE
255
256config PARISC_PAGE_SIZE_64KB
257	bool "64KB"
258	depends on PA8X00 && BROKEN && !KFENCE
259
260endchoice
261
262config 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
274config 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
290config PARISC_CPU_TOPOLOGY
291	bool "Support cpu topology definition"
292	depends on SMP
293	default y
294	help
295	  Support PARISC cpu topology definition.
296
297config SCHED_MC
298	bool "Multi-core scheduler support"
299	depends on PARISC_CPU_TOPOLOGY && PA8X00
300	help
301	  Multi-core scheduler support improves the CPU scheduler's decision
302	  making when dealing with multi-core CPU chips at a cost of slightly
303	  increased overhead in some places. If unsure say N here.
304
305config IRQSTACKS
306	bool "Use separate kernel stacks when processing interrupts"
307	default y
308	help
309	  If you say Y here the kernel will use separate kernel stacks
310	  for handling hard and soft interrupts.  This can help avoid
311	  overflowing the process kernel stacks.
312
313config TLB_PTLOCK
314	bool "Use page table locks in TLB fault handler"
315	depends on SMP
316	default n
317	help
318	  Select this option to enable page table locking in the TLB
319	  fault handler. This ensures that page table entries are
320	  updated consistently on SMP machines at the expense of some
321	  loss in performance.
322
323config HOTPLUG_CPU
324	bool
325	default y if SMP
326
327config ARCH_SELECT_MEMORY_MODEL
328	def_bool y
329	depends on 64BIT
330
331config ARCH_SPARSEMEM_ENABLE
332	def_bool y
333	depends on 64BIT
334
335config ARCH_FLATMEM_ENABLE
336	def_bool y
337
338config ARCH_SPARSEMEM_DEFAULT
339	def_bool y
340	depends on ARCH_SPARSEMEM_ENABLE
341
342source "kernel/Kconfig.hz"
343
344config COMPAT
345	def_bool y
346	depends on 64BIT
347
348config SYSVIPC_COMPAT
349	def_bool y
350	depends on COMPAT && SYSVIPC
351
352config AUDIT_ARCH
353	def_bool y
354
355config NR_CPUS
356	int "Maximum number of CPUs (2-32)"
357	range 2 32
358	depends on SMP
359	default "4" if 64BIT
360	default "16"
361
362config KEXEC
363	bool "Kexec system call"
364	select KEXEC_CORE
365	help
366	  kexec is a system call that implements the ability to shutdown your
367	  current kernel, and to start another kernel.  It is like a reboot
368	  but it is independent of the system firmware.   And like a reboot
369	  you can start any kernel with it, not just Linux.
370
371	  It is an ongoing process to be certain the hardware in a machine
372	  shutdown, so do not be surprised if this code does not
373	  initially work for you.
374
375config KEXEC_FILE
376	bool "kexec file based system call"
377	select KEXEC_CORE
378	select KEXEC_ELF
379	help
380	  This enables the kexec_file_load() System call. This is
381	  file based and takes file descriptors as system call argument
382	  for kernel and initramfs as opposed to list of segments as
383	  accepted by previous system call.
384
385endmenu
386
387source "drivers/parisc/Kconfig"
388