xref: /linux/arch/s390/Kconfig (revision a76053707dbf0dc020a73b4d90cd952409ef3691)
1# SPDX-License-Identifier: GPL-2.0
2config MMU
3	def_bool y
4
5config CPU_BIG_ENDIAN
6	def_bool y
7
8config LOCKDEP_SUPPORT
9	def_bool y
10
11config STACKTRACE_SUPPORT
12	def_bool y
13
14config ARCH_HAS_ILOG2_U32
15	def_bool n
16
17config ARCH_HAS_ILOG2_U64
18	def_bool n
19
20config GENERIC_HWEIGHT
21	def_bool y
22
23config GENERIC_BUG
24	def_bool y if BUG
25
26config GENERIC_BUG_RELATIVE_POINTERS
27	def_bool y
28
29config GENERIC_LOCKBREAK
30	def_bool y if PREEMPTION
31
32config PGSTE
33	def_bool y if KVM
34
35config AUDIT_ARCH
36	def_bool y
37
38config NO_IOPORT_MAP
39	def_bool y
40
41config PCI_QUIRKS
42	def_bool n
43
44config ARCH_SUPPORTS_UPROBES
45	def_bool y
46
47config KASAN_SHADOW_OFFSET
48	hex
49	depends on KASAN
50	default 0x18000000000000
51
52config S390
53	def_bool y
54	#
55	# Note: keep this list sorted alphabetically
56	#
57	imply IMA_SECURE_AND_OR_TRUSTED_BOOT
58	select ARCH_32BIT_USTAT_F_TINODE
59	select ARCH_BINFMT_ELF_STATE
60	select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM
61	select ARCH_ENABLE_MEMORY_HOTREMOVE
62	select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2
63	select ARCH_HAS_DEBUG_VM_PGTABLE
64	select ARCH_HAS_DEBUG_WX
65	select ARCH_HAS_DEVMEM_IS_ALLOWED
66	select ARCH_HAS_ELF_RANDOMIZE
67	select ARCH_HAS_FORCE_DMA_UNENCRYPTED
68	select ARCH_HAS_FORTIFY_SOURCE
69	select ARCH_HAS_GCOV_PROFILE_ALL
70	select ARCH_HAS_GIGANTIC_PAGE
71	select ARCH_HAS_KCOV
72	select ARCH_HAS_MEM_ENCRYPT
73	select ARCH_HAS_PTE_SPECIAL
74	select ARCH_HAS_SCALED_CPUTIME
75	select ARCH_HAS_SET_MEMORY
76	select ARCH_HAS_STRICT_KERNEL_RWX
77	select ARCH_HAS_STRICT_MODULE_RWX
78	select ARCH_HAS_SYSCALL_WRAPPER
79	select ARCH_HAS_UBSAN_SANITIZE_ALL
80	select ARCH_HAS_VDSO_DATA
81	select ARCH_HAVE_NMI_SAFE_CMPXCHG
82	select ARCH_INLINE_READ_LOCK
83	select ARCH_INLINE_READ_LOCK_BH
84	select ARCH_INLINE_READ_LOCK_IRQ
85	select ARCH_INLINE_READ_LOCK_IRQSAVE
86	select ARCH_INLINE_READ_TRYLOCK
87	select ARCH_INLINE_READ_UNLOCK
88	select ARCH_INLINE_READ_UNLOCK_BH
89	select ARCH_INLINE_READ_UNLOCK_IRQ
90	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE
91	select ARCH_INLINE_SPIN_LOCK
92	select ARCH_INLINE_SPIN_LOCK_BH
93	select ARCH_INLINE_SPIN_LOCK_IRQ
94	select ARCH_INLINE_SPIN_LOCK_IRQSAVE
95	select ARCH_INLINE_SPIN_TRYLOCK
96	select ARCH_INLINE_SPIN_TRYLOCK_BH
97	select ARCH_INLINE_SPIN_UNLOCK
98	select ARCH_INLINE_SPIN_UNLOCK_BH
99	select ARCH_INLINE_SPIN_UNLOCK_IRQ
100	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
101	select ARCH_INLINE_WRITE_LOCK
102	select ARCH_INLINE_WRITE_LOCK_BH
103	select ARCH_INLINE_WRITE_LOCK_IRQ
104	select ARCH_INLINE_WRITE_LOCK_IRQSAVE
105	select ARCH_INLINE_WRITE_TRYLOCK
106	select ARCH_INLINE_WRITE_UNLOCK
107	select ARCH_INLINE_WRITE_UNLOCK_BH
108	select ARCH_INLINE_WRITE_UNLOCK_IRQ
109	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
110	select ARCH_STACKWALK
111	select ARCH_SUPPORTS_ATOMIC_RMW
112	select ARCH_SUPPORTS_DEBUG_PAGEALLOC
113	select ARCH_SUPPORTS_NUMA_BALANCING
114	select ARCH_USE_BUILTIN_BSWAP
115	select ARCH_USE_CMPXCHG_LOCKREF
116	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
117	select ARCH_WANTS_NO_INSTR
118	select ARCH_WANT_DEFAULT_BPF_JIT
119	select ARCH_WANT_IPC_PARSE_VERSION
120	select BUILDTIME_TABLE_SORT
121	select CLONE_BACKWARDS2
122	select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES
123	select DMA_OPS if PCI
124	select DYNAMIC_FTRACE if FUNCTION_TRACER
125	select GENERIC_ALLOCATOR
126	select GENERIC_CPU_AUTOPROBE
127	select GENERIC_CPU_VULNERABILITIES
128	select GENERIC_ENTRY
129	select GENERIC_FIND_FIRST_BIT
130	select GENERIC_GETTIMEOFDAY
131	select GENERIC_PTDUMP
132	select GENERIC_SMP_IDLE_THREAD
133	select GENERIC_TIME_VSYSCALL
134	select GENERIC_VDSO_TIME_NS
135	select HAVE_ALIGNED_STRUCT_PAGE if SLUB
136	select HAVE_ARCH_AUDITSYSCALL
137	select HAVE_ARCH_JUMP_LABEL
138	select HAVE_ARCH_JUMP_LABEL_RELATIVE
139	select HAVE_ARCH_KASAN
140	select HAVE_ARCH_KASAN_VMALLOC
141	select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
142	select HAVE_ARCH_SECCOMP_FILTER
143	select HAVE_ARCH_SOFT_DIRTY
144	select HAVE_ARCH_TRACEHOOK
145	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
146	select HAVE_ARCH_VMAP_STACK
147	select HAVE_ASM_MODVERSIONS
148	select HAVE_CMPXCHG_DOUBLE
149	select HAVE_CMPXCHG_LOCAL
150	select HAVE_DEBUG_KMEMLEAK
151	select HAVE_DMA_CONTIGUOUS
152	select HAVE_DYNAMIC_FTRACE
153	select HAVE_DYNAMIC_FTRACE_WITH_REGS
154	select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
155	select HAVE_EFFICIENT_UNALIGNED_ACCESS
156	select HAVE_FAST_GUP
157	select HAVE_FENTRY
158	select HAVE_FTRACE_MCOUNT_RECORD
159	select HAVE_FUNCTION_ERROR_INJECTION
160	select HAVE_FUNCTION_GRAPH_TRACER
161	select HAVE_FUNCTION_TRACER
162	select HAVE_FUTEX_CMPXCHG if FUTEX
163	select HAVE_GCC_PLUGINS
164	select HAVE_GENERIC_VDSO
165	select HAVE_IOREMAP_PROT if PCI
166	select HAVE_KERNEL_BZIP2
167	select HAVE_KERNEL_GZIP
168	select HAVE_KERNEL_LZ4
169	select HAVE_KERNEL_LZMA
170	select HAVE_KERNEL_LZO
171	select HAVE_KERNEL_UNCOMPRESSED
172	select HAVE_KERNEL_XZ
173	select HAVE_KERNEL_ZSTD
174	select HAVE_KPROBES
175	select HAVE_KPROBES_ON_FTRACE
176	select HAVE_KRETPROBES
177	select HAVE_KVM
178	select HAVE_LIVEPATCH
179	select HAVE_MEMBLOCK_PHYS_MAP
180	select HAVE_MOD_ARCH_SPECIFIC
181	select HAVE_NMI
182	select HAVE_NOP_MCOUNT
183	select HAVE_PCI
184	select HAVE_PERF_EVENTS
185	select HAVE_PERF_REGS
186	select HAVE_PERF_USER_STACK_DUMP
187	select HAVE_REGS_AND_STACK_ACCESS_API
188	select HAVE_RELIABLE_STACKTRACE
189	select HAVE_RSEQ
190	select HAVE_SOFTIRQ_ON_OWN_STACK
191	select HAVE_SYSCALL_TRACEPOINTS
192	select HAVE_VIRT_CPU_ACCOUNTING
193	select HAVE_VIRT_CPU_ACCOUNTING_IDLE
194	select IOMMU_HELPER		if PCI
195	select IOMMU_SUPPORT		if PCI
196	select MMU_GATHER_NO_GATHER
197	select MMU_GATHER_RCU_TABLE_FREE
198	select MODULES_USE_ELF_RELA
199	select NEED_DMA_MAP_STATE	if PCI
200	select NEED_SG_DMA_LENGTH	if PCI
201	select OLD_SIGACTION
202	select OLD_SIGSUSPEND3
203	select PCI_DOMAINS		if PCI
204	select PCI_MSI			if PCI
205	select PCI_MSI_ARCH_FALLBACKS	if PCI_MSI
206	select SPARSE_IRQ
207	select SWIOTLB
208	select SYSCTL_EXCEPTION_TRACE
209	select THREAD_INFO_IN_TASK
210	select TTY
211	select VIRT_CPU_ACCOUNTING
212	select ZONE_DMA
213	# Note: keep the above list sorted alphabetically
214
215config SCHED_OMIT_FRAME_POINTER
216	def_bool y
217
218config PGTABLE_LEVELS
219	int
220	default 5
221
222source "kernel/livepatch/Kconfig"
223
224menu "Processor type and features"
225
226config HAVE_MARCH_Z900_FEATURES
227	def_bool n
228
229config HAVE_MARCH_Z990_FEATURES
230	def_bool n
231	select HAVE_MARCH_Z900_FEATURES
232
233config HAVE_MARCH_Z9_109_FEATURES
234	def_bool n
235	select HAVE_MARCH_Z990_FEATURES
236
237config HAVE_MARCH_Z10_FEATURES
238	def_bool n
239	select HAVE_MARCH_Z9_109_FEATURES
240
241config HAVE_MARCH_Z196_FEATURES
242	def_bool n
243	select HAVE_MARCH_Z10_FEATURES
244
245config HAVE_MARCH_ZEC12_FEATURES
246	def_bool n
247	select HAVE_MARCH_Z196_FEATURES
248
249config HAVE_MARCH_Z13_FEATURES
250	def_bool n
251	select HAVE_MARCH_ZEC12_FEATURES
252
253config HAVE_MARCH_Z14_FEATURES
254	def_bool n
255	select HAVE_MARCH_Z13_FEATURES
256
257config HAVE_MARCH_Z15_FEATURES
258	def_bool n
259	select HAVE_MARCH_Z14_FEATURES
260
261choice
262	prompt "Processor type"
263	default MARCH_Z196
264
265config MARCH_Z900
266	bool "IBM zSeries model z800 and z900"
267	select HAVE_MARCH_Z900_FEATURES
268	depends on $(cc-option,-march=z900)
269	help
270	  Select this to enable optimizations for model z800/z900 (2064 and
271	  2066 series). This will enable some optimizations that are not
272	  available on older ESA/390 (31 Bit) only CPUs.
273
274config MARCH_Z990
275	bool "IBM zSeries model z890 and z990"
276	select HAVE_MARCH_Z990_FEATURES
277	depends on $(cc-option,-march=z990)
278	help
279	  Select this to enable optimizations for model z890/z990 (2084 and
280	  2086 series). The kernel will be slightly faster but will not work
281	  on older machines.
282
283config MARCH_Z9_109
284	bool "IBM System z9"
285	select HAVE_MARCH_Z9_109_FEATURES
286	depends on $(cc-option,-march=z9-109)
287	help
288	  Select this to enable optimizations for IBM System z9 (2094 and
289	  2096 series). The kernel will be slightly faster but will not work
290	  on older machines.
291
292config MARCH_Z10
293	bool "IBM System z10"
294	select HAVE_MARCH_Z10_FEATURES
295	depends on $(cc-option,-march=z10)
296	help
297	  Select this to enable optimizations for IBM System z10 (2097 and
298	  2098 series). The kernel will be slightly faster but will not work
299	  on older machines.
300
301config MARCH_Z196
302	bool "IBM zEnterprise 114 and 196"
303	select HAVE_MARCH_Z196_FEATURES
304	depends on $(cc-option,-march=z196)
305	help
306	  Select this to enable optimizations for IBM zEnterprise 114 and 196
307	  (2818 and 2817 series). The kernel will be slightly faster but will
308	  not work on older machines.
309
310config MARCH_ZEC12
311	bool "IBM zBC12 and zEC12"
312	select HAVE_MARCH_ZEC12_FEATURES
313	depends on $(cc-option,-march=zEC12)
314	help
315	  Select this to enable optimizations for IBM zBC12 and zEC12 (2828 and
316	  2827 series). The kernel will be slightly faster but will not work on
317	  older machines.
318
319config MARCH_Z13
320	bool "IBM z13s and z13"
321	select HAVE_MARCH_Z13_FEATURES
322	depends on $(cc-option,-march=z13)
323	help
324	  Select this to enable optimizations for IBM z13s and z13 (2965 and
325	  2964 series). The kernel will be slightly faster but will not work on
326	  older machines.
327
328config MARCH_Z14
329	bool "IBM z14 ZR1 and z14"
330	select HAVE_MARCH_Z14_FEATURES
331	depends on $(cc-option,-march=z14)
332	help
333	  Select this to enable optimizations for IBM z14 ZR1 and z14 (3907
334	  and 3906 series). The kernel will be slightly faster but will not
335	  work on older machines.
336
337config MARCH_Z15
338	bool "IBM z15"
339	select HAVE_MARCH_Z15_FEATURES
340	depends on $(cc-option,-march=z15)
341	help
342	  Select this to enable optimizations for IBM z15 (8562
343	  and 8561 series). The kernel will be slightly faster but will not
344	  work on older machines.
345
346endchoice
347
348config MARCH_Z900_TUNE
349	def_bool TUNE_Z900 || MARCH_Z900 && TUNE_DEFAULT
350
351config MARCH_Z990_TUNE
352	def_bool TUNE_Z990 || MARCH_Z990 && TUNE_DEFAULT
353
354config MARCH_Z9_109_TUNE
355	def_bool TUNE_Z9_109 || MARCH_Z9_109 && TUNE_DEFAULT
356
357config MARCH_Z10_TUNE
358	def_bool TUNE_Z10 || MARCH_Z10 && TUNE_DEFAULT
359
360config MARCH_Z196_TUNE
361	def_bool TUNE_Z196 || MARCH_Z196 && TUNE_DEFAULT
362
363config MARCH_ZEC12_TUNE
364	def_bool TUNE_ZEC12 || MARCH_ZEC12 && TUNE_DEFAULT
365
366config MARCH_Z13_TUNE
367	def_bool TUNE_Z13 || MARCH_Z13 && TUNE_DEFAULT
368
369config MARCH_Z14_TUNE
370	def_bool TUNE_Z14 || MARCH_Z14 && TUNE_DEFAULT
371
372config MARCH_Z15_TUNE
373	def_bool TUNE_Z15 || MARCH_Z15 && TUNE_DEFAULT
374
375choice
376	prompt "Tune code generation"
377	default TUNE_DEFAULT
378	help
379	  Cause the compiler to tune (-mtune) the generated code for a machine.
380	  This will make the code run faster on the selected machine but
381	  somewhat slower on other machines.
382	  This option only changes how the compiler emits instructions, not the
383	  selection of instructions itself, so the resulting kernel will run on
384	  all other machines.
385
386config TUNE_DEFAULT
387	bool "Default"
388	help
389	  Tune the generated code for the target processor for which the kernel
390	  will be compiled.
391
392config TUNE_Z900
393	bool "IBM zSeries model z800 and z900"
394	depends on $(cc-option,-mtune=z900)
395
396config TUNE_Z990
397	bool "IBM zSeries model z890 and z990"
398	depends on $(cc-option,-mtune=z990)
399
400config TUNE_Z9_109
401	bool "IBM System z9"
402	depends on $(cc-option,-mtune=z9-109)
403
404config TUNE_Z10
405	bool "IBM System z10"
406	depends on $(cc-option,-mtune=z10)
407
408config TUNE_Z196
409	bool "IBM zEnterprise 114 and 196"
410	depends on $(cc-option,-mtune=z196)
411
412config TUNE_ZEC12
413	bool "IBM zBC12 and zEC12"
414	depends on $(cc-option,-mtune=zEC12)
415
416config TUNE_Z13
417	bool "IBM z13s and z13"
418	depends on $(cc-option,-mtune=z13)
419
420config TUNE_Z14
421	bool "IBM z14 ZR1 and z14"
422	depends on $(cc-option,-mtune=z14)
423
424config TUNE_Z15
425	bool "IBM z15"
426	depends on $(cc-option,-mtune=z15)
427
428endchoice
429
430config 64BIT
431	def_bool y
432
433config COMPAT
434	def_bool y
435	prompt "Kernel support for 31 bit emulation"
436	select ARCH_WANT_OLD_COMPAT_IPC
437	select COMPAT_OLD_SIGACTION
438	select HAVE_UID16
439	depends on MULTIUSER
440	depends on !CC_IS_CLANG
441	help
442	  Select this option if you want to enable your system kernel to
443	  handle system-calls from ELF binaries for 31 bit ESA.  This option
444	  (and some other stuff like libraries and such) is needed for
445	  executing 31 bit applications.  It is safe to say "Y".
446
447config SYSVIPC_COMPAT
448	def_bool y if COMPAT && SYSVIPC
449
450config SMP
451	def_bool y
452
453config NR_CPUS
454	int "Maximum number of CPUs (2-512)"
455	range 2 512
456	default "64"
457	help
458	  This allows you to specify the maximum number of CPUs which this
459	  kernel will support. The maximum supported value is 512 and the
460	  minimum value which makes sense is 2.
461
462	  This is purely to save memory - each supported CPU adds
463	  approximately sixteen kilobytes to the kernel image.
464
465config HOTPLUG_CPU
466	def_bool y
467
468config NUMA
469	bool "NUMA support"
470	depends on SCHED_TOPOLOGY
471	default n
472	help
473	  Enable NUMA support
474
475	  This option adds NUMA support to the kernel.
476
477config NODES_SHIFT
478	int
479	depends on NUMA
480	default "1"
481
482config SCHED_SMT
483	def_bool n
484
485config SCHED_MC
486	def_bool n
487
488config SCHED_BOOK
489	def_bool n
490
491config SCHED_DRAWER
492	def_bool n
493
494config SCHED_TOPOLOGY
495	def_bool y
496	prompt "Topology scheduler support"
497	select SCHED_SMT
498	select SCHED_MC
499	select SCHED_BOOK
500	select SCHED_DRAWER
501	help
502	  Topology scheduler support improves the CPU scheduler's decision
503	  making when dealing with machines that have multi-threading,
504	  multiple cores or multiple books.
505
506source "kernel/Kconfig.hz"
507
508config KEXEC
509	def_bool y
510	select KEXEC_CORE
511
512config KEXEC_FILE
513	bool "kexec file based system call"
514	select KEXEC_CORE
515	select BUILD_BIN2C
516	depends on CRYPTO
517	depends on CRYPTO_SHA256
518	depends on CRYPTO_SHA256_S390
519	help
520	  Enable the kexec file based system call. In contrast to the normal
521	  kexec system call this system call takes file descriptors for the
522	  kernel and initramfs as arguments.
523
524config ARCH_HAS_KEXEC_PURGATORY
525	def_bool y
526	depends on KEXEC_FILE
527
528config KEXEC_SIG
529	bool "Verify kernel signature during kexec_file_load() syscall"
530	depends on KEXEC_FILE && MODULE_SIG_FORMAT
531	help
532	  This option makes kernel signature verification mandatory for
533	  the kexec_file_load() syscall.
534
535	  In addition to that option, you need to enable signature
536	  verification for the corresponding kernel image type being
537	  loaded in order for this to work.
538
539config ARCH_RANDOM
540	def_bool y
541	prompt "s390 architectural random number generation API"
542	help
543	  Enable the s390 architectural random number generation API
544	  to provide random data for all consumers within the Linux
545	  kernel.
546
547	  When enabled the arch_random_* functions declared in linux/random.h
548	  are implemented. The implementation is based on the s390 CPACF
549	  instruction subfunction TRNG which provides a real true random
550	  number generator.
551
552	  If unsure, say Y.
553
554config KERNEL_NOBP
555	def_bool n
556	prompt "Enable modified branch prediction for the kernel by default"
557	help
558	  If this option is selected the kernel will switch to a modified
559	  branch prediction mode if the firmware interface is available.
560	  The modified branch prediction mode improves the behaviour in
561	  regard to speculative execution.
562
563	  With the option enabled the kernel parameter "nobp=0" or "nospec"
564	  can be used to run the kernel in the normal branch prediction mode.
565
566	  With the option disabled the modified branch prediction mode is
567	  enabled with the "nobp=1" kernel parameter.
568
569	  If unsure, say N.
570
571config EXPOLINE
572	def_bool n
573	prompt "Avoid speculative indirect branches in the kernel"
574	help
575	  Compile the kernel with the expoline compiler options to guard
576	  against kernel-to-user data leaks by avoiding speculative indirect
577	  branches.
578	  Requires a compiler with -mindirect-branch=thunk support for full
579	  protection. The kernel may run slower.
580
581	  If unsure, say N.
582
583choice
584	prompt "Expoline default"
585	depends on EXPOLINE
586	default EXPOLINE_FULL
587
588config EXPOLINE_OFF
589	bool "spectre_v2=off"
590
591config EXPOLINE_AUTO
592	bool "spectre_v2=auto"
593
594config EXPOLINE_FULL
595	bool "spectre_v2=on"
596
597endchoice
598
599config RELOCATABLE
600	bool "Build a relocatable kernel"
601	select MODULE_REL_CRCS if MODVERSIONS
602	default y
603	help
604	  This builds a kernel image that retains relocation information
605	  so it can be loaded at an arbitrary address.
606	  The kernel is linked as a position-independent executable (PIE)
607	  and contains dynamic relocations which are processed early in the
608	  bootup process.
609	  The relocations make the kernel image about 15% larger (compressed
610	  10%), but are discarded at runtime.
611
612config RANDOMIZE_BASE
613	bool "Randomize the address of the kernel image (KASLR)"
614	depends on RELOCATABLE
615	default y
616	help
617	  In support of Kernel Address Space Layout Randomization (KASLR),
618	  this randomizes the address at which the kernel image is loaded,
619	  as a security feature that deters exploit attempts relying on
620	  knowledge of the location of kernel internals.
621
622endmenu
623
624menu "Memory setup"
625
626config ARCH_SPARSEMEM_ENABLE
627	def_bool y
628	select SPARSEMEM_VMEMMAP_ENABLE
629	select SPARSEMEM_VMEMMAP
630
631config ARCH_SPARSEMEM_DEFAULT
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 && 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_SYSCTL
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