GNU Linux-libre 4.19.295-gnu1
[releases.git] / arch / ia64 / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 config PGTABLE_LEVELS
3         int "Page Table Levels" if !IA64_PAGE_SIZE_64KB
4         range 3 4 if !IA64_PAGE_SIZE_64KB
5         default 3
6
7 menu "Processor type and features"
8
9 config IA64
10         bool
11         select ARCH_HAS_CPU_FINALIZE_INIT
12         select ARCH_MIGHT_HAVE_PC_PARPORT
13         select ARCH_MIGHT_HAVE_PC_SERIO
14         select PCI if (!IA64_HP_SIM)
15         select ACPI if (!IA64_HP_SIM)
16         select ARCH_SUPPORTS_ACPI if (!IA64_HP_SIM)
17         select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
18         select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
19         select HAVE_UNSTABLE_SCHED_CLOCK
20         select HAVE_EXIT_THREAD
21         select HAVE_IDE
22         select HAVE_OPROFILE
23         select HAVE_KPROBES
24         select HAVE_KRETPROBES
25         select HAVE_FTRACE_MCOUNT_RECORD
26         select HAVE_DYNAMIC_FTRACE if (!ITANIUM)
27         select HAVE_FUNCTION_TRACER
28         select TTY
29         select HAVE_ARCH_TRACEHOOK
30         select HAVE_MEMBLOCK
31         select HAVE_MEMBLOCK_NODE_MAP
32         select NO_BOOTMEM
33         select HAVE_VIRT_CPU_ACCOUNTING
34         select ARCH_HAS_DMA_MARK_CLEAN
35         select ARCH_HAS_SG_CHAIN
36         select VIRT_TO_BUS
37         select ARCH_DISCARD_MEMBLOCK
38         select GENERIC_IRQ_PROBE
39         select GENERIC_PENDING_IRQ if SMP
40         select GENERIC_IRQ_SHOW
41         select GENERIC_IRQ_LEGACY
42         select ARCH_HAVE_NMI_SAFE_CMPXCHG
43         select GENERIC_IOMAP
44         select GENERIC_SMP_IDLE_THREAD
45         select ARCH_TASK_STRUCT_ON_STACK
46         select ARCH_TASK_STRUCT_ALLOCATOR
47         select ARCH_THREAD_STACK_ALLOCATOR
48         select ARCH_CLOCKSOURCE_DATA
49         select GENERIC_TIME_VSYSCALL
50         select SYSCTL_ARCH_UNALIGN_NO_WARN
51         select HAVE_MOD_ARCH_SPECIFIC
52         select MODULES_USE_ELF_RELA
53         select ARCH_USE_CMPXCHG_LOCKREF
54         select HAVE_ARCH_AUDITSYSCALL
55         select NEED_DMA_MAP_STATE
56         select NEED_SG_DMA_LENGTH
57         default y
58         help
59           The Itanium Processor Family is Intel's 64-bit successor to
60           the 32-bit X86 line.  The IA-64 Linux project has a home
61           page at <http://www.linuxia64.org/> and a mailing list at
62           <linux-ia64@vger.kernel.org>.
63
64 config 64BIT
65         bool
66         select ATA_NONSTANDARD if ATA
67         default y
68
69 config ZONE_DMA32
70         def_bool y
71         depends on !IA64_SGI_SN2
72
73 config QUICKLIST
74         bool
75         default y
76
77 config MMU
78         bool
79         default y
80
81 config STACKTRACE_SUPPORT
82         def_bool y
83
84 config GENERIC_LOCKBREAK
85         def_bool n
86
87 config RWSEM_XCHGADD_ALGORITHM
88         bool
89         default y
90
91 config HUGETLB_PAGE_SIZE_VARIABLE
92         bool
93         depends on HUGETLB_PAGE
94         default y
95
96 config GENERIC_CALIBRATE_DELAY
97         bool
98         default y
99
100 config HAVE_SETUP_PER_CPU_AREA
101         def_bool y
102
103 config DMI
104         bool
105         default y
106         select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
107
108 config EFI
109         bool
110         select UCS2_STRING
111         default y
112
113 config SCHED_OMIT_FRAME_POINTER
114         bool
115         default y
116
117 config IA64_UNCACHED_ALLOCATOR
118         bool
119         select GENERIC_ALLOCATOR
120
121 config ARCH_USES_PG_UNCACHED
122         def_bool y
123         depends on IA64_UNCACHED_ALLOCATOR
124
125 config AUDIT_ARCH
126         bool
127         default y
128
129 choice
130         prompt "System type"
131         default IA64_GENERIC
132
133 config IA64_GENERIC
134         bool "generic"
135         select NUMA
136         select ACPI_NUMA
137         select SWIOTLB
138         select PCI_MSI
139         help
140           This selects the system type of your hardware.  A "generic" kernel
141           will run on any supported IA-64 system.  However, if you configure
142           a kernel for your specific system, it will be faster and smaller.
143
144           generic               For any supported IA-64 system
145           DIG-compliant         For DIG ("Developer's Interface Guide") compliant systems
146           DIG+Intel+IOMMU       For DIG systems with Intel IOMMU
147           HP-zx1/sx1000         For HP systems
148           HP-zx1/sx1000+swiotlb For HP systems with (broken) DMA-constrained devices.
149           SGI-SN2               For SGI Altix systems
150           SGI-UV                For SGI UV systems
151           Ski-simulator         For the HP simulator <http://www.hpl.hp.com/research/linux/ski/>
152
153           If you don't know what to do, choose "generic".
154
155 config IA64_DIG
156         bool "DIG-compliant"
157         select SWIOTLB
158
159 config IA64_DIG_VTD
160         bool "DIG+Intel+IOMMU"
161         select INTEL_IOMMU
162         select PCI_MSI
163
164 config IA64_HP_ZX1
165         bool "HP-zx1/sx1000"
166         help
167           Build a kernel that runs on HP zx1 and sx1000 systems.  This adds
168           support for the HP I/O MMU.
169
170 config IA64_HP_ZX1_SWIOTLB
171         bool "HP-zx1/sx1000 with software I/O TLB"
172         select SWIOTLB
173         help
174           Build a kernel that runs on HP zx1 and sx1000 systems even when they
175           have broken PCI devices which cannot DMA to full 32 bits.  Apart
176           from support for the HP I/O MMU, this includes support for the software
177           I/O TLB, which allows supporting the broken devices at the expense of
178           wasting some kernel memory (about 2MB by default).
179
180 config IA64_SGI_SN2
181         bool "SGI-SN2"
182         select NUMA
183         select ACPI_NUMA
184         help
185           Selecting this option will optimize the kernel for use on sn2 based
186           systems, but the resulting kernel binary will not run on other
187           types of ia64 systems.  If you have an SGI Altix system, it's safe
188           to select this option.  If in doubt, select ia64 generic support
189           instead.
190
191 config IA64_SGI_UV
192         bool "SGI-UV"
193         select NUMA
194         select ACPI_NUMA
195         select SWIOTLB
196         help
197           Selecting this option will optimize the kernel for use on UV based
198           systems, but the resulting kernel binary will not run on other
199           types of ia64 systems.  If you have an SGI UV system, it's safe
200           to select this option.  If in doubt, select ia64 generic support
201           instead.
202
203 config IA64_HP_SIM
204         bool "Ski-simulator"
205         select SWIOTLB
206         depends on !PM
207
208 endchoice
209
210 choice
211         prompt "Processor type"
212         default ITANIUM
213
214 config ITANIUM
215         bool "Itanium"
216         help
217           Select your IA-64 processor type.  The default is Itanium.
218           This choice is safe for all IA-64 systems, but may not perform
219           optimally on systems with, say, Itanium 2 or newer processors.
220
221 config MCKINLEY
222         bool "Itanium 2"
223         help
224           Select this to configure for an Itanium 2 (McKinley) processor.
225
226 endchoice
227
228 choice
229         prompt "Kernel page size"
230         default IA64_PAGE_SIZE_16KB
231
232 config IA64_PAGE_SIZE_4KB
233         bool "4KB"
234         help
235           This lets you select the page size of the kernel.  For best IA-64
236           performance, a page size of 8KB or 16KB is recommended.  For best
237           IA-32 compatibility, a page size of 4KB should be selected (the vast
238           majority of IA-32 binaries work perfectly fine with a larger page
239           size).  For Itanium 2 or newer systems, a page size of 64KB can also
240           be selected.
241
242           4KB                For best IA-32 compatibility
243           8KB                For best IA-64 performance
244           16KB               For best IA-64 performance
245           64KB               Requires Itanium 2 or newer processor.
246
247           If you don't know what to do, choose 16KB.
248
249 config IA64_PAGE_SIZE_8KB
250         bool "8KB"
251
252 config IA64_PAGE_SIZE_16KB
253         bool "16KB"
254
255 config IA64_PAGE_SIZE_64KB
256         depends on !ITANIUM
257         bool "64KB"
258
259 endchoice
260
261 if IA64_HP_SIM
262 config HZ
263         default 32
264 endif
265
266 if !IA64_HP_SIM
267 source kernel/Kconfig.hz
268 endif
269
270 config IA64_BRL_EMU
271         bool
272         depends on ITANIUM
273         default y
274
275 # align cache-sensitive data to 128 bytes
276 config IA64_L1_CACHE_SHIFT
277         int
278         default "7" if MCKINLEY
279         default "6" if ITANIUM
280
281 config IA64_CYCLONE
282         bool "Cyclone (EXA) Time Source support"
283         help
284           Say Y here to enable support for IBM EXA Cyclone time source.
285           If you're unsure, answer N.
286
287 config IOSAPIC
288         bool
289         depends on !IA64_HP_SIM
290         default y
291
292 config FORCE_MAX_ZONEORDER
293         int "MAX_ORDER (11 - 17)"  if !HUGETLB_PAGE
294         range 11 17  if !HUGETLB_PAGE
295         default "17" if HUGETLB_PAGE
296         default "11"
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 single and multiprocessor
306           systems, but will use only one CPU of a multiprocessor system.  If
307           you say Y here, the kernel will run on many, but not all,
308           single processor systems.  On a single processor system, the kernel
309           will run faster if you say N here.
310
311           See also the SMP-HOWTO available at
312           <http://www.tldp.org/docs.html#howto>.
313
314           If you don't know what to do here, say N.
315
316 config NR_CPUS
317         int "Maximum number of CPUs (2-4096)"
318         range 2 4096
319         depends on SMP
320         default "4096"
321         help
322           You should set this to the number of CPUs in your system, but
323           keep in mind that a kernel compiled for, e.g., 2 CPUs will boot but
324           only use 2 CPUs on a >2 CPU system.  Setting this to a value larger
325           than 64 will cause the use of a CPU mask array, causing a small
326           performance hit.
327
328 config HOTPLUG_CPU
329         bool "Support for hot-pluggable CPUs"
330         depends on SMP
331         default n
332         ---help---
333           Say Y here to experiment with turning CPUs off and on.  CPUs
334           can be controlled through /sys/devices/system/cpu/cpu#.
335           Say N if you want to disable CPU hotplug.
336
337 config ARCH_ENABLE_MEMORY_HOTPLUG
338         def_bool y
339
340 config ARCH_ENABLE_MEMORY_HOTREMOVE
341         def_bool y
342
343 config SCHED_SMT
344         bool "SMT scheduler support"
345         depends on SMP
346         help
347           Improves the CPU scheduler's decision making when dealing with
348           Intel IA64 chips with MultiThreading at a cost of slightly increased
349           overhead in some places. If unsure say N here.
350
351 config PERMIT_BSP_REMOVE
352         bool "Support removal of Bootstrap Processor"
353         depends on HOTPLUG_CPU
354         default n
355         ---help---
356         Say Y here if your platform SAL will support removal of BSP with HOTPLUG_CPU
357         support. 
358
359 config FORCE_CPEI_RETARGET
360         bool "Force assumption that CPEI can be re-targeted"
361         depends on PERMIT_BSP_REMOVE
362         default n
363         ---help---
364         Say Y if you need to force the assumption that CPEI can be re-targeted to
365         any cpu in the system. This hint is available via ACPI 3.0 specifications.
366         Tiger4 systems are capable of re-directing CPEI to any CPU other than BSP.
367         This option it useful to enable this feature on older BIOS's as well.
368         You can also enable this by using boot command line option force_cpei=1.
369
370 config ARCH_SELECT_MEMORY_MODEL
371         def_bool y
372
373 config ARCH_DISCONTIGMEM_ENABLE
374         def_bool y
375         help
376           Say Y to support efficient handling of discontiguous physical memory,
377           for architectures which are either NUMA (Non-Uniform Memory Access)
378           or have huge holes in the physical address space for other reasons.
379           See <file:Documentation/vm/numa.rst> for more.
380
381 config ARCH_FLATMEM_ENABLE
382         def_bool y
383
384 config ARCH_SPARSEMEM_ENABLE
385         def_bool y
386         depends on ARCH_DISCONTIGMEM_ENABLE
387         select SPARSEMEM_VMEMMAP_ENABLE
388
389 config ARCH_DISCONTIGMEM_DEFAULT
390         def_bool y if (IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB)
391         depends on ARCH_DISCONTIGMEM_ENABLE
392
393 config NUMA
394         bool "NUMA support"
395         depends on !IA64_HP_SIM && !FLATMEM
396         default y if IA64_SGI_SN2
397         select ACPI_NUMA if ACPI
398         help
399           Say Y to compile the kernel to support NUMA (Non-Uniform Memory
400           Access).  This option is for configuring high-end multiprocessor
401           server systems.  If in doubt, say N.
402
403 config NODES_SHIFT
404         int "Max num nodes shift(3-10)"
405         range 3 10
406         default "10"
407         depends on NEED_MULTIPLE_NODES
408         help
409           This option specifies the maximum number of nodes in your SSI system.
410           MAX_NUMNODES will be 2^(This value).
411           If in doubt, use the default.
412
413 # VIRTUAL_MEM_MAP and FLAT_NODE_MEM_MAP are functionally equivalent.
414 # VIRTUAL_MEM_MAP has been retained for historical reasons.
415 config VIRTUAL_MEM_MAP
416         bool "Virtual mem map"
417         depends on !SPARSEMEM
418         default y if !IA64_HP_SIM
419         help
420           Say Y to compile the kernel with support for a virtual mem map.
421           This code also only takes effect if a memory hole of greater than
422           1 Gb is found during boot.  You must turn this option on if you
423           require the DISCONTIGMEM option for your machine. If you are
424           unsure, say Y.
425
426 config HOLES_IN_ZONE
427         bool
428         default y if VIRTUAL_MEM_MAP
429
430 config HAVE_ARCH_EARLY_PFN_TO_NID
431         def_bool NUMA && SPARSEMEM
432
433 config HAVE_ARCH_NODEDATA_EXTENSION
434         def_bool y
435         depends on NUMA
436
437 config USE_PERCPU_NUMA_NODE_ID
438         def_bool y
439         depends on NUMA
440
441 config HAVE_MEMORYLESS_NODES
442         def_bool NUMA
443
444 config ARCH_PROC_KCORE_TEXT
445         def_bool y
446         depends on PROC_KCORE
447
448 config IA64_MCA_RECOVERY
449         bool "MCA recovery from errors other than TLB."
450
451 config PERFMON
452         bool "Performance monitor support"
453         depends on BROKEN
454         help
455           Selects whether support for the IA-64 performance monitor hardware
456           is included in the kernel.  This makes some kernel data-structures a
457           little bigger and slows down execution a bit, but it is generally
458           a good idea to turn this on.  If you're unsure, say Y.
459
460 config IA64_PALINFO
461         tristate "/proc/pal support"
462         help
463           If you say Y here, you are able to get PAL (Processor Abstraction
464           Layer) information in /proc/pal.  This contains useful information
465           about the processors in your systems, such as cache and TLB sizes
466           and the PAL firmware version in use.
467
468           To use this option, you have to ensure that the "/proc file system
469           support" (CONFIG_PROC_FS) is enabled, too.
470
471 config IA64_MC_ERR_INJECT
472         tristate "MC error injection support"
473         help
474           Adds support for MC error injection. If enabled, the kernel 
475           will provide a sysfs interface for user applications to
476           call MC error injection PAL procedures to inject various errors.
477           This is a useful tool for MCA testing.
478
479           If you're unsure, do not select this option.
480
481 config SGI_SN
482         def_bool y if (IA64_SGI_SN2 || IA64_GENERIC)
483
484 config IA64_ESI
485         bool "ESI (Extensible SAL Interface) support"
486         help
487           If you say Y here, support is built into the kernel to
488           make ESI calls.  ESI calls are used to support vendor-specific
489           firmware extensions, such as the ability to inject memory-errors
490           for test-purposes.  If you're unsure, say N.
491
492 config IA64_HP_AML_NFW
493         bool "Support ACPI AML calls to native firmware"
494         help
495           This driver installs a global ACPI Operation Region handler for
496           region 0xA1.  AML methods can use this OpRegion to call arbitrary
497           native firmware functions.  The driver installs the OpRegion
498           handler if there is an HPQ5001 device or if the user supplies
499           the "force" module parameter, e.g., with the "aml_nfw.force"
500           kernel command line option.
501
502 source "drivers/sn/Kconfig"
503
504 config KEXEC
505         bool "kexec system call"
506         depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
507         select KEXEC_CORE
508         help
509           kexec is a system call that implements the ability to shutdown your
510           current kernel, and to start another kernel.  It is like a reboot
511           but it is independent of the system firmware.   And like a reboot
512           you can start any kernel with it, not just Linux.
513
514           The name comes from the similarity to the exec system call.
515
516           It is an ongoing process to be certain the hardware in a machine
517           is properly shutdown, so do not be surprised if this code does not
518           initially work for you.  As of this writing the exact hardware
519           interface is strongly in flux, so no good recommendation can be
520           made.
521
522 config CRASH_DUMP
523           bool "kernel crash dumps"
524           depends on IA64_MCA_RECOVERY && !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
525           help
526             Generate crash dump after being started by kexec.
527
528 source "drivers/firmware/Kconfig"
529
530 endmenu
531
532 menu "Power management and ACPI options"
533
534 source "kernel/power/Kconfig"
535
536 source "drivers/acpi/Kconfig"
537
538 if PM
539 menu "CPU Frequency scaling"
540 source "drivers/cpufreq/Kconfig"
541 endmenu
542 endif
543
544 endmenu
545
546 if !IA64_HP_SIM
547
548 menu "Bus options (PCI, PCMCIA)"
549
550 config PCI
551         bool "PCI support"
552         help
553           Real IA-64 machines all have PCI/PCI-X/PCI Express busses.  Say Y
554           here unless you are using a simulator without PCI support.
555
556 config PCI_DOMAINS
557         def_bool PCI
558
559 config PCI_SYSCALL
560         def_bool PCI
561
562 source "drivers/pci/Kconfig"
563
564 source "drivers/pcmcia/Kconfig"
565
566 endmenu
567
568 endif
569
570 source "arch/ia64/hp/sim/Kconfig"
571
572 config MSPEC
573         tristate "Memory special operations driver"
574         depends on IA64
575         select IA64_UNCACHED_ALLOCATOR
576         help
577           If you have an ia64 and you want to enable memory special
578           operations support (formerly known as fetchop), say Y here,
579           otherwise say N.