1# SPDX-License-Identifier: GPL-2.0
2config ALPHA
3	bool
4	default y
5	select ARCH_32BIT_USTAT_F_TINODE
6	select ARCH_HAS_CURRENT_STACK_POINTER
7	select ARCH_HAS_DMA_OPS if PCI
8	select ARCH_MIGHT_HAVE_PC_PARPORT
9	select ARCH_MIGHT_HAVE_PC_SERIO
10	select ARCH_NO_PREEMPT
11	select ARCH_NO_SG_CHAIN
12	select ARCH_USE_CMPXCHG_LOCKREF
13	select FORCE_PCI
14	select PCI_DOMAINS if PCI
15	select PCI_SYSCALL if PCI
16	select HAVE_ASM_MODVERSIONS
17	select HAVE_PAGE_SIZE_8KB
18	select HAVE_PCSPKR_PLATFORM
19	select HAVE_PERF_EVENTS
20	select NEED_DMA_MAP_STATE
21	select NEED_SG_DMA_LENGTH
22	select GENERIC_IRQ_PROBE
23	select GENERIC_PCI_IOMAP
24	select AUTO_IRQ_AFFINITY if SMP
25	select GENERIC_IRQ_SHOW
26	select ARCH_WANT_IPC_PARSE_VERSION
27	select ARCH_HAVE_NMI_SAFE_CMPXCHG
28	select AUDIT_ARCH
29	select GENERIC_CPU_VULNERABILITIES
30	select GENERIC_SMP_IDLE_THREAD
31	select HAS_IOPORT
32	select HAVE_ARCH_AUDITSYSCALL
33	select HAVE_MOD_ARCH_SPECIFIC
34	select LOCK_MM_AND_FIND_VMA
35	select MODULES_USE_ELF_RELA
36	select ODD_RT_SIGACTION
37	select OLD_SIGSUSPEND
38	select CPU_NO_EFFICIENT_FFS if !ALPHA_EV67
39	select MMU_GATHER_NO_RANGE
40	select SPARSEMEM_EXTREME if SPARSEMEM
41	select ZONE_DMA
42	help
43	  The Alpha is a 64-bit general-purpose processor designed and
44	  marketed by the Digital Equipment Corporation of blessed memory,
45	  now Hewlett-Packard.  The Alpha Linux project has a home page at
46	  <http://www.alphalinux.org/>.
47
48config 64BIT
49	def_bool y
50
51config MMU
52	bool
53	default y
54
55config ARCH_HAS_ILOG2_U32
56	bool
57	default n
58
59config ARCH_HAS_ILOG2_U64
60	bool
61	default n
62
63config GENERIC_CALIBRATE_DELAY
64	bool
65	default y
66
67config GENERIC_ISA_DMA
68	bool
69	default y
70
71config PGTABLE_LEVELS
72	int
73	default 3
74
75config AUDIT_ARCH
76	bool
77
78menu "System setup"
79
80choice
81	prompt "Alpha system type"
82	default ALPHA_GENERIC
83	help
84	  This is the system type of your hardware.  A "generic" kernel will
85	  run on any supported Alpha system. However, if you configure a
86	  kernel for your specific system, it will be faster and smaller.
87
88	  To find out what type of Alpha system you have, you may want to
89	  check out the Linux/Alpha FAQ, accessible on the WWW from
90	  <http://www.alphalinux.org/>. In summary:
91
92	  Alcor/Alpha-XLT     AS 600, AS 500, XL-300, XL-366
93	  DP264               DP264 / DS20 / ES40 / DS10 / DS10L
94	  LX164               AlphaPC164-LX
95	  Miata               Personal Workstation 433/500/600 a/au
96	  Marvel              AlphaServer ES47 / ES80 / GS1280
97	  Mikasa              AS 1000
98	  Noritake            AS 1000A, AS 600A, AS 800
99	  PC164               AlphaPC164
100	  Rawhide             AS 1200, AS 4000, AS 4100
101	  Ruffian             RPX164-2, AlphaPC164-UX, AlphaPC164-BX
102	  SX164               AlphaPC164-SX
103	  Sable               AS 2000, AS 2100
104	  Shark               DS 20L
105	  Takara              Takara (OEM)
106	  Titan               AlphaServer ES45 / DS25 / DS15
107	  Wildfire            AlphaServer GS 40/80/160/320
108
109	  If you don't know what to do, choose "generic".
110
111config ALPHA_GENERIC
112	bool "Generic"
113	depends on TTY
114	select HAVE_EISA
115	help
116	  A generic kernel will run on all supported Alpha hardware.
117
118config ALPHA_ALCOR
119	bool "Alcor/Alpha-XLT"
120	select HAVE_EISA
121	help
122	  For systems using the Digital ALCOR chipset: 5 chips (4, 64-bit data
123	  slices (Data Switch, DSW) - 208-pin PQFP and 1 control (Control, I/O
124	  Address, CIA) - a 383 pin plastic PGA).  It provides a DRAM
125	  controller (256-bit memory bus) and a PCI interface.  It also does
126	  all the work required to support an external Bcache and to maintain
127	  memory coherence when a PCI device DMAs into (or out of) memory.
128
129config ALPHA_DP264
130	bool "DP264"
131	help
132	  Various 21264 systems with the tsunami core logic chipset.
133	  API Networks: 264DP, UP2000(+), CS20;
134	  Compaq: DS10(E,L), XP900, XP1000, DS20(E), ES40.
135
136config ALPHA_EIGER
137	bool "Eiger"
138	help
139	  Apparently an obscure OEM single-board computer based on the
140	  Typhoon/Tsunami chipset family. Information on it is scanty.
141
142config ALPHA_LX164
143	bool "LX164"
144	help
145	  A technical overview of this board is available at
146	  <http://www.unix-ag.org/Linux-Alpha/Architectures/LX164.html>.
147
148config ALPHA_MARVEL
149	bool "Marvel"
150	help
151	  AlphaServer ES47 / ES80 / GS1280 based on EV7.
152
153config ALPHA_MIATA
154	bool "Miata"
155	select HAVE_EISA
156	help
157	  The Digital PersonalWorkStation (PWS 433a, 433au, 500a, 500au, 600a,
158	  or 600au).
159
160config ALPHA_MIKASA
161	bool "Mikasa"
162	help
163	  AlphaServer 1000-based Alpha systems.
164
165config ALPHA_NAUTILUS
166	bool "Nautilus"
167	help
168	  Alpha systems based on the AMD 751 & ALI 1543C chipsets.
169
170config ALPHA_NORITAKE
171	bool "Noritake"
172	select HAVE_EISA
173	help
174	  AlphaServer 1000A, AlphaServer 600A, and AlphaServer 800-based
175	  systems.
176
177config ALPHA_PC164
178	bool "PC164"
179
180config ALPHA_RAWHIDE
181	bool "Rawhide"
182	select HAVE_EISA
183	help
184	  AlphaServer 1200, AlphaServer 4000 and AlphaServer 4100 machines.
185	  See HOWTO at
186	  <http://www.alphalinux.org/docs/rawhide/4100_install.shtml>.
187
188config ALPHA_RUFFIAN
189	bool "Ruffian"
190	help
191	  Samsung APC164UX.  There is a page on known problems and workarounds
192	  at <http://www.alphalinux.org/faq/FAQ-11.html>.
193
194config ALPHA_RX164
195	bool "RX164"
196
197config ALPHA_SX164
198	bool "SX164"
199
200config ALPHA_SABLE
201	bool "Sable"
202	select HAVE_EISA
203	help
204	  Digital AlphaServer 2000 and 2100-based systems.
205
206config ALPHA_SHARK
207	bool "Shark"
208
209config ALPHA_TAKARA
210	bool "Takara"
211	help
212	  Alpha 11164-based OEM single-board computer.
213
214config ALPHA_TITAN
215	bool "Titan"
216	help
217	  AlphaServer ES45/DS25 SMP based on EV68 and Titan chipset.
218
219config ALPHA_WILDFIRE
220	bool "Wildfire"
221	help
222	  AlphaServer GS 40/80/160/320 SMP based on the EV67 core.
223
224endchoice
225
226# clear all implied options (don't want default values for those):
227# Most of these machines have ISA slots; not exactly sure which don't,
228# and this doesn't activate hordes of code, so do it always.
229config ISA
230	bool
231	default y
232	help
233	  Find out whether you have ISA slots on your motherboard.  ISA is the
234	  name of a bus system, i.e. the way the CPU talks to the other stuff
235	  inside your box.  Other bus systems are PCI, EISA, MicroChannel
236	  (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
237	  newer boards don't support it.  If you have ISA, say Y, otherwise N.
238
239config ISA_DMA_API
240	bool
241	default y
242
243config ALPHA_CIA
244	bool
245	depends on ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_RUFFIAN || ALPHA_NORITAKE || ALPHA_MIKASA || ALPHA_PC164 || ALPHA_TAKARA || ALPHA_ALCOR
246	default y
247
248config ALPHA_EV56
249	bool
250	default y if ALPHA_ALCOR || ALPHA_RX164 || ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_RUFFIAN || ALPHA_PC164 || ALPHA_TAKARA || ALPHA_NORITAKE || ALPHA_MIKASA || ALPHA_RAWHIDE || ALPHA_SABLE
251
252config ALPHA_T2
253	bool
254	depends on ALPHA_SABLE
255	default y
256
257config ALPHA_PYXIS
258	bool
259	depends on ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_RUFFIAN
260	default y
261
262config ALPHA_EV6
263	bool
264	depends on ALPHA_NAUTILUS || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_SHARK || ALPHA_DP264 || ALPHA_EIGER || ALPHA_MARVEL
265	default y
266
267config ALPHA_TSUNAMI
268	bool
269	depends on ALPHA_SHARK || ALPHA_DP264 || ALPHA_EIGER
270	default y
271
272config ALPHA_EV67
273	bool "EV67 (or later) CPU (speed > 600MHz)?" if ALPHA_DP264 || ALPHA_EIGER
274	default y if ALPHA_NAUTILUS || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_SHARK || ALPHA_MARVEL
275	help
276	  Is this a machine based on the EV67 core?  If in doubt, select N here
277	  and the machine will be treated as an EV6.
278
279config ALPHA_MCPCIA
280	bool
281	depends on ALPHA_RAWHIDE
282	default y
283
284config ALPHA_POLARIS
285	bool
286	depends on ALPHA_RX164
287	default y
288
289config ALPHA_IRONGATE
290	bool
291	depends on ALPHA_NAUTILUS
292	default y
293
294config GENERIC_HWEIGHT
295	bool
296	default y if !ALPHA_EV67
297
298config ALPHA_BROKEN_IRQ_MASK
299	bool
300	depends on ALPHA_GENERIC || ALPHA_PC164
301	default y
302
303config VGA_HOSE
304	bool
305	depends on VGA_CONSOLE && (ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL || ALPHA_TSUNAMI)
306	default y
307	help
308	  Support VGA on an arbitrary hose; needed for several platforms
309	  which always have multiple hoses, and whose consoles support it.
310
311
312config ALPHA_QEMU
313	bool "Run under QEMU emulation"
314	depends on !ALPHA_GENERIC
315	help
316	  Assume the presence of special features supported by QEMU PALcode
317	  that reduce the overhead of system emulation.
318
319	  Generic kernels will auto-detect QEMU.  But when building a
320	  system-specific kernel, the assumption is that we want to
321	  eliminate as many runtime tests as possible.
322
323	  If unsure, say N.
324
325
326config ALPHA_SRM
327	bool "Use SRM as bootloader" if ALPHA_PC164 || ALPHA_TAKARA || ALPHA_ALCOR || ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_NAUTILUS
328	depends on TTY
329	default y if ALPHA_MIKASA || ALPHA_SABLE || ALPHA_NORITAKE || ALPHA_DP264 || ALPHA_RAWHIDE || ALPHA_EIGER || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_SHARK || ALPHA_MARVEL
330	help
331	  There are two different types of booting firmware on Alphas: SRM,
332	  which is command line driven, and ARC, which uses menus and arrow
333	  keys. Details about the Linux/Alpha booting process are contained in
334	  the Linux/Alpha FAQ, accessible on the WWW from
335	  <http://www.alphalinux.org/>.
336
337	  The usual way to load Linux on an Alpha machine is to use MILO
338	  (a bootloader that lets you pass command line parameters to the
339	  kernel just like lilo does for the x86 architecture) which can be
340	  loaded either from ARC or can be installed directly as a permanent
341	  firmware replacement from floppy (which requires changing a certain
342	  jumper on the motherboard). If you want to do either of these, say N
343	  here. If MILO doesn't work on your system (true for Jensen
344	  motherboards), you can bypass it altogether and boot Linux directly
345	  from an SRM console; say Y here in order to do that. Note that you
346	  won't be able to boot from an IDE disk using SRM.
347
348	  If unsure, say N.
349
350config ARCH_MAY_HAVE_PC_FDC
351	def_bool y
352
353config SMP
354	bool "Symmetric multi-processing support"
355	depends on ALPHA_SABLE || ALPHA_RAWHIDE || ALPHA_DP264 || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_GENERIC || ALPHA_SHARK || ALPHA_MARVEL
356	help
357	  This enables support for systems with more than one CPU. If you have
358	  a system with only one CPU, say N. If you have a system with more
359	  than one CPU, say Y.
360
361	  If you say N here, the kernel will run on uni- and multiprocessor
362	  machines, but will use only one CPU of a multiprocessor machine. If
363	  you say Y here, the kernel will run on many, but not all,
364	  uniprocessor machines. On a uniprocessor machine, the kernel
365	  will run faster if you say N here.
366
367	  See also the SMP-HOWTO available at
368	  <https://www.tldp.org/docs.html#howto>.
369
370	  If you don't know what to do here, say N.
371
372config NR_CPUS
373	int "Maximum number of CPUs (2-32)"
374	range 2 32
375	depends on SMP
376	default "32" if ALPHA_GENERIC || ALPHA_MARVEL
377	default "4" if !ALPHA_GENERIC && !ALPHA_MARVEL
378	help
379	  MARVEL support can handle a maximum of 32 CPUs, all the others
380	  with working support have a maximum of 4 CPUs.
381
382config ARCH_SPARSEMEM_ENABLE
383	bool "Sparse Memory Support"
384	help
385	  Say Y to support efficient handling of discontiguous physical memory,
386	  for systems that have huge holes in the physical address space.
387
388config ALPHA_WTINT
389	bool "Use WTINT" if ALPHA_SRM || ALPHA_GENERIC
390	default y if ALPHA_QEMU
391	default n if ALPHA_EV56
392	default n if !ALPHA_SRM && !ALPHA_GENERIC
393	default y if SMP
394	help
395	  The Wait for Interrupt (WTINT) PALcall attempts to place the CPU
396	  to sleep until the next interrupt.  This may reduce the power
397	  consumed, and the heat produced by the computer.  However, it has
398	  the side effect of making the cycle counter unreliable as a timing
399	  device across the sleep.
400
401	  For emulation under QEMU, definitely say Y here, as we have other
402	  mechanisms for measuring time than the cycle counter.
403
404	  For EV4 (but not LCA), EV5 and EV56 systems, or for systems running
405	  MILO, sleep mode is not supported so you might as well say N here.
406
407	  For SMP systems we cannot use the cycle counter for timing anyway,
408	  so you might as well say Y here.
409
410	  If unsure, say N.
411
412# LARGE_VMALLOC is racy, if you *really* need it then fix it first
413config ALPHA_LARGE_VMALLOC
414	bool
415	help
416	  Process creation and other aspects of virtual memory management can
417	  be streamlined if we restrict the kernel to one PGD for all vmalloc
418	  allocations.  This equates to about 8GB.
419
420	  Under normal circumstances, this is so far and above what is needed
421	  as to be laughable.  However, there are certain applications (such
422	  as benchmark-grade in-kernel web serving) that can make use of as
423	  much vmalloc space as is available.
424
425	  Say N unless you know you need gobs and gobs of vmalloc space.
426
427config VERBOSE_MCHECK
428	bool "Verbose Machine Checks"
429
430config VERBOSE_MCHECK_ON
431	int "Verbose Printing Mode (0=off, 1=on, 2=all)"
432	depends on VERBOSE_MCHECK
433	default 1
434	help
435	  This option allows the default printing mode to be set, and then
436	  possibly overridden by a boot command argument.
437
438	  For example, if one wanted the option of printing verbose
439	  machine checks, but wanted the default to be as if verbose
440	  machine check printing was turned off, then one would choose
441	  the printing mode to be 0. Then, upon reboot, one could add
442	  the boot command line "verbose_mcheck=1" to get the normal
443	  verbose machine check printing, or "verbose_mcheck=2" to get
444	  the maximum information available.
445
446	  Take the default (1) unless you want more control or more info.
447
448choice
449	prompt "Timer interrupt frequency (HZ)?"
450	default HZ_128 if ALPHA_QEMU
451	default HZ_1200 if ALPHA_RAWHIDE
452	default HZ_1024
453	help
454	  The frequency at which timer interrupts occur.  A high frequency
455	  minimizes latency, whereas a low frequency minimizes overhead of
456	  process accounting.  The later effect is especially significant
457	  when being run under QEMU.
458
459	  Note that some Alpha hardware cannot change the interrupt frequency
460	  of the timer.  If unsure, say 1024 (or 1200 for Rawhide).
461
462	config HZ_32
463		bool "32 Hz"
464	config HZ_64
465		bool "64 Hz"
466	config HZ_128
467		bool "128 Hz"
468	config HZ_256
469		bool "256 Hz"
470	config HZ_1024
471		bool "1024 Hz"
472	config HZ_1200
473		bool "1200 Hz"
474endchoice
475
476config HZ
477	int
478	default 32 if HZ_32
479	default 64 if HZ_64
480	default 128 if HZ_128
481	default 256 if HZ_256
482	default 1200 if HZ_1200
483	default 1024
484
485config SRM_ENV
486	tristate "SRM environment through procfs"
487	depends on PROC_FS
488	help
489	  If you enable this option, a subdirectory inside /proc called
490	  /proc/srm_environment will give you access to the all important
491	  SRM environment variables (those which have a name) and also
492	  to all others (by their internal number).
493
494	  SRM is something like a BIOS for Alpha machines. There are some
495	  other such BIOSes, like AlphaBIOS, which this driver cannot
496	  support (hey, that's not SRM!).
497
498	  Despite the fact that this driver doesn't work on all Alphas (but
499	  only on those which have SRM as their firmware), it's save to
500	  build it even if your particular machine doesn't know about SRM
501	  (or if you intend to compile a generic kernel). It will simply
502	  not create those subdirectory in /proc (and give you some warning,
503	  of course).
504
505	  This driver is also available as a module and will be called
506	  srm_env then.
507
508endmenu
509
510# DUMMY_CONSOLE may be defined in drivers/video/console/Kconfig
511# but we also need it if VGA_HOSE is set
512config DUMMY_CONSOLE
513	bool
514	depends on VGA_HOSE
515	default y
516