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