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