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 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
304config 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
311config 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
319config 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
327config 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
337config HOTPLUG_CPU
338	bool
339	default y if SMP
340
341config ARCH_SELECT_MEMORY_MODEL
342	def_bool y
343	depends on 64BIT
344
345config ARCH_SPARSEMEM_ENABLE
346	def_bool y
347	depends on 64BIT
348
349config ARCH_FLATMEM_ENABLE
350	def_bool y
351
352config ARCH_SPARSEMEM_DEFAULT
353	def_bool y
354	depends on ARCH_SPARSEMEM_ENABLE
355
356source "kernel/Kconfig.hz"
357
358config COMPAT
359	def_bool y
360	depends on 64BIT
361
362config SYSVIPC_COMPAT
363	def_bool y
364	depends on COMPAT && SYSVIPC
365
366config AUDIT_ARCH
367	def_bool y
368
369config NR_CPUS
370	int "Maximum number of CPUs (2-32)"
371	range 2 32
372	depends on SMP
373	default "4"
374
375config 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
388config 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
398endmenu
399
400source "drivers/parisc/Kconfig"
401