xref: /openbmc/linux/arch/s390/Kconfig (revision 6197e5b7)
1# SPDX-License-Identifier: GPL-2.0
2config MMU
3	def_bool y
4
5config ZONE_DMA
6	def_bool y
7
8config CPU_BIG_ENDIAN
9	def_bool y
10
11config LOCKDEP_SUPPORT
12	def_bool y
13
14config STACKTRACE_SUPPORT
15	def_bool y
16
17config ARCH_HAS_ILOG2_U32
18	def_bool n
19
20config ARCH_HAS_ILOG2_U64
21	def_bool n
22
23config GENERIC_HWEIGHT
24	def_bool y
25
26config GENERIC_BUG
27	def_bool y if BUG
28
29config GENERIC_BUG_RELATIVE_POINTERS
30	def_bool y
31
32config GENERIC_LOCKBREAK
33	def_bool y if PREEMPTION
34
35config PGSTE
36	def_bool y if KVM
37
38config AUDIT_ARCH
39	def_bool y
40
41config NO_IOPORT_MAP
42	def_bool y
43
44config PCI_QUIRKS
45	def_bool n
46
47config ARCH_SUPPORTS_UPROBES
48	def_bool y
49
50config KASAN_SHADOW_OFFSET
51	hex
52	depends on KASAN
53	default 0x18000000000000
54
55config S390
56	def_bool y
57	#
58	# Note: keep this list sorted alphabetically
59	#
60	imply IMA_SECURE_AND_OR_TRUSTED_BOOT
61	select ARCH_BINFMT_ELF_STATE
62	select ARCH_HAS_DEBUG_VM_PGTABLE
63	select ARCH_HAS_DEBUG_WX
64	select ARCH_HAS_DEVMEM_IS_ALLOWED
65	select ARCH_HAS_ELF_RANDOMIZE
66	select ARCH_HAS_FORCE_DMA_UNENCRYPTED
67	select ARCH_HAS_FORTIFY_SOURCE
68	select ARCH_HAS_GCOV_PROFILE_ALL
69	select ARCH_HAS_GIGANTIC_PAGE
70	select ARCH_HAS_KCOV
71	select ARCH_HAS_MEM_ENCRYPT
72	select ARCH_HAS_PTE_SPECIAL
73	select ARCH_HAS_SCALED_CPUTIME
74	select ARCH_HAS_SET_MEMORY
75	select ARCH_HAS_STRICT_KERNEL_RWX
76	select ARCH_HAS_STRICT_MODULE_RWX
77	select ARCH_HAS_SYSCALL_WRAPPER
78	select ARCH_HAS_UBSAN_SANITIZE_ALL
79	select ARCH_HAS_VDSO_DATA
80	select ARCH_HAVE_NMI_SAFE_CMPXCHG
81	select ARCH_INLINE_READ_LOCK
82	select ARCH_INLINE_READ_LOCK_BH
83	select ARCH_INLINE_READ_LOCK_IRQ
84	select ARCH_INLINE_READ_LOCK_IRQSAVE
85	select ARCH_INLINE_READ_TRYLOCK
86	select ARCH_INLINE_READ_UNLOCK
87	select ARCH_INLINE_READ_UNLOCK_BH
88	select ARCH_INLINE_READ_UNLOCK_IRQ
89	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE
90	select ARCH_INLINE_SPIN_LOCK
91	select ARCH_INLINE_SPIN_LOCK_BH
92	select ARCH_INLINE_SPIN_LOCK_IRQ
93	select ARCH_INLINE_SPIN_LOCK_IRQSAVE
94	select ARCH_INLINE_SPIN_TRYLOCK
95	select ARCH_INLINE_SPIN_TRYLOCK_BH
96	select ARCH_INLINE_SPIN_UNLOCK
97	select ARCH_INLINE_SPIN_UNLOCK_BH
98	select ARCH_INLINE_SPIN_UNLOCK_IRQ
99	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
100	select ARCH_INLINE_WRITE_LOCK
101	select ARCH_INLINE_WRITE_LOCK_BH
102	select ARCH_INLINE_WRITE_LOCK_IRQ
103	select ARCH_INLINE_WRITE_LOCK_IRQSAVE
104	select ARCH_INLINE_WRITE_TRYLOCK
105	select ARCH_INLINE_WRITE_UNLOCK
106	select ARCH_INLINE_WRITE_UNLOCK_BH
107	select ARCH_INLINE_WRITE_UNLOCK_IRQ
108	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
109	select ARCH_STACKWALK
110	select ARCH_SUPPORTS_ATOMIC_RMW
111	select ARCH_SUPPORTS_DEBUG_PAGEALLOC
112	select ARCH_SUPPORTS_NUMA_BALANCING
113	select ARCH_USE_BUILTIN_BSWAP
114	select ARCH_USE_CMPXCHG_LOCKREF
115	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
116	select ARCH_WANT_DEFAULT_BPF_JIT
117	select ARCH_WANT_IPC_PARSE_VERSION
118	select BUILDTIME_TABLE_SORT
119	select CLONE_BACKWARDS2
120	select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES
121	select DMA_OPS if PCI
122	select DYNAMIC_FTRACE if FUNCTION_TRACER
123	select GENERIC_ALLOCATOR
124	select GENERIC_CPU_AUTOPROBE
125	select GENERIC_CPU_VULNERABILITIES
126	select GENERIC_FIND_FIRST_BIT
127	select GENERIC_GETTIMEOFDAY
128	select GENERIC_PTDUMP
129	select GENERIC_SMP_IDLE_THREAD
130	select GENERIC_TIME_VSYSCALL
131	select HAVE_ALIGNED_STRUCT_PAGE if SLUB
132	select HAVE_ARCH_AUDITSYSCALL
133	select HAVE_ARCH_JUMP_LABEL
134	select HAVE_ARCH_JUMP_LABEL_RELATIVE
135	select HAVE_ARCH_KASAN
136	select HAVE_ARCH_KASAN_VMALLOC
137	select HAVE_ARCH_SECCOMP_FILTER
138	select HAVE_ARCH_SOFT_DIRTY
139	select HAVE_ARCH_TRACEHOOK
140	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
141	select HAVE_ARCH_VMAP_STACK
142	select HAVE_ASM_MODVERSIONS
143	select HAVE_CMPXCHG_DOUBLE
144	select HAVE_CMPXCHG_LOCAL
145	select HAVE_DEBUG_KMEMLEAK
146	select HAVE_DMA_CONTIGUOUS
147	select HAVE_DYNAMIC_FTRACE
148	select HAVE_DYNAMIC_FTRACE_WITH_REGS
149	select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
150	select HAVE_EFFICIENT_UNALIGNED_ACCESS
151	select HAVE_FAST_GUP
152	select HAVE_FENTRY
153	select HAVE_FTRACE_MCOUNT_RECORD
154	select HAVE_FUNCTION_ERROR_INJECTION
155	select HAVE_FUNCTION_GRAPH_TRACER
156	select HAVE_FUNCTION_TRACER
157	select HAVE_FUTEX_CMPXCHG if FUTEX
158	select HAVE_GCC_PLUGINS
159	select HAVE_GENERIC_VDSO
160	select HAVE_IRQ_EXIT_ON_IRQ_STACK
161	select HAVE_KERNEL_BZIP2
162	select HAVE_KERNEL_GZIP
163	select HAVE_KERNEL_LZ4
164	select HAVE_KERNEL_LZMA
165	select HAVE_KERNEL_LZO
166	select HAVE_KERNEL_UNCOMPRESSED
167	select HAVE_KERNEL_XZ
168	select HAVE_KPROBES
169	select HAVE_KPROBES_ON_FTRACE
170	select HAVE_KRETPROBES
171	select HAVE_KVM
172	select HAVE_LIVEPATCH
173	select HAVE_MEMBLOCK_PHYS_MAP
174	select HAVE_MOD_ARCH_SPECIFIC
175	select HAVE_NMI
176	select HAVE_NOP_MCOUNT
177	select HAVE_PCI
178	select HAVE_PERF_EVENTS
179	select HAVE_PERF_REGS
180	select HAVE_PERF_USER_STACK_DUMP
181	select HAVE_REGS_AND_STACK_ACCESS_API
182	select HAVE_RELIABLE_STACKTRACE
183	select HAVE_RSEQ
184	select HAVE_SYSCALL_TRACEPOINTS
185	select HAVE_VIRT_CPU_ACCOUNTING
186	select HAVE_VIRT_CPU_ACCOUNTING_IDLE
187	select IOMMU_HELPER		if PCI
188	select IOMMU_SUPPORT		if PCI
189	select MMU_GATHER_NO_GATHER
190	select MMU_GATHER_RCU_TABLE_FREE
191	select MODULES_USE_ELF_RELA
192	select NEED_DMA_MAP_STATE	if PCI
193	select NEED_SG_DMA_LENGTH	if PCI
194	select OLD_SIGACTION
195	select OLD_SIGSUSPEND3
196	select PCI_DOMAINS		if PCI
197	select PCI_MSI			if PCI
198	select PCI_MSI_ARCH_FALLBACKS	if PCI_MSI
199	select SPARSE_IRQ
200	select SWIOTLB
201	select SYSCTL_EXCEPTION_TRACE
202	select THREAD_INFO_IN_TASK
203	select TTY
204	select VIRT_CPU_ACCOUNTING
205	# Note: keep the above list sorted alphabetically
206
207config SCHED_OMIT_FRAME_POINTER
208	def_bool y
209
210config PGTABLE_LEVELS
211	int
212	default 5
213
214source "kernel/livepatch/Kconfig"
215
216menu "Processor type and features"
217
218config HAVE_MARCH_Z900_FEATURES
219	def_bool n
220
221config HAVE_MARCH_Z990_FEATURES
222	def_bool n
223	select HAVE_MARCH_Z900_FEATURES
224
225config HAVE_MARCH_Z9_109_FEATURES
226	def_bool n
227	select HAVE_MARCH_Z990_FEATURES
228
229config HAVE_MARCH_Z10_FEATURES
230	def_bool n
231	select HAVE_MARCH_Z9_109_FEATURES
232
233config HAVE_MARCH_Z196_FEATURES
234	def_bool n
235	select HAVE_MARCH_Z10_FEATURES
236
237config HAVE_MARCH_ZEC12_FEATURES
238	def_bool n
239	select HAVE_MARCH_Z196_FEATURES
240
241config HAVE_MARCH_Z13_FEATURES
242	def_bool n
243	select HAVE_MARCH_ZEC12_FEATURES
244
245config HAVE_MARCH_Z14_FEATURES
246	def_bool n
247	select HAVE_MARCH_Z13_FEATURES
248
249config HAVE_MARCH_Z15_FEATURES
250	def_bool n
251	select HAVE_MARCH_Z14_FEATURES
252
253choice
254	prompt "Processor type"
255	default MARCH_Z196
256
257config MARCH_Z900
258	bool "IBM zSeries model z800 and z900"
259	select HAVE_MARCH_Z900_FEATURES
260	depends on $(cc-option,-march=z900)
261	help
262	  Select this to enable optimizations for model z800/z900 (2064 and
263	  2066 series). This will enable some optimizations that are not
264	  available on older ESA/390 (31 Bit) only CPUs.
265
266config MARCH_Z990
267	bool "IBM zSeries model z890 and z990"
268	select HAVE_MARCH_Z990_FEATURES
269	depends on $(cc-option,-march=z990)
270	help
271	  Select this to enable optimizations for model z890/z990 (2084 and
272	  2086 series). The kernel will be slightly faster but will not work
273	  on older machines.
274
275config MARCH_Z9_109
276	bool "IBM System z9"
277	select HAVE_MARCH_Z9_109_FEATURES
278	depends on $(cc-option,-march=z9-109)
279	help
280	  Select this to enable optimizations for IBM System z9 (2094 and
281	  2096 series). The kernel will be slightly faster but will not work
282	  on older machines.
283
284config MARCH_Z10
285	bool "IBM System z10"
286	select HAVE_MARCH_Z10_FEATURES
287	depends on $(cc-option,-march=z10)
288	help
289	  Select this to enable optimizations for IBM System z10 (2097 and
290	  2098 series). The kernel will be slightly faster but will not work
291	  on older machines.
292
293config MARCH_Z196
294	bool "IBM zEnterprise 114 and 196"
295	select HAVE_MARCH_Z196_FEATURES
296	depends on $(cc-option,-march=z196)
297	help
298	  Select this to enable optimizations for IBM zEnterprise 114 and 196
299	  (2818 and 2817 series). The kernel will be slightly faster but will
300	  not work on older machines.
301
302config MARCH_ZEC12
303	bool "IBM zBC12 and zEC12"
304	select HAVE_MARCH_ZEC12_FEATURES
305	depends on $(cc-option,-march=zEC12)
306	help
307	  Select this to enable optimizations for IBM zBC12 and zEC12 (2828 and
308	  2827 series). The kernel will be slightly faster but will not work on
309	  older machines.
310
311config MARCH_Z13
312	bool "IBM z13s and z13"
313	select HAVE_MARCH_Z13_FEATURES
314	depends on $(cc-option,-march=z13)
315	help
316	  Select this to enable optimizations for IBM z13s and z13 (2965 and
317	  2964 series). The kernel will be slightly faster but will not work on
318	  older machines.
319
320config MARCH_Z14
321	bool "IBM z14 ZR1 and z14"
322	select HAVE_MARCH_Z14_FEATURES
323	depends on $(cc-option,-march=z14)
324	help
325	  Select this to enable optimizations for IBM z14 ZR1 and z14 (3907
326	  and 3906 series). The kernel will be slightly faster but will not
327	  work on older machines.
328
329config MARCH_Z15
330	bool "IBM z15"
331	select HAVE_MARCH_Z15_FEATURES
332	depends on $(cc-option,-march=z15)
333	help
334	  Select this to enable optimizations for IBM z15 (8562
335	  and 8561 series). The kernel will be slightly faster but will not
336	  work on older machines.
337
338endchoice
339
340config MARCH_Z900_TUNE
341	def_bool TUNE_Z900 || MARCH_Z900 && TUNE_DEFAULT
342
343config MARCH_Z990_TUNE
344	def_bool TUNE_Z990 || MARCH_Z990 && TUNE_DEFAULT
345
346config MARCH_Z9_109_TUNE
347	def_bool TUNE_Z9_109 || MARCH_Z9_109 && TUNE_DEFAULT
348
349config MARCH_Z10_TUNE
350	def_bool TUNE_Z10 || MARCH_Z10 && TUNE_DEFAULT
351
352config MARCH_Z196_TUNE
353	def_bool TUNE_Z196 || MARCH_Z196 && TUNE_DEFAULT
354
355config MARCH_ZEC12_TUNE
356	def_bool TUNE_ZEC12 || MARCH_ZEC12 && TUNE_DEFAULT
357
358config MARCH_Z13_TUNE
359	def_bool TUNE_Z13 || MARCH_Z13 && TUNE_DEFAULT
360
361config MARCH_Z14_TUNE
362	def_bool TUNE_Z14 || MARCH_Z14 && TUNE_DEFAULT
363
364config MARCH_Z15_TUNE
365	def_bool TUNE_Z15 || MARCH_Z15 && TUNE_DEFAULT
366
367choice
368	prompt "Tune code generation"
369	default TUNE_DEFAULT
370	help
371	  Cause the compiler to tune (-mtune) the generated code for a machine.
372	  This will make the code run faster on the selected machine but
373	  somewhat slower on other machines.
374	  This option only changes how the compiler emits instructions, not the
375	  selection of instructions itself, so the resulting kernel will run on
376	  all other machines.
377
378config TUNE_DEFAULT
379	bool "Default"
380	help
381	  Tune the generated code for the target processor for which the kernel
382	  will be compiled.
383
384config TUNE_Z900
385	bool "IBM zSeries model z800 and z900"
386	depends on $(cc-option,-mtune=z900)
387
388config TUNE_Z990
389	bool "IBM zSeries model z890 and z990"
390	depends on $(cc-option,-mtune=z990)
391
392config TUNE_Z9_109
393	bool "IBM System z9"
394	depends on $(cc-option,-mtune=z9-109)
395
396config TUNE_Z10
397	bool "IBM System z10"
398	depends on $(cc-option,-mtune=z10)
399
400config TUNE_Z196
401	bool "IBM zEnterprise 114 and 196"
402	depends on $(cc-option,-mtune=z196)
403
404config TUNE_ZEC12
405	bool "IBM zBC12 and zEC12"
406	depends on $(cc-option,-mtune=zEC12)
407
408config TUNE_Z13
409	bool "IBM z13s and z13"
410	depends on $(cc-option,-mtune=z13)
411
412config TUNE_Z14
413	bool "IBM z14 ZR1 and z14"
414	depends on $(cc-option,-mtune=z14)
415
416config TUNE_Z15
417	bool "IBM z15"
418	depends on $(cc-option,-mtune=z15)
419
420endchoice
421
422config 64BIT
423	def_bool y
424
425config COMPAT
426	def_bool y
427	prompt "Kernel support for 31 bit emulation"
428	select ARCH_WANT_OLD_COMPAT_IPC
429	select COMPAT_OLD_SIGACTION
430	select HAVE_UID16
431	depends on MULTIUSER
432	help
433	  Select this option if you want to enable your system kernel to
434	  handle system-calls from ELF binaries for 31 bit ESA.  This option
435	  (and some other stuff like libraries and such) is needed for
436	  executing 31 bit applications.  It is safe to say "Y".
437
438config SYSVIPC_COMPAT
439	def_bool y if COMPAT && SYSVIPC
440
441config SMP
442	def_bool y
443
444config NR_CPUS
445	int "Maximum number of CPUs (2-512)"
446	range 2 512
447	default "64"
448	help
449	  This allows you to specify the maximum number of CPUs which this
450	  kernel will support. The maximum supported value is 512 and the
451	  minimum value which makes sense is 2.
452
453	  This is purely to save memory - each supported CPU adds
454	  approximately sixteen kilobytes to the kernel image.
455
456config HOTPLUG_CPU
457	def_bool y
458
459config NUMA
460	bool "NUMA support"
461	depends on SCHED_TOPOLOGY
462	default n
463	help
464	  Enable NUMA support
465
466	  This option adds NUMA support to the kernel.
467
468config NODES_SHIFT
469	int
470	depends on NEED_MULTIPLE_NODES
471	default "1"
472
473config SCHED_SMT
474	def_bool n
475
476config SCHED_MC
477	def_bool n
478
479config SCHED_BOOK
480	def_bool n
481
482config SCHED_DRAWER
483	def_bool n
484
485config SCHED_TOPOLOGY
486	def_bool y
487	prompt "Topology scheduler support"
488	select SCHED_SMT
489	select SCHED_MC
490	select SCHED_BOOK
491	select SCHED_DRAWER
492	help
493	  Topology scheduler support improves the CPU scheduler's decision
494	  making when dealing with machines that have multi-threading,
495	  multiple cores or multiple books.
496
497source "kernel/Kconfig.hz"
498
499config KEXEC
500	def_bool y
501	select KEXEC_CORE
502
503config KEXEC_FILE
504	bool "kexec file based system call"
505	select KEXEC_CORE
506	select BUILD_BIN2C
507	depends on CRYPTO
508	depends on CRYPTO_SHA256
509	depends on CRYPTO_SHA256_S390
510	help
511	  Enable the kexec file based system call. In contrast to the normal
512	  kexec system call this system call takes file descriptors for the
513	  kernel and initramfs as arguments.
514
515config ARCH_HAS_KEXEC_PURGATORY
516	def_bool y
517	depends on KEXEC_FILE
518
519config KEXEC_SIG
520	bool "Verify kernel signature during kexec_file_load() syscall"
521	depends on KEXEC_FILE && MODULE_SIG_FORMAT
522	help
523	  This option makes kernel signature verification mandatory for
524	  the kexec_file_load() syscall.
525
526	  In addition to that option, you need to enable signature
527	  verification for the corresponding kernel image type being
528	  loaded in order for this to work.
529
530config ARCH_RANDOM
531	def_bool y
532	prompt "s390 architectural random number generation API"
533	help
534	  Enable the s390 architectural random number generation API
535	  to provide random data for all consumers within the Linux
536	  kernel.
537
538	  When enabled the arch_random_* functions declared in linux/random.h
539	  are implemented. The implementation is based on the s390 CPACF
540	  instruction subfunction TRNG which provides a real true random
541	  number generator.
542
543	  If unsure, say Y.
544
545config KERNEL_NOBP
546	def_bool n
547	prompt "Enable modified branch prediction for the kernel by default"
548	help
549	  If this option is selected the kernel will switch to a modified
550	  branch prediction mode if the firmware interface is available.
551	  The modified branch prediction mode improves the behaviour in
552	  regard to speculative execution.
553
554	  With the option enabled the kernel parameter "nobp=0" or "nospec"
555	  can be used to run the kernel in the normal branch prediction mode.
556
557	  With the option disabled the modified branch prediction mode is
558	  enabled with the "nobp=1" kernel parameter.
559
560	  If unsure, say N.
561
562config EXPOLINE
563	def_bool n
564	prompt "Avoid speculative indirect branches in the kernel"
565	help
566	  Compile the kernel with the expoline compiler options to guard
567	  against kernel-to-user data leaks by avoiding speculative indirect
568	  branches.
569	  Requires a compiler with -mindirect-branch=thunk support for full
570	  protection. The kernel may run slower.
571
572	  If unsure, say N.
573
574choice
575	prompt "Expoline default"
576	depends on EXPOLINE
577	default EXPOLINE_FULL
578
579config EXPOLINE_OFF
580	bool "spectre_v2=off"
581
582config EXPOLINE_AUTO
583	bool "spectre_v2=auto"
584
585config EXPOLINE_FULL
586	bool "spectre_v2=on"
587
588endchoice
589
590config RELOCATABLE
591	bool "Build a relocatable kernel"
592	select MODULE_REL_CRCS if MODVERSIONS
593	default y
594	help
595	  This builds a kernel image that retains relocation information
596	  so it can be loaded at an arbitrary address.
597	  The kernel is linked as a position-independent executable (PIE)
598	  and contains dynamic relocations which are processed early in the
599	  bootup process.
600	  The relocations make the kernel image about 15% larger (compressed
601	  10%), but are discarded at runtime.
602
603config RANDOMIZE_BASE
604	bool "Randomize the address of the kernel image (KASLR)"
605	depends on RELOCATABLE
606	default y
607	help
608	  In support of Kernel Address Space Layout Randomization (KASLR),
609	  this randomizes the address at which the kernel image is loaded,
610	  as a security feature that deters exploit attempts relying on
611	  knowledge of the location of kernel internals.
612
613endmenu
614
615menu "Memory setup"
616
617config ARCH_SPARSEMEM_ENABLE
618	def_bool y
619	select SPARSEMEM_VMEMMAP_ENABLE
620	select SPARSEMEM_VMEMMAP
621
622config ARCH_SPARSEMEM_DEFAULT
623	def_bool y
624
625config ARCH_ENABLE_MEMORY_HOTPLUG
626	def_bool y if SPARSEMEM
627
628config ARCH_ENABLE_MEMORY_HOTREMOVE
629	def_bool y
630
631config ARCH_ENABLE_SPLIT_PMD_PTLOCK
632	def_bool y
633
634config MAX_PHYSMEM_BITS
635	int "Maximum size of supported physical memory in bits (42-53)"
636	range 42 53
637	default "46"
638	help
639	  This option specifies the maximum supported size of physical memory
640	  in bits. Supported is any size between 2^42 (4TB) and 2^53 (8PB).
641	  Increasing the number of bits also increases the kernel image size.
642	  By default 46 bits (64TB) are supported.
643
644config PACK_STACK
645	def_bool y
646	prompt "Pack kernel stack"
647	help
648	  This option enables the compiler option -mkernel-backchain if it
649	  is available. If the option is available the compiler supports
650	  the new stack layout which dramatically reduces the minimum stack
651	  frame size. With an old compiler a non-leaf function needs a
652	  minimum of 96 bytes on 31 bit and 160 bytes on 64 bit. With
653	  -mkernel-backchain the minimum size drops to 16 byte on 31 bit
654	  and 24 byte on 64 bit.
655
656	  Say Y if you are unsure.
657
658config CHECK_STACK
659	def_bool y
660	depends on !VMAP_STACK
661	prompt "Detect kernel stack overflow"
662	help
663	  This option enables the compiler option -mstack-guard and
664	  -mstack-size if they are available. If the compiler supports them
665	  it will emit additional code to each function prolog to trigger
666	  an illegal operation if the kernel stack is about to overflow.
667
668	  Say N if you are unsure.
669
670config STACK_GUARD
671	int "Size of the guard area (128-1024)"
672	range 128 1024
673	depends on CHECK_STACK
674	default "256"
675	help
676	  This allows you to specify the size of the guard area at the lower
677	  end of the kernel stack. If the kernel stack points into the guard
678	  area on function entry an illegal operation is triggered. The size
679	  needs to be a power of 2. Please keep in mind that the size of an
680	  interrupt frame is 184 bytes for 31 bit and 328 bytes on 64 bit.
681	  The minimum size for the stack guard should be 256 for 31 bit and
682	  512 for 64 bit.
683
684config WARN_DYNAMIC_STACK
685	def_bool n
686	prompt "Emit compiler warnings for function with dynamic stack usage"
687	help
688	  This option enables the compiler option -mwarn-dynamicstack. If the
689	  compiler supports this options generates warnings for functions
690	  that dynamically allocate stack space using alloca.
691
692	  Say N if you are unsure.
693
694endmenu
695
696menu "I/O subsystem"
697
698config QDIO
699	def_tristate y
700	prompt "QDIO support"
701	help
702	  This driver provides the Queued Direct I/O base support for
703	  IBM System z.
704
705	  To compile this driver as a module, choose M here: the
706	  module will be called qdio.
707
708	  If unsure, say Y.
709
710if PCI
711
712config PCI_NR_FUNCTIONS
713	int "Maximum number of PCI functions (1-4096)"
714	range 1 4096
715	default "512"
716	help
717	  This allows you to specify the maximum number of PCI functions which
718	  this kernel will support.
719
720endif # PCI
721
722config HAS_IOMEM
723	def_bool PCI
724
725config CHSC_SCH
726	def_tristate m
727	prompt "Support for CHSC subchannels"
728	help
729	  This driver allows usage of CHSC subchannels. A CHSC subchannel
730	  is usually present on LPAR only.
731	  The driver creates a device /dev/chsc, which may be used to
732	  obtain I/O configuration information about the machine and
733	  to issue asynchronous chsc commands (DANGEROUS).
734	  You will usually only want to use this interface on a special
735	  LPAR designated for system management.
736
737	  To compile this driver as a module, choose M here: the
738	  module will be called chsc_sch.
739
740	  If unsure, say N.
741
742config SCM_BUS
743	def_bool y
744	prompt "SCM bus driver"
745	help
746	  Bus driver for Storage Class Memory.
747
748config EADM_SCH
749	def_tristate m
750	prompt "Support for EADM subchannels"
751	depends on SCM_BUS
752	help
753	  This driver allows usage of EADM subchannels. EADM subchannels act
754	  as a communication vehicle for SCM increments.
755
756	  To compile this driver as a module, choose M here: the
757	  module will be called eadm_sch.
758
759config VFIO_CCW
760	def_tristate n
761	prompt "Support for VFIO-CCW subchannels"
762	depends on S390_CCW_IOMMU && VFIO_MDEV
763	help
764	  This driver allows usage of I/O subchannels via VFIO-CCW.
765
766	  To compile this driver as a module, choose M here: the
767	  module will be called vfio_ccw.
768
769config VFIO_AP
770	def_tristate n
771	prompt "VFIO support for AP devices"
772	depends on S390_AP_IOMMU && VFIO_MDEV_DEVICE && KVM
773	depends on ZCRYPT
774	help
775		This driver grants access to Adjunct Processor (AP) devices
776		via the VFIO mediated device interface.
777
778		To compile this driver as a module, choose M here: the module
779		will be called vfio_ap.
780
781endmenu
782
783menu "Dump support"
784
785config CRASH_DUMP
786	bool "kernel crash dumps"
787	select KEXEC
788	help
789	  Generate crash dump after being started by kexec.
790	  Crash dump kernels are loaded in the main kernel with kexec-tools
791	  into a specially reserved region and then later executed after
792	  a crash by kdump/kexec.
793	  Refer to <file:Documentation/s390/zfcpdump.rst> for more details on this.
794	  This option also enables s390 zfcpdump.
795	  See also <file:Documentation/s390/zfcpdump.rst>
796
797endmenu
798
799config CCW
800	def_bool y
801
802config HAVE_PNETID
803	tristate
804	default (SMC || CCWGROUP)
805
806menu "Virtualization"
807
808config PROTECTED_VIRTUALIZATION_GUEST
809	def_bool n
810	prompt "Protected virtualization guest support"
811	select ARCH_HAS_RESTRICTED_VIRTIO_MEMORY_ACCESS
812	help
813	  Select this option, if you want to be able to run this
814	  kernel as a protected virtualization KVM guest.
815	  Protected virtualization capable machines have a mini hypervisor
816	  located at machine level (an ultravisor). With help of the
817	  Ultravisor, KVM will be able to run "protected" VMs, special
818	  VMs whose memory and management data are unavailable to KVM.
819
820config PFAULT
821	def_bool y
822	prompt "Pseudo page fault support"
823	help
824	  Select this option, if you want to use PFAULT pseudo page fault
825	  handling under VM. If running native or in LPAR, this option
826	  has no effect. If your VM does not support PFAULT, PAGEEX
827	  pseudo page fault handling will be used.
828	  Note that VM 4.2 supports PFAULT but has a bug in its
829	  implementation that causes some problems.
830	  Everybody who wants to run Linux under VM != VM4.2 should select
831	  this option.
832
833config CMM
834	def_tristate n
835	prompt "Cooperative memory management"
836	help
837	  Select this option, if you want to enable the kernel interface
838	  to reduce the memory size of the system. This is accomplished
839	  by allocating pages of memory and put them "on hold". This only
840	  makes sense for a system running under VM where the unused pages
841	  will be reused by VM for other guest systems. The interface
842	  allows an external monitor to balance memory of many systems.
843	  Everybody who wants to run Linux under VM should select this
844	  option.
845
846config CMM_IUCV
847	def_bool y
848	prompt "IUCV special message interface to cooperative memory management"
849	depends on CMM && (SMSGIUCV=y || CMM=SMSGIUCV)
850	help
851	  Select this option to enable the special message interface to
852	  the cooperative memory management.
853
854config APPLDATA_BASE
855	def_bool n
856	prompt "Linux - VM Monitor Stream, base infrastructure"
857	depends on PROC_FS
858	help
859	  This provides a kernel interface for creating and updating z/VM APPLDATA
860	  monitor records. The monitor records are updated at certain time
861	  intervals, once the timer is started.
862	  Writing 1 or 0 to /proc/appldata/timer starts(1) or stops(0) the timer,
863	  i.e. enables or disables monitoring on the Linux side.
864	  A custom interval value (in seconds) can be written to
865	  /proc/appldata/interval.
866
867	  Defaults are 60 seconds interval and timer off.
868	  The /proc entries can also be read from, showing the current settings.
869
870config APPLDATA_MEM
871	def_tristate m
872	prompt "Monitor memory management statistics"
873	depends on APPLDATA_BASE && VM_EVENT_COUNTERS
874	help
875	  This provides memory management related data to the Linux - VM Monitor
876	  Stream, like paging/swapping rate, memory utilisation, etc.
877	  Writing 1 or 0 to /proc/appldata/memory creates(1) or removes(0) a z/VM
878	  APPLDATA monitor record, i.e. enables or disables monitoring this record
879	  on the z/VM side.
880
881	  Default is disabled.
882	  The /proc entry can also be read from, showing the current settings.
883
884	  This can also be compiled as a module, which will be called
885	  appldata_mem.o.
886
887config APPLDATA_OS
888	def_tristate m
889	prompt "Monitor OS statistics"
890	depends on APPLDATA_BASE
891	help
892	  This provides OS related data to the Linux - VM Monitor Stream, like
893	  CPU utilisation, etc.
894	  Writing 1 or 0 to /proc/appldata/os creates(1) or removes(0) a z/VM
895	  APPLDATA monitor record, i.e. enables or disables monitoring this record
896	  on the z/VM side.
897
898	  Default is disabled.
899	  This can also be compiled as a module, which will be called
900	  appldata_os.o.
901
902config APPLDATA_NET_SUM
903	def_tristate m
904	prompt "Monitor overall network statistics"
905	depends on APPLDATA_BASE && NET
906	help
907	  This provides network related data to the Linux - VM Monitor Stream,
908	  currently there is only a total sum of network I/O statistics, no
909	  per-interface data.
910	  Writing 1 or 0 to /proc/appldata/net_sum creates(1) or removes(0) a z/VM
911	  APPLDATA monitor record, i.e. enables or disables monitoring this record
912	  on the z/VM side.
913
914	  Default is disabled.
915	  This can also be compiled as a module, which will be called
916	  appldata_net_sum.o.
917
918config S390_HYPFS_FS
919	def_bool y
920	prompt "s390 hypervisor file system support"
921	select SYS_HYPERVISOR
922	help
923	  This is a virtual file system intended to provide accounting
924	  information in an s390 hypervisor environment.
925
926source "arch/s390/kvm/Kconfig"
927
928config S390_GUEST
929	def_bool y
930	prompt "s390 support for virtio devices"
931	select TTY
932	select VIRTUALIZATION
933	select VIRTIO
934	help
935	  Enabling this option adds support for virtio based paravirtual device
936	  drivers on s390.
937
938	  Select this option if you want to run the kernel as a guest under
939	  the KVM hypervisor.
940
941endmenu
942
943menu "Selftests"
944
945config S390_UNWIND_SELFTEST
946	def_tristate n
947	prompt "Test unwind functions"
948	help
949	  This option enables s390 specific stack unwinder testing kernel
950	  module. This option is not useful for distributions or general
951	  kernels, but only for kernel developers working on architecture code.
952
953	  Say N if you are unsure.
954
955endmenu
956