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