xref: /linux/arch/s390/Kconfig (revision 0774a6ed294b963dc76df2d8342ab86d030759ec)
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 ARCH_SUPPORTS_DEBUG_PAGEALLOC
39	def_bool y
40
41config AUDIT_ARCH
42	def_bool y
43
44config NO_IOPORT_MAP
45	def_bool y
46
47config PCI_QUIRKS
48	def_bool n
49
50config ARCH_SUPPORTS_UPROBES
51	def_bool y
52
53config KASAN_SHADOW_OFFSET
54	hex
55	depends on KASAN
56	default 0x18000000000000 if KASAN_S390_4_LEVEL_PAGING
57	default 0x30000000000
58
59config S390
60	def_bool y
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_FORTIFY_SOURCE
67	select ARCH_HAS_GCOV_PROFILE_ALL
68	select ARCH_HAS_GIGANTIC_PAGE
69	select ARCH_HAS_KCOV
70	select ARCH_HAS_MEM_ENCRYPT
71	select ARCH_HAS_PTE_SPECIAL
72	select ARCH_HAS_SET_MEMORY
73	select ARCH_HAS_STRICT_KERNEL_RWX
74	select ARCH_HAS_STRICT_MODULE_RWX
75	select ARCH_HAS_SYSCALL_WRAPPER
76	select ARCH_HAS_UBSAN_SANITIZE_ALL
77	select ARCH_HAS_VDSO_DATA
78	select ARCH_HAVE_NMI_SAFE_CMPXCHG
79	select ARCH_INLINE_READ_LOCK
80	select ARCH_INLINE_READ_LOCK_BH
81	select ARCH_INLINE_READ_LOCK_IRQ
82	select ARCH_INLINE_READ_LOCK_IRQSAVE
83	select ARCH_INLINE_READ_TRYLOCK
84	select ARCH_INLINE_READ_UNLOCK
85	select ARCH_INLINE_READ_UNLOCK_BH
86	select ARCH_INLINE_READ_UNLOCK_IRQ
87	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE
88	select ARCH_INLINE_SPIN_LOCK
89	select ARCH_INLINE_SPIN_LOCK_BH
90	select ARCH_INLINE_SPIN_LOCK_IRQ
91	select ARCH_INLINE_SPIN_LOCK_IRQSAVE
92	select ARCH_INLINE_SPIN_TRYLOCK
93	select ARCH_INLINE_SPIN_TRYLOCK_BH
94	select ARCH_INLINE_SPIN_UNLOCK
95	select ARCH_INLINE_SPIN_UNLOCK_BH
96	select ARCH_INLINE_SPIN_UNLOCK_IRQ
97	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
98	select ARCH_INLINE_WRITE_LOCK
99	select ARCH_INLINE_WRITE_LOCK_BH
100	select ARCH_INLINE_WRITE_LOCK_IRQ
101	select ARCH_INLINE_WRITE_LOCK_IRQSAVE
102	select ARCH_INLINE_WRITE_TRYLOCK
103	select ARCH_INLINE_WRITE_UNLOCK
104	select ARCH_INLINE_WRITE_UNLOCK_BH
105	select ARCH_INLINE_WRITE_UNLOCK_IRQ
106	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
107	select ARCH_STACKWALK
108	select ARCH_SUPPORTS_ATOMIC_RMW
109	select ARCH_SUPPORTS_NUMA_BALANCING
110	select ARCH_USE_BUILTIN_BSWAP
111	select ARCH_USE_CMPXCHG_LOCKREF
112	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
113	select ARCH_WANT_DEFAULT_BPF_JIT
114	select ARCH_WANT_IPC_PARSE_VERSION
115	select BUILDTIME_TABLE_SORT
116	select CLONE_BACKWARDS2
117	select DMA_OPS if PCI
118	select DYNAMIC_FTRACE if FUNCTION_TRACER
119	select GENERIC_CPU_AUTOPROBE
120	select GENERIC_CPU_VULNERABILITIES
121	select GENERIC_FIND_FIRST_BIT
122	select GENERIC_GETTIMEOFDAY
123	select GENERIC_PTDUMP
124	select GENERIC_SMP_IDLE_THREAD
125	select GENERIC_TIME_VSYSCALL
126	select HAVE_ALIGNED_STRUCT_PAGE if SLUB
127	select HAVE_ARCH_AUDITSYSCALL
128	select HAVE_ARCH_JUMP_LABEL
129	select HAVE_ARCH_JUMP_LABEL_RELATIVE
130	select HAVE_ARCH_KASAN
131	select HAVE_ARCH_KASAN_VMALLOC
132	select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES
133	select HAVE_ARCH_SECCOMP_FILTER
134	select HAVE_ARCH_SOFT_DIRTY
135	select HAVE_ARCH_TRACEHOOK
136	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
137	select HAVE_ARCH_VMAP_STACK
138	select HAVE_ASM_MODVERSIONS
139	select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
140	select HAVE_CMPXCHG_DOUBLE
141	select HAVE_CMPXCHG_LOCAL
142	select HAVE_DEBUG_KMEMLEAK
143	select HAVE_DMA_CONTIGUOUS
144	select HAVE_DYNAMIC_FTRACE
145	select HAVE_DYNAMIC_FTRACE_WITH_REGS
146	select HAVE_FAST_GUP
147	select HAVE_EFFICIENT_UNALIGNED_ACCESS
148	select HAVE_FENTRY
149	select HAVE_FTRACE_MCOUNT_RECORD
150	select HAVE_FUNCTION_ERROR_INJECTION
151	select HAVE_FUNCTION_GRAPH_TRACER
152	select HAVE_FUNCTION_TRACER
153	select HAVE_FUTEX_CMPXCHG if FUTEX
154	select HAVE_GCC_PLUGINS
155	select HAVE_GENERIC_VDSO
156	select HAVE_KERNEL_BZIP2
157	select HAVE_KERNEL_GZIP
158	select HAVE_KERNEL_LZ4
159	select HAVE_KERNEL_LZMA
160	select HAVE_KERNEL_LZO
161	select HAVE_KERNEL_UNCOMPRESSED
162	select HAVE_KERNEL_XZ
163	select HAVE_KPROBES
164	select HAVE_KPROBES_ON_FTRACE
165	select HAVE_KRETPROBES
166	select HAVE_KVM
167	select HAVE_LIVEPATCH
168	select HAVE_PERF_REGS
169	select HAVE_PERF_USER_STACK_DUMP
170	select HAVE_MEMBLOCK_PHYS_MAP
171	select MMU_GATHER_NO_GATHER
172	select HAVE_MOD_ARCH_SPECIFIC
173	select HAVE_NOP_MCOUNT
174	select HAVE_OPROFILE
175	select HAVE_PCI
176	select HAVE_PERF_EVENTS
177	select MMU_GATHER_RCU_TABLE_FREE
178	select HAVE_REGS_AND_STACK_ACCESS_API
179	select HAVE_RELIABLE_STACKTRACE
180	select HAVE_RSEQ
181	select HAVE_SYSCALL_TRACEPOINTS
182	select HAVE_VIRT_CPU_ACCOUNTING
183	select IOMMU_HELPER		if PCI
184	select IOMMU_SUPPORT		if PCI
185	select MODULES_USE_ELF_RELA
186	select NEED_DMA_MAP_STATE	if PCI
187	select NEED_SG_DMA_LENGTH	if PCI
188	select OLD_SIGACTION
189	select OLD_SIGSUSPEND3
190	select PCI_DOMAINS		if PCI
191	select PCI_MSI			if PCI
192	select PCI_MSI_ARCH_FALLBACKS	if PCI_MSI
193	select SET_FS
194	select SPARSE_IRQ
195	select SYSCTL_EXCEPTION_TRACE
196	select THREAD_INFO_IN_TASK
197	select TTY
198	select VIRT_CPU_ACCOUNTING
199	select ARCH_HAS_SCALED_CPUTIME
200	select HAVE_NMI
201	select ARCH_HAS_FORCE_DMA_UNENCRYPTED
202	select SWIOTLB
203	select GENERIC_ALLOCATOR
204	imply IMA_SECURE_AND_OR_TRUSTED_BOOT
205
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 COMPAT_BINFMT_ELF if BINFMT_ELF
429	select ARCH_WANT_OLD_COMPAT_IPC
430	select COMPAT_OLD_SIGACTION
431	select HAVE_UID16
432	depends on MULTIUSER
433	help
434	  Select this option if you want to enable your system kernel to
435	  handle system-calls from ELF binaries for 31 bit ESA.  This option
436	  (and some other stuff like libraries and such) is needed for
437	  executing 31 bit applications.  It is safe to say "Y".
438
439config SYSVIPC_COMPAT
440	def_bool y if COMPAT && SYSVIPC
441
442config SMP
443	def_bool y
444
445config NR_CPUS
446	int "Maximum number of CPUs (2-512)"
447	range 2 512
448	default "64"
449	help
450	  This allows you to specify the maximum number of CPUs which this
451	  kernel will support. The maximum supported value is 512 and the
452	  minimum value which makes sense is 2.
453
454	  This is purely to save memory - each supported CPU adds
455	  approximately sixteen kilobytes to the kernel image.
456
457config HOTPLUG_CPU
458	def_bool y
459
460config NUMA
461	bool "NUMA support"
462	depends on SCHED_TOPOLOGY
463	default n
464	help
465	  Enable NUMA support
466
467	  This option adds NUMA support to the kernel.
468
469config NODES_SHIFT
470	int
471	depends on NEED_MULTIPLE_NODES
472	default "1"
473
474config SCHED_SMT
475	def_bool n
476
477config SCHED_MC
478	def_bool n
479
480config SCHED_BOOK
481	def_bool n
482
483config SCHED_DRAWER
484	def_bool n
485
486config SCHED_TOPOLOGY
487	def_bool y
488	prompt "Topology scheduler support"
489	select SCHED_SMT
490	select SCHED_MC
491	select SCHED_BOOK
492	select SCHED_DRAWER
493	help
494	  Topology scheduler support improves the CPU scheduler's decision
495	  making when dealing with machines that have multi-threading,
496	  multiple cores or multiple books.
497
498source "kernel/Kconfig.hz"
499
500config KEXEC
501	def_bool y
502	select KEXEC_CORE
503
504config KEXEC_FILE
505	bool "kexec file based system call"
506	select KEXEC_CORE
507	select BUILD_BIN2C
508	depends on CRYPTO
509	depends on CRYPTO_SHA256
510	depends on CRYPTO_SHA256_S390
511	help
512	  Enable the kexec file based system call. In contrast to the normal
513	  kexec system call this system call takes file descriptors for the
514	  kernel and initramfs as arguments.
515
516config ARCH_HAS_KEXEC_PURGATORY
517	def_bool y
518	depends on KEXEC_FILE
519
520config KEXEC_SIG
521	bool "Verify kernel signature during kexec_file_load() syscall"
522	depends on KEXEC_FILE && MODULE_SIG_FORMAT
523	help
524	  This option makes kernel signature verification mandatory for
525	  the kexec_file_load() syscall.
526
527	  In addition to that option, you need to enable signature
528	  verification for the corresponding kernel image type being
529	  loaded in order for this to work.
530
531config ARCH_RANDOM
532	def_bool y
533	prompt "s390 architectural random number generation API"
534	help
535	  Enable the s390 architectural random number generation API
536	  to provide random data for all consumers within the Linux
537	  kernel.
538
539	  When enabled the arch_random_* functions declared in linux/random.h
540	  are implemented. The implementation is based on the s390 CPACF
541	  instruction subfunction TRNG which provides a real true random
542	  number generator.
543
544	  If unsure, say Y.
545
546config KERNEL_NOBP
547	def_bool n
548	prompt "Enable modified branch prediction for the kernel by default"
549	help
550	  If this option is selected the kernel will switch to a modified
551	  branch prediction mode if the firmware interface is available.
552	  The modified branch prediction mode improves the behaviour in
553	  regard to speculative execution.
554
555	  With the option enabled the kernel parameter "nobp=0" or "nospec"
556	  can be used to run the kernel in the normal branch prediction mode.
557
558	  With the option disabled the modified branch prediction mode is
559	  enabled with the "nobp=1" kernel parameter.
560
561	  If unsure, say N.
562
563config EXPOLINE
564	def_bool n
565	prompt "Avoid speculative indirect branches in the kernel"
566	help
567	  Compile the kernel with the expoline compiler options to guard
568	  against kernel-to-user data leaks by avoiding speculative indirect
569	  branches.
570	  Requires a compiler with -mindirect-branch=thunk support for full
571	  protection. The kernel may run slower.
572
573	  If unsure, say N.
574
575choice
576	prompt "Expoline default"
577	depends on EXPOLINE
578	default EXPOLINE_FULL
579
580config EXPOLINE_OFF
581	bool "spectre_v2=off"
582
583config EXPOLINE_AUTO
584	bool "spectre_v2=auto"
585
586config EXPOLINE_FULL
587	bool "spectre_v2=on"
588
589endchoice
590
591config RELOCATABLE
592	bool "Build a relocatable kernel"
593	select MODULE_REL_CRCS if MODVERSIONS
594	default y
595	help
596	  This builds a kernel image that retains relocation information
597	  so it can be loaded at an arbitrary address.
598	  The kernel is linked as a position-independent executable (PIE)
599	  and contains dynamic relocations which are processed early in the
600	  bootup process.
601	  The relocations make the kernel image about 15% larger (compressed
602	  10%), but are discarded at runtime.
603
604config RANDOMIZE_BASE
605	bool "Randomize the address of the kernel image (KASLR)"
606	depends on RELOCATABLE
607	default y
608	help
609	  In support of Kernel Address Space Layout Randomization (KASLR),
610	  this randomizes the address at which the kernel image is loaded,
611	  as a security feature that deters exploit attempts relying on
612	  knowledge of the location of kernel internals.
613
614endmenu
615
616menu "Memory setup"
617
618config ARCH_SPARSEMEM_ENABLE
619	def_bool y
620	select SPARSEMEM_VMEMMAP_ENABLE
621	select SPARSEMEM_VMEMMAP
622
623config ARCH_SPARSEMEM_DEFAULT
624	def_bool y
625
626config ARCH_ENABLE_MEMORY_HOTPLUG
627	def_bool y if SPARSEMEM
628
629config ARCH_ENABLE_MEMORY_HOTREMOVE
630	def_bool y
631
632config ARCH_ENABLE_SPLIT_PMD_PTLOCK
633	def_bool y
634
635config MAX_PHYSMEM_BITS
636	int "Maximum size of supported physical memory in bits (42-53)"
637	range 42 53
638	default "46"
639	help
640	  This option specifies the maximum supported size of physical memory
641	  in bits. Supported is any size between 2^42 (4TB) and 2^53 (8PB).
642	  Increasing the number of bits also increases the kernel image size.
643	  By default 46 bits (64TB) are supported.
644
645config PACK_STACK
646	def_bool y
647	prompt "Pack kernel stack"
648	help
649	  This option enables the compiler option -mkernel-backchain if it
650	  is available. If the option is available the compiler supports
651	  the new stack layout which dramatically reduces the minimum stack
652	  frame size. With an old compiler a non-leaf function needs a
653	  minimum of 96 bytes on 31 bit and 160 bytes on 64 bit. With
654	  -mkernel-backchain the minimum size drops to 16 byte on 31 bit
655	  and 24 byte on 64 bit.
656
657	  Say Y if you are unsure.
658
659config CHECK_STACK
660	def_bool y
661	depends on !VMAP_STACK
662	prompt "Detect kernel stack overflow"
663	help
664	  This option enables the compiler option -mstack-guard and
665	  -mstack-size if they are available. If the compiler supports them
666	  it will emit additional code to each function prolog to trigger
667	  an illegal operation if the kernel stack is about to overflow.
668
669	  Say N if you are unsure.
670
671config STACK_GUARD
672	int "Size of the guard area (128-1024)"
673	range 128 1024
674	depends on CHECK_STACK
675	default "256"
676	help
677	  This allows you to specify the size of the guard area at the lower
678	  end of the kernel stack. If the kernel stack points into the guard
679	  area on function entry an illegal operation is triggered. The size
680	  needs to be a power of 2. Please keep in mind that the size of an
681	  interrupt frame is 184 bytes for 31 bit and 328 bytes on 64 bit.
682	  The minimum size for the stack guard should be 256 for 31 bit and
683	  512 for 64 bit.
684
685config WARN_DYNAMIC_STACK
686	def_bool n
687	prompt "Emit compiler warnings for function with dynamic stack usage"
688	help
689	  This option enables the compiler option -mwarn-dynamicstack. If the
690	  compiler supports this options generates warnings for functions
691	  that dynamically allocate stack space using alloca.
692
693	  Say N if you are unsure.
694
695endmenu
696
697menu "I/O subsystem"
698
699config QDIO
700	def_tristate y
701	prompt "QDIO support"
702	help
703	  This driver provides the Queued Direct I/O base support for
704	  IBM System z.
705
706	  To compile this driver as a module, choose M here: the
707	  module will be called qdio.
708
709	  If unsure, say Y.
710
711if PCI
712
713config PCI_NR_FUNCTIONS
714	int "Maximum number of PCI functions (1-4096)"
715	range 1 4096
716	default "128"
717	help
718	  This allows you to specify the maximum number of PCI functions which
719	  this kernel will support.
720
721endif # PCI
722
723config HAS_IOMEM
724	def_bool PCI
725
726config CHSC_SCH
727	def_tristate m
728	prompt "Support for CHSC subchannels"
729	help
730	  This driver allows usage of CHSC subchannels. A CHSC subchannel
731	  is usually present on LPAR only.
732	  The driver creates a device /dev/chsc, which may be used to
733	  obtain I/O configuration information about the machine and
734	  to issue asynchronous chsc commands (DANGEROUS).
735	  You will usually only want to use this interface on a special
736	  LPAR designated for system management.
737
738	  To compile this driver as a module, choose M here: the
739	  module will be called chsc_sch.
740
741	  If unsure, say N.
742
743config SCM_BUS
744	def_bool y
745	prompt "SCM bus driver"
746	help
747	  Bus driver for Storage Class Memory.
748
749config EADM_SCH
750	def_tristate m
751	prompt "Support for EADM subchannels"
752	depends on SCM_BUS
753	help
754	  This driver allows usage of EADM subchannels. EADM subchannels act
755	  as a communication vehicle for SCM increments.
756
757	  To compile this driver as a module, choose M here: the
758	  module will be called eadm_sch.
759
760config VFIO_CCW
761	def_tristate n
762	prompt "Support for VFIO-CCW subchannels"
763	depends on S390_CCW_IOMMU && VFIO_MDEV
764	help
765	  This driver allows usage of I/O subchannels via VFIO-CCW.
766
767	  To compile this driver as a module, choose M here: the
768	  module will be called vfio_ccw.
769
770config VFIO_AP
771	def_tristate n
772	prompt "VFIO support for AP devices"
773	depends on S390_AP_IOMMU && VFIO_MDEV_DEVICE && KVM
774	depends on ZCRYPT
775	help
776		This driver grants access to Adjunct Processor (AP) devices
777		via the VFIO mediated device interface.
778
779		To compile this driver as a module, choose M here: the module
780		will be called vfio_ap.
781
782endmenu
783
784menu "Dump support"
785
786config CRASH_DUMP
787	bool "kernel crash dumps"
788	select KEXEC
789	help
790	  Generate crash dump after being started by kexec.
791	  Crash dump kernels are loaded in the main kernel with kexec-tools
792	  into a specially reserved region and then later executed after
793	  a crash by kdump/kexec.
794	  Refer to <file:Documentation/s390/zfcpdump.rst> for more details on this.
795	  This option also enables s390 zfcpdump.
796	  See also <file:Documentation/s390/zfcpdump.rst>
797
798endmenu
799
800config CCW
801	def_bool y
802
803config HAVE_PNETID
804	tristate
805	default (SMC || CCWGROUP)
806
807menu "Virtualization"
808
809config PROTECTED_VIRTUALIZATION_GUEST
810	def_bool n
811	prompt "Protected virtualization guest support"
812	select ARCH_HAS_RESTRICTED_VIRTIO_MEMORY_ACCESS
813	help
814	  Select this option, if you want to be able to run this
815	  kernel as a protected virtualization KVM guest.
816	  Protected virtualization capable machines have a mini hypervisor
817	  located at machine level (an ultravisor). With help of the
818	  Ultravisor, KVM will be able to run "protected" VMs, special
819	  VMs whose memory and management data are unavailable to KVM.
820
821config PFAULT
822	def_bool y
823	prompt "Pseudo page fault support"
824	help
825	  Select this option, if you want to use PFAULT pseudo page fault
826	  handling under VM. If running native or in LPAR, this option
827	  has no effect. If your VM does not support PFAULT, PAGEEX
828	  pseudo page fault handling will be used.
829	  Note that VM 4.2 supports PFAULT but has a bug in its
830	  implementation that causes some problems.
831	  Everybody who wants to run Linux under VM != VM4.2 should select
832	  this option.
833
834config CMM
835	def_tristate n
836	prompt "Cooperative memory management"
837	help
838	  Select this option, if you want to enable the kernel interface
839	  to reduce the memory size of the system. This is accomplished
840	  by allocating pages of memory and put them "on hold". This only
841	  makes sense for a system running under VM where the unused pages
842	  will be reused by VM for other guest systems. The interface
843	  allows an external monitor to balance memory of many systems.
844	  Everybody who wants to run Linux under VM should select this
845	  option.
846
847config CMM_IUCV
848	def_bool y
849	prompt "IUCV special message interface to cooperative memory management"
850	depends on CMM && (SMSGIUCV=y || CMM=SMSGIUCV)
851	help
852	  Select this option to enable the special message interface to
853	  the cooperative memory management.
854
855config APPLDATA_BASE
856	def_bool n
857	prompt "Linux - VM Monitor Stream, base infrastructure"
858	depends on PROC_FS
859	help
860	  This provides a kernel interface for creating and updating z/VM APPLDATA
861	  monitor records. The monitor records are updated at certain time
862	  intervals, once the timer is started.
863	  Writing 1 or 0 to /proc/appldata/timer starts(1) or stops(0) the timer,
864	  i.e. enables or disables monitoring on the Linux side.
865	  A custom interval value (in seconds) can be written to
866	  /proc/appldata/interval.
867
868	  Defaults are 60 seconds interval and timer off.
869	  The /proc entries can also be read from, showing the current settings.
870
871config APPLDATA_MEM
872	def_tristate m
873	prompt "Monitor memory management statistics"
874	depends on APPLDATA_BASE && VM_EVENT_COUNTERS
875	help
876	  This provides memory management related data to the Linux - VM Monitor
877	  Stream, like paging/swapping rate, memory utilisation, etc.
878	  Writing 1 or 0 to /proc/appldata/memory creates(1) or removes(0) a z/VM
879	  APPLDATA monitor record, i.e. enables or disables monitoring this record
880	  on the z/VM side.
881
882	  Default is disabled.
883	  The /proc entry can also be read from, showing the current settings.
884
885	  This can also be compiled as a module, which will be called
886	  appldata_mem.o.
887
888config APPLDATA_OS
889	def_tristate m
890	prompt "Monitor OS statistics"
891	depends on APPLDATA_BASE
892	help
893	  This provides OS related data to the Linux - VM Monitor Stream, like
894	  CPU utilisation, etc.
895	  Writing 1 or 0 to /proc/appldata/os creates(1) or removes(0) a z/VM
896	  APPLDATA monitor record, i.e. enables or disables monitoring this record
897	  on the z/VM side.
898
899	  Default is disabled.
900	  This can also be compiled as a module, which will be called
901	  appldata_os.o.
902
903config APPLDATA_NET_SUM
904	def_tristate m
905	prompt "Monitor overall network statistics"
906	depends on APPLDATA_BASE && NET
907	help
908	  This provides network related data to the Linux - VM Monitor Stream,
909	  currently there is only a total sum of network I/O statistics, no
910	  per-interface data.
911	  Writing 1 or 0 to /proc/appldata/net_sum creates(1) or removes(0) a z/VM
912	  APPLDATA monitor record, i.e. enables or disables monitoring this record
913	  on the z/VM side.
914
915	  Default is disabled.
916	  This can also be compiled as a module, which will be called
917	  appldata_net_sum.o.
918
919config S390_HYPFS_FS
920	def_bool y
921	prompt "s390 hypervisor file system support"
922	select SYS_HYPERVISOR
923	help
924	  This is a virtual file system intended to provide accounting
925	  information in an s390 hypervisor environment.
926
927source "arch/s390/kvm/Kconfig"
928
929config S390_GUEST
930	def_bool y
931	prompt "s390 support for virtio devices"
932	select TTY
933	select VIRTUALIZATION
934	select VIRTIO
935	help
936	  Enabling this option adds support for virtio based paravirtual device
937	  drivers on s390.
938
939	  Select this option if you want to run the kernel as a guest under
940	  the KVM hypervisor.
941
942endmenu
943
944menu "Selftests"
945
946config S390_UNWIND_SELFTEST
947	def_tristate n
948	prompt "Test unwind functions"
949	help
950	  This option enables s390 specific stack unwinder testing kernel
951	  module. This option is not useful for distributions or general
952	  kernels, but only for kernel developers working on architecture code.
953
954	  Say N if you are unsure.
955
956endmenu
957