parisc: Reduce size of the bug_table on 64-bit kernel by half
[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         def_bool y
117         depends on BUG
118         select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
119
120 config GENERIC_BUG_RELATIVE_POINTERS
121         bool
122
123 config GENERIC_HWEIGHT
124         bool
125         default y
126
127 config GENERIC_CALIBRATE_DELAY
128         bool
129         default y
130
131 config TIME_LOW_RES
132         bool
133         depends on SMP
134         default y
135
136 config ARCH_MMAP_RND_BITS_MIN
137         default 18 if 64BIT
138         default 8
139
140 config ARCH_MMAP_RND_COMPAT_BITS_MIN
141         default 8
142
143 config ARCH_MMAP_RND_BITS_MAX
144         default 18 if 64BIT
145         default 13
146
147 config ARCH_MMAP_RND_COMPAT_BITS_MAX
148         default 13
149
150 # unless you want to implement ACPI on PA-RISC ... ;-)
151 config PM
152         bool
153
154 config STACKTRACE_SUPPORT
155         def_bool y
156
157 config LOCKDEP_SUPPORT
158         bool
159         default y
160
161 config ISA_DMA_API
162         bool
163
164 config ARCH_MAY_HAVE_PC_FDC
165         bool
166         depends on BROKEN
167         default y
168
169 config PGTABLE_LEVELS
170         int
171         default 3 if 64BIT && PARISC_PAGE_SIZE_4KB
172         default 2
173
174 menu "Processor type and features"
175
176 choice
177         prompt "Processor type"
178         default PA7000 if "$(ARCH)" = "parisc"
179
180 config PA7000
181         bool "PA7000/PA7100" if "$(ARCH)" = "parisc"
182         help
183           This is the processor type of your CPU.  This information is
184           used for optimizing purposes.  In order to compile a kernel
185           that can run on all 32-bit PA CPUs (albeit not optimally fast),
186           you can specify "PA7000" here.
187
188           Specifying "PA8000" here will allow you to select a 64-bit kernel
189           which is required on some machines.
190
191 config PA7100LC
192         bool "PA7100LC" if "$(ARCH)" = "parisc"
193         help
194           Select this option for the PCX-L processor, as used in the
195           712, 715/64, 715/80, 715/100, 715/100XC, 725/100, 743, 748,
196           D200, D210, D300, D310 and E-class
197
198 config PA7200
199         bool "PA7200" if "$(ARCH)" = "parisc"
200         help
201           Select this option for the PCX-T' processor, as used in the
202           C100, C110, J100, J110, J210XC, D250, D260, D350, D360,
203           K100, K200, K210, K220, K400, K410 and K420
204
205 config PA7300LC
206         bool "PA7300LC" if "$(ARCH)" = "parisc"
207         help
208           Select this option for the PCX-L2 processor, as used in the
209           744, A180, B132L, B160L, B180L, C132L, C160L, C180L,
210           D220, D230, D320 and D330.
211
212 config PA8X00
213         bool "PA8000 and up"
214         help
215           Select this option for PCX-U to PCX-W2 processors.
216
217 endchoice
218
219 # Define implied options from the CPU selection here
220
221 config PA20
222         def_bool y
223         depends on PA8X00
224
225 config PA11
226         def_bool y
227         depends on PA7000 || PA7100LC || PA7200 || PA7300LC
228         select ARCH_HAS_SYNC_DMA_FOR_CPU
229         select ARCH_HAS_SYNC_DMA_FOR_DEVICE
230
231 config PREFETCH
232         def_bool y
233         depends on PA8X00 || PA7200
234
235 config PARISC_HUGE_KERNEL
236         def_bool y if !MODULES || UBSAN || FTRACE || COMPILE_TEST
237
238 config MLONGCALLS
239         def_bool y if PARISC_HUGE_KERNEL
240         bool "Enable the -mlong-calls compiler option for big kernels" if !PARISC_HUGE_KERNEL
241         depends on PA8X00
242         help
243           If you configure the kernel to include many drivers built-in instead
244           as modules, the kernel executable may become too big, so that the
245           linker will not be able to resolve some long branches and fails to link
246           your vmlinux kernel. In that case enabling this option will help you
247           to overcome this limit by using the -mlong-calls compiler option.
248
249           Usually you want to say N here, unless you e.g. want to build
250           a kernel which includes all necessary drivers built-in and which can
251           be used for TFTP booting without the need to have an initrd ramdisk.
252
253           Enabling this option will probably slow down your kernel.
254
255 config 64BIT
256         def_bool y if "$(ARCH)" = "parisc64"
257         bool "64-bit kernel" if "$(ARCH)" = "parisc"
258         depends on PA8X00
259         help
260           Enable this if you want to support 64bit kernel on PA-RISC platform.
261
262           At the moment, only people willing to use more than 2GB of RAM,
263           or having a 64bit-only capable PA-RISC machine should say Y here.
264
265           Since there is no 64bit userland on PA-RISC, there is no point to
266           enable this option otherwise. The 64bit kernel is significantly bigger
267           and slower than the 32bit one.
268
269 choice
270         prompt "Kernel page size"
271         default PARISC_PAGE_SIZE_4KB
272
273 config PARISC_PAGE_SIZE_4KB
274         bool "4KB"
275         help
276           This lets you select the page size of the kernel.  For best
277           performance, a page size of 16KB is recommended.  For best
278           compatibility with 32bit applications, a page size of 4KB should be
279           selected (the vast majority of 32bit binaries work perfectly fine
280           with a larger page size).
281
282           4KB                For best 32bit compatibility
283           16KB               For best performance
284           64KB               For best performance, might give more overhead.
285
286           If you don't know what to do, choose 4KB.
287
288 config PARISC_PAGE_SIZE_16KB
289         bool "16KB"
290         depends on PA8X00 && BROKEN && !KFENCE
291
292 config PARISC_PAGE_SIZE_64KB
293         bool "64KB"
294         depends on PA8X00 && BROKEN && !KFENCE
295
296 endchoice
297
298 config SMP
299         bool "Symmetric multi-processing support"
300         help
301           This enables support for systems with more than one CPU. If you have
302           a system with only one CPU, say N. If you have a system with more
303           than one CPU, say Y.
304
305           If you say N here, the kernel will run on uni- and multiprocessor
306           machines, but will use only one CPU of a multiprocessor machine.
307           On a uniprocessor machine, the kernel will run faster if you say N.
308
309           See also <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO
310           available at <https://www.tldp.org/docs.html#howto>.
311
312           If you don't know what to do here, say N.
313
314 config SCHED_MC
315         bool "Multi-core scheduler support"
316         depends on GENERIC_ARCH_TOPOLOGY && PA8X00
317         help
318           Multi-core scheduler support improves the CPU scheduler's decision
319           making when dealing with multi-core CPU chips at a cost of slightly
320           increased overhead in some places. If unsure say N here.
321
322 config IRQSTACKS
323         bool "Use separate kernel stacks when processing interrupts"
324         default y
325         help
326           If you say Y here the kernel will use separate kernel stacks
327           for handling hard and soft interrupts.  This can help avoid
328           overflowing the process kernel stacks.
329
330 config HOTPLUG_CPU
331         bool
332         default y if SMP
333
334 config ARCH_SELECT_MEMORY_MODEL
335         def_bool y
336         depends on 64BIT
337
338 config ARCH_SPARSEMEM_ENABLE
339         def_bool y
340         depends on 64BIT
341
342 config ARCH_FLATMEM_ENABLE
343         def_bool y
344
345 config ARCH_SPARSEMEM_DEFAULT
346         def_bool y
347         depends on ARCH_SPARSEMEM_ENABLE
348
349 source "kernel/Kconfig.hz"
350
351 config COMPAT
352         def_bool y
353         depends on 64BIT
354
355 config AUDIT_ARCH
356         def_bool y
357
358 config NR_CPUS
359         int "Maximum number of CPUs (2-32)"
360         range 2 32
361         depends on SMP
362         default "8" if 64BIT
363         default "16"
364
365 endmenu
366
367 config ARCH_SUPPORTS_KEXEC
368         def_bool y
369
370 config ARCH_SUPPORTS_KEXEC_FILE
371         def_bool y
372
373 config ARCH_SELECTS_KEXEC_FILE
374         def_bool y
375         depends on KEXEC_FILE
376         select KEXEC_ELF
377
378 source "drivers/parisc/Kconfig"