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