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_DMA_MARK_CLEAN
12 	select ARCH_HAS_STRNCPY_FROM_USER
13 	select ARCH_HAS_STRNLEN_USER
14 	select ARCH_MIGHT_HAVE_PC_PARPORT
15 	select ARCH_MIGHT_HAVE_PC_SERIO
16 	select ACPI
17 	select ACPI_NUMA if NUMA
18 	select ARCH_ENABLE_MEMORY_HOTPLUG
19 	select ARCH_ENABLE_MEMORY_HOTREMOVE
20 	select ARCH_SUPPORTS_ACPI
21 	select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
22 	select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
23 	select FORCE_PCI
24 	select PCI_DOMAINS if PCI
25 	select PCI_MSI
26 	select PCI_SYSCALL if PCI
27 	select HAVE_ASM_MODVERSIONS
28 	select HAVE_UNSTABLE_SCHED_CLOCK
29 	select HAVE_EXIT_THREAD
30 	select HAVE_KPROBES
31 	select HAVE_KRETPROBES
32 	select HAVE_FTRACE_MCOUNT_RECORD
33 	select HAVE_DYNAMIC_FTRACE if (!ITANIUM)
34 	select HAVE_FUNCTION_TRACER
35 	select TTY
36 	select HAVE_ARCH_TRACEHOOK
37 	select HAVE_VIRT_CPU_ACCOUNTING
38 	select HUGETLB_PAGE_SIZE_VARIABLE if HUGETLB_PAGE
39 	select VIRT_TO_BUS
40 	select GENERIC_IRQ_PROBE
41 	select GENERIC_PENDING_IRQ if SMP
42 	select GENERIC_IRQ_SHOW
43 	select GENERIC_IRQ_LEGACY
44 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
45 	select GENERIC_IOMAP
46 	select GENERIC_SMP_IDLE_THREAD
47 	select ARCH_TASK_STRUCT_ON_STACK
48 	select ARCH_TASK_STRUCT_ALLOCATOR
49 	select ARCH_THREAD_STACK_ALLOCATOR
50 	select ARCH_CLOCKSOURCE_DATA
51 	select GENERIC_TIME_VSYSCALL
52 	select LEGACY_TIMER_TICK
53 	select SWIOTLB
54 	select SYSCTL_ARCH_UNALIGN_NO_WARN
55 	select HAVE_MOD_ARCH_SPECIFIC
56 	select MODULES_USE_ELF_RELA
57 	select ARCH_USE_CMPXCHG_LOCKREF
58 	select HAVE_ARCH_AUDITSYSCALL
59 	select NEED_DMA_MAP_STATE
60 	select NEED_SG_DMA_LENGTH
61 	select NUMA if !FLATMEM
62 	select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
63 	select SET_FS
64 	select ZONE_DMA32
65 	default y
66 	help
67 	  The Itanium Processor Family is Intel's 64-bit successor to
68 	  the 32-bit X86 line.  The IA-64 Linux project has a home
69 	  page at <http://www.linuxia64.org/> and a mailing list at
70 	  <linux-ia64@vger.kernel.org>.
71 
72 config 64BIT
73 	bool
74 	select ATA_NONSTANDARD if ATA
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 GENERIC_CALIBRATE_DELAY
88 	bool
89 	default y
90 
91 config HAVE_SETUP_PER_CPU_AREA
92 	def_bool y
93 
94 config DMI
95 	bool
96 	default y
97 	select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
98 
99 config EFI
100 	bool
101 	select UCS2_STRING
102 	default y
103 
104 config SCHED_OMIT_FRAME_POINTER
105 	bool
106 	default y
107 
108 config IA64_UNCACHED_ALLOCATOR
109 	bool
110 	select GENERIC_ALLOCATOR
111 
112 config ARCH_USES_PG_UNCACHED
113 	def_bool y
114 	depends on IA64_UNCACHED_ALLOCATOR
115 
116 config AUDIT_ARCH
117 	bool
118 	default y
119 
120 choice
121 	prompt "Processor type"
122 	default ITANIUM
123 
124 config ITANIUM
125 	bool "Itanium"
126 	help
127 	  Select your IA-64 processor type.  The default is Itanium.
128 	  This choice is safe for all IA-64 systems, but may not perform
129 	  optimally on systems with, say, Itanium 2 or newer processors.
130 
131 config MCKINLEY
132 	bool "Itanium 2"
133 	help
134 	  Select this to configure for an Itanium 2 (McKinley) processor.
135 
136 endchoice
137 
138 choice
139 	prompt "Kernel page size"
140 	default IA64_PAGE_SIZE_16KB
141 
142 config IA64_PAGE_SIZE_4KB
143 	bool "4KB"
144 	help
145 	  This lets you select the page size of the kernel.  For best IA-64
146 	  performance, a page size of 8KB or 16KB is recommended.  For best
147 	  IA-32 compatibility, a page size of 4KB should be selected (the vast
148 	  majority of IA-32 binaries work perfectly fine with a larger page
149 	  size).  For Itanium 2 or newer systems, a page size of 64KB can also
150 	  be selected.
151 
152 	  4KB                For best IA-32 compatibility
153 	  8KB                For best IA-64 performance
154 	  16KB               For best IA-64 performance
155 	  64KB               Requires Itanium 2 or newer processor.
156 
157 	  If you don't know what to do, choose 16KB.
158 
159 config IA64_PAGE_SIZE_8KB
160 	bool "8KB"
161 
162 config IA64_PAGE_SIZE_16KB
163 	bool "16KB"
164 
165 config IA64_PAGE_SIZE_64KB
166 	depends on !ITANIUM
167 	bool "64KB"
168 
169 endchoice
170 
171 source "kernel/Kconfig.hz"
172 
173 config IA64_BRL_EMU
174 	bool
175 	depends on ITANIUM
176 	default y
177 
178 # align cache-sensitive data to 128 bytes
179 config IA64_L1_CACHE_SHIFT
180 	int
181 	default "7" if MCKINLEY
182 	default "6" if ITANIUM
183 
184 config IA64_SGI_UV
185 	bool "SGI-UV support"
186 	help
187 	  Selecting this option will add specific support for running on SGI
188 	  UV based systems.  If you have an SGI UV system or are building a
189 	  distro kernel, select this option.
190 
191 config IA64_HP_SBA_IOMMU
192 	bool "HP SBA IOMMU support"
193 	select DMA_OPS
194 	default y
195 	help
196 	  Say Y here to add support for the SBA IOMMU found on HP zx1 and
197 	  sx1000 systems.  If you're unsure, answer Y.
198 
199 config IA64_CYCLONE
200 	bool "Cyclone (EXA) Time Source support"
201 	help
202 	  Say Y here to enable support for IBM EXA Cyclone time source.
203 	  If you're unsure, answer N.
204 
205 config FORCE_MAX_ZONEORDER
206 	int "MAX_ORDER (11 - 17)"  if !HUGETLB_PAGE
207 	range 11 17  if !HUGETLB_PAGE
208 	default "17" if HUGETLB_PAGE
209 	default "11"
210 
211 config SMP
212 	bool "Symmetric multi-processing support"
213 	help
214 	  This enables support for systems with more than one CPU. If you have
215 	  a system with only one CPU, say N.  If you have a system with more
216 	  than one CPU, say Y.
217 
218 	  If you say N here, the kernel will run on single and multiprocessor
219 	  systems, but will use only one CPU of a multiprocessor system.  If
220 	  you say Y here, the kernel will run on many, but not all,
221 	  single processor systems.  On a single processor system, the kernel
222 	  will run faster if you say N here.
223 
224 	  See also the SMP-HOWTO available at
225 	  <http://www.tldp.org/docs.html#howto>.
226 
227 	  If you don't know what to do here, say N.
228 
229 config NR_CPUS
230 	int "Maximum number of CPUs (2-4096)"
231 	range 2 4096
232 	depends on SMP
233 	default "4096"
234 	help
235 	  You should set this to the number of CPUs in your system, but
236 	  keep in mind that a kernel compiled for, e.g., 2 CPUs will boot but
237 	  only use 2 CPUs on a >2 CPU system.  Setting this to a value larger
238 	  than 64 will cause the use of a CPU mask array, causing a small
239 	  performance hit.
240 
241 config HOTPLUG_CPU
242 	bool "Support for hot-pluggable CPUs"
243 	depends on SMP
244 	default n
245 	help
246 	  Say Y here to experiment with turning CPUs off and on.  CPUs
247 	  can be controlled through /sys/devices/system/cpu/cpu#.
248 	  Say N if you want to disable CPU hotplug.
249 
250 config SCHED_SMT
251 	bool "SMT scheduler support"
252 	depends on SMP
253 	help
254 	  Improves the CPU scheduler's decision making when dealing with
255 	  Intel IA64 chips with MultiThreading at a cost of slightly increased
256 	  overhead in some places. If unsure say N here.
257 
258 config PERMIT_BSP_REMOVE
259 	bool "Support removal of Bootstrap Processor"
260 	depends on HOTPLUG_CPU
261 	default n
262 	help
263 	Say Y here if your platform SAL will support removal of BSP with HOTPLUG_CPU
264 	support.
265 
266 config FORCE_CPEI_RETARGET
267 	bool "Force assumption that CPEI can be re-targeted"
268 	depends on PERMIT_BSP_REMOVE
269 	default n
270 	help
271 	Say Y if you need to force the assumption that CPEI can be re-targeted to
272 	any cpu in the system. This hint is available via ACPI 3.0 specifications.
273 	Tiger4 systems are capable of re-directing CPEI to any CPU other than BSP.
274 	This option it useful to enable this feature on older BIOS's as well.
275 	You can also enable this by using boot command line option force_cpei=1.
276 
277 config ARCH_SELECT_MEMORY_MODEL
278 	def_bool y
279 
280 config ARCH_FLATMEM_ENABLE
281 	def_bool y
282 
283 config ARCH_SPARSEMEM_ENABLE
284 	def_bool y
285 	select SPARSEMEM_VMEMMAP_ENABLE
286 
287 config ARCH_SPARSEMEM_DEFAULT
288 	def_bool y
289 	depends on ARCH_SPARSEMEM_ENABLE
290 
291 config NUMA
292 	bool "NUMA support"
293 	depends on !FLATMEM
294 	select SMP
295 	help
296 	  Say Y to compile the kernel to support NUMA (Non-Uniform Memory
297 	  Access).  This option is for configuring high-end multiprocessor
298 	  server systems.  If in doubt, say N.
299 
300 config NODES_SHIFT
301 	int "Max num nodes shift(3-10)"
302 	range 3 10
303 	default "10"
304 	depends on NUMA
305 	help
306 	  This option specifies the maximum number of nodes in your SSI system.
307 	  MAX_NUMNODES will be 2^(This value).
308 	  If in doubt, use the default.
309 
310 config HAVE_ARCH_NODEDATA_EXTENSION
311 	def_bool y
312 	depends on NUMA
313 
314 config USE_PERCPU_NUMA_NODE_ID
315 	def_bool y
316 	depends on NUMA
317 
318 config HAVE_MEMORYLESS_NODES
319 	def_bool NUMA
320 
321 config ARCH_PROC_KCORE_TEXT
322 	def_bool y
323 	depends on PROC_KCORE
324 
325 config IA64_MCA_RECOVERY
326 	tristate "MCA recovery from errors other than TLB."
327 
328 config IA64_PALINFO
329 	tristate "/proc/pal support"
330 	help
331 	  If you say Y here, you are able to get PAL (Processor Abstraction
332 	  Layer) information in /proc/pal.  This contains useful information
333 	  about the processors in your systems, such as cache and TLB sizes
334 	  and the PAL firmware version in use.
335 
336 	  To use this option, you have to ensure that the "/proc file system
337 	  support" (CONFIG_PROC_FS) is enabled, too.
338 
339 config IA64_MC_ERR_INJECT
340 	tristate "MC error injection support"
341 	help
342 	  Adds support for MC error injection. If enabled, the kernel
343 	  will provide a sysfs interface for user applications to
344 	  call MC error injection PAL procedures to inject various errors.
345 	  This is a useful tool for MCA testing.
346 
347 	  If you're unsure, do not select this option.
348 
349 config IA64_ESI
350 	bool "ESI (Extensible SAL Interface) support"
351 	help
352 	  If you say Y here, support is built into the kernel to
353 	  make ESI calls.  ESI calls are used to support vendor-specific
354 	  firmware extensions, such as the ability to inject memory-errors
355 	  for test-purposes.  If you're unsure, say N.
356 
357 config IA64_HP_AML_NFW
358 	bool "Support ACPI AML calls to native firmware"
359 	help
360 	  This driver installs a global ACPI Operation Region handler for
361 	  region 0xA1.  AML methods can use this OpRegion to call arbitrary
362 	  native firmware functions.  The driver installs the OpRegion
363 	  handler if there is an HPQ5001 device or if the user supplies
364 	  the "force" module parameter, e.g., with the "aml_nfw.force"
365 	  kernel command line option.
366 
367 config KEXEC
368 	bool "kexec system call"
369 	depends on !SMP || HOTPLUG_CPU
370 	select KEXEC_CORE
371 	help
372 	  kexec is a system call that implements the ability to shutdown your
373 	  current kernel, and to start another kernel.  It is like a reboot
374 	  but it is independent of the system firmware.   And like a reboot
375 	  you can start any kernel with it, not just Linux.
376 
377 	  The name comes from the similarity to the exec system call.
378 
379 	  It is an ongoing process to be certain the hardware in a machine
380 	  is properly shutdown, so do not be surprised if this code does not
381 	  initially work for you.  As of this writing the exact hardware
382 	  interface is strongly in flux, so no good recommendation can be
383 	  made.
384 
385 config CRASH_DUMP
386 	  bool "kernel crash dumps"
387 	  depends on IA64_MCA_RECOVERY && (!SMP || HOTPLUG_CPU)
388 	  help
389 	    Generate crash dump after being started by kexec.
390 
391 endmenu
392 
393 menu "Power management and ACPI options"
394 
395 source "kernel/power/Kconfig"
396 
397 source "drivers/acpi/Kconfig"
398 
399 if PM
400 menu "CPU Frequency scaling"
401 source "drivers/cpufreq/Kconfig"
402 endmenu
403 endif
404 
405 endmenu
406 
407 config MSPEC
408 	tristate "Memory special operations driver"
409 	depends on IA64
410 	select IA64_UNCACHED_ALLOCATOR
411 	help
412 	  If you have an ia64 and you want to enable memory special
413 	  operations support (formerly known as fetchop), say Y here,
414 	  otherwise say N.
415