xref: /openbmc/linux/arch/s390/Kconfig (revision cd99b9eb)
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 ALTERNATE_USER_ADDRESS_SPACE
59	select ARCH_32BIT_USTAT_F_TINODE
60	select ARCH_BINFMT_ELF_STATE
61	select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
62	select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM
63	select ARCH_ENABLE_MEMORY_HOTREMOVE
64	select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2
65	select ARCH_HAS_CURRENT_STACK_POINTER
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_MEMBARRIER_SYNC_CORE
76	select ARCH_HAS_MEM_ENCRYPT
77	select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
78	select ARCH_HAS_PTE_SPECIAL
79	select ARCH_HAS_SCALED_CPUTIME
80	select ARCH_HAS_SET_DIRECT_MAP
81	select ARCH_HAS_SET_MEMORY
82	select ARCH_HAS_STRICT_KERNEL_RWX
83	select ARCH_HAS_STRICT_MODULE_RWX
84	select ARCH_HAS_SYSCALL_WRAPPER
85	select ARCH_HAS_UBSAN_SANITIZE_ALL
86	select ARCH_HAS_VDSO_DATA
87	select ARCH_HAVE_NMI_SAFE_CMPXCHG
88	select ARCH_INLINE_READ_LOCK
89	select ARCH_INLINE_READ_LOCK_BH
90	select ARCH_INLINE_READ_LOCK_IRQ
91	select ARCH_INLINE_READ_LOCK_IRQSAVE
92	select ARCH_INLINE_READ_TRYLOCK
93	select ARCH_INLINE_READ_UNLOCK
94	select ARCH_INLINE_READ_UNLOCK_BH
95	select ARCH_INLINE_READ_UNLOCK_IRQ
96	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE
97	select ARCH_INLINE_SPIN_LOCK
98	select ARCH_INLINE_SPIN_LOCK_BH
99	select ARCH_INLINE_SPIN_LOCK_IRQ
100	select ARCH_INLINE_SPIN_LOCK_IRQSAVE
101	select ARCH_INLINE_SPIN_TRYLOCK
102	select ARCH_INLINE_SPIN_TRYLOCK_BH
103	select ARCH_INLINE_SPIN_UNLOCK
104	select ARCH_INLINE_SPIN_UNLOCK_BH
105	select ARCH_INLINE_SPIN_UNLOCK_IRQ
106	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
107	select ARCH_INLINE_WRITE_LOCK
108	select ARCH_INLINE_WRITE_LOCK_BH
109	select ARCH_INLINE_WRITE_LOCK_IRQ
110	select ARCH_INLINE_WRITE_LOCK_IRQSAVE
111	select ARCH_INLINE_WRITE_TRYLOCK
112	select ARCH_INLINE_WRITE_UNLOCK
113	select ARCH_INLINE_WRITE_UNLOCK_BH
114	select ARCH_INLINE_WRITE_UNLOCK_IRQ
115	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
116	select ARCH_STACKWALK
117	select ARCH_SUPPORTS_ATOMIC_RMW
118	select ARCH_SUPPORTS_DEBUG_PAGEALLOC
119	select ARCH_SUPPORTS_HUGETLBFS
120	select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && CC_IS_CLANG
121	select ARCH_SUPPORTS_NUMA_BALANCING
122	select ARCH_SUPPORTS_PER_VMA_LOCK
123	select ARCH_USE_BUILTIN_BSWAP
124	select ARCH_USE_CMPXCHG_LOCKREF
125	select ARCH_USE_SYM_ANNOTATIONS
126	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
127	select ARCH_WANTS_NO_INSTR
128	select ARCH_WANT_DEFAULT_BPF_JIT
129	select ARCH_WANT_IPC_PARSE_VERSION
130	select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
131	select BUILDTIME_TABLE_SORT
132	select CLONE_BACKWARDS2
133	select DMA_OPS if PCI
134	select DYNAMIC_FTRACE if FUNCTION_TRACER
135	select FUNCTION_ALIGNMENT_8B if CC_IS_GCC
136	select FUNCTION_ALIGNMENT_16B if !CC_IS_GCC
137	select GENERIC_ALLOCATOR
138	select GENERIC_CPU_AUTOPROBE
139	select GENERIC_CPU_VULNERABILITIES
140	select GENERIC_ENTRY
141	select GENERIC_GETTIMEOFDAY
142	select GENERIC_PTDUMP
143	select GENERIC_SMP_IDLE_THREAD
144	select GENERIC_TIME_VSYSCALL
145	select GENERIC_VDSO_TIME_NS
146	select GENERIC_IOREMAP if PCI
147	select HAVE_ALIGNED_STRUCT_PAGE if SLUB
148	select HAVE_ARCH_AUDITSYSCALL
149	select HAVE_ARCH_JUMP_LABEL
150	select HAVE_ARCH_JUMP_LABEL_RELATIVE
151	select HAVE_ARCH_KASAN
152	select HAVE_ARCH_KASAN_VMALLOC
153	select HAVE_ARCH_KCSAN
154	select HAVE_ARCH_KFENCE
155	select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
156	select HAVE_ARCH_SECCOMP_FILTER
157	select HAVE_ARCH_SOFT_DIRTY
158	select HAVE_ARCH_STACKLEAK
159	select HAVE_ARCH_TRACEHOOK
160	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
161	select HAVE_ARCH_VMAP_STACK
162	select HAVE_ASM_MODVERSIONS
163	select HAVE_CMPXCHG_DOUBLE
164	select HAVE_CMPXCHG_LOCAL
165	select HAVE_DEBUG_KMEMLEAK
166	select HAVE_DMA_CONTIGUOUS
167	select HAVE_DYNAMIC_FTRACE
168	select HAVE_DYNAMIC_FTRACE_WITH_ARGS
169	select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
170	select HAVE_DYNAMIC_FTRACE_WITH_REGS
171	select HAVE_EBPF_JIT if HAVE_MARCH_Z196_FEATURES
172	select HAVE_EFFICIENT_UNALIGNED_ACCESS
173	select HAVE_FAST_GUP
174	select HAVE_FENTRY
175	select HAVE_FTRACE_MCOUNT_RECORD
176	select HAVE_FUNCTION_ARG_ACCESS_API
177	select HAVE_FUNCTION_ERROR_INJECTION
178	select HAVE_FUNCTION_GRAPH_RETVAL
179	select HAVE_FUNCTION_GRAPH_TRACER
180	select HAVE_FUNCTION_TRACER
181	select HAVE_GCC_PLUGINS
182	select HAVE_GENERIC_VDSO
183	select HAVE_IOREMAP_PROT if PCI
184	select HAVE_KERNEL_BZIP2
185	select HAVE_KERNEL_GZIP
186	select HAVE_KERNEL_LZ4
187	select HAVE_KERNEL_LZMA
188	select HAVE_KERNEL_LZO
189	select HAVE_KERNEL_UNCOMPRESSED
190	select HAVE_KERNEL_XZ
191	select HAVE_KERNEL_ZSTD
192	select HAVE_KPROBES
193	select HAVE_KPROBES_ON_FTRACE
194	select HAVE_KRETPROBES
195	select HAVE_KVM
196	select HAVE_LIVEPATCH
197	select HAVE_MEMBLOCK_PHYS_MAP
198	select HAVE_MOD_ARCH_SPECIFIC
199	select HAVE_NMI
200	select HAVE_NOP_MCOUNT
201	select HAVE_PCI
202	select HAVE_PERF_EVENTS
203	select HAVE_PERF_REGS
204	select HAVE_PERF_USER_STACK_DUMP
205	select HAVE_REGS_AND_STACK_ACCESS_API
206	select HAVE_RELIABLE_STACKTRACE
207	select HAVE_RETHOOK
208	select HAVE_RSEQ
209	select HAVE_SAMPLE_FTRACE_DIRECT
210	select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
211	select HAVE_SETUP_PER_CPU_AREA
212	select HAVE_SOFTIRQ_ON_OWN_STACK
213	select HAVE_SYSCALL_TRACEPOINTS
214	select HAVE_VIRT_CPU_ACCOUNTING
215	select HAVE_VIRT_CPU_ACCOUNTING_IDLE
216	select IOMMU_HELPER		if PCI
217	select IOMMU_SUPPORT		if PCI
218	select KEXEC
219	select MMU_GATHER_MERGE_VMAS
220	select MMU_GATHER_NO_GATHER
221	select MMU_GATHER_RCU_TABLE_FREE
222	select MODULES_USE_ELF_RELA
223	select NEED_DMA_MAP_STATE	if PCI
224	select NEED_PER_CPU_EMBED_FIRST_CHUNK
225	select NEED_SG_DMA_LENGTH	if PCI
226	select OLD_SIGACTION
227	select OLD_SIGSUSPEND3
228	select PCI_DOMAINS		if PCI
229	select PCI_MSI			if PCI
230	select PCI_MSI_ARCH_FALLBACKS	if PCI_MSI
231	select SPARSE_IRQ
232	select SWIOTLB
233	select SYSCTL_EXCEPTION_TRACE
234	select THREAD_INFO_IN_TASK
235	select TRACE_IRQFLAGS_SUPPORT
236	select TTY
237	select VIRT_CPU_ACCOUNTING
238	select ZONE_DMA
239	# Note: keep the above list sorted alphabetically
240
241config SCHED_OMIT_FRAME_POINTER
242	def_bool y
243
244config PGTABLE_LEVELS
245	int
246	default 5
247
248source "kernel/livepatch/Kconfig"
249
250config ARCH_SUPPORTS_KEXEC
251	def_bool y
252
253config ARCH_SUPPORTS_KEXEC_FILE
254	def_bool CRYPTO && CRYPTO_SHA256 && CRYPTO_SHA256_S390
255
256config ARCH_SUPPORTS_KEXEC_SIG
257	def_bool MODULE_SIG_FORMAT
258
259config ARCH_SUPPORTS_KEXEC_PURGATORY
260	def_bool KEXEC_FILE
261
262config ARCH_SUPPORTS_CRASH_DUMP
263	def_bool y
264	help
265	  Refer to <file:Documentation/arch/s390/zfcpdump.rst> for more details on this.
266	  This option also enables s390 zfcpdump.
267	  See also <file:Documentation/arch/s390/zfcpdump.rst>
268
269menu "Processor type and features"
270
271config HAVE_MARCH_Z10_FEATURES
272	def_bool n
273
274config HAVE_MARCH_Z196_FEATURES
275	def_bool n
276	select HAVE_MARCH_Z10_FEATURES
277
278config HAVE_MARCH_ZEC12_FEATURES
279	def_bool n
280	select HAVE_MARCH_Z196_FEATURES
281
282config HAVE_MARCH_Z13_FEATURES
283	def_bool n
284	select HAVE_MARCH_ZEC12_FEATURES
285
286config HAVE_MARCH_Z14_FEATURES
287	def_bool n
288	select HAVE_MARCH_Z13_FEATURES
289
290config HAVE_MARCH_Z15_FEATURES
291	def_bool n
292	select HAVE_MARCH_Z14_FEATURES
293
294config HAVE_MARCH_Z16_FEATURES
295	def_bool n
296	select HAVE_MARCH_Z15_FEATURES
297
298choice
299	prompt "Processor type"
300	default MARCH_Z196
301
302config MARCH_Z10
303	bool "IBM System z10"
304	select HAVE_MARCH_Z10_FEATURES
305	depends on $(cc-option,-march=z10)
306	help
307	  Select this to enable optimizations for IBM System z10 (2097 and 2098
308	  series). This is the oldest machine generation currently supported.
309
310config MARCH_Z196
311	bool "IBM zEnterprise 114 and 196"
312	select HAVE_MARCH_Z196_FEATURES
313	depends on $(cc-option,-march=z196)
314	help
315	  Select this to enable optimizations for IBM zEnterprise 114 and 196
316	  (2818 and 2817 series). The kernel will be slightly faster but will
317	  not work on older machines.
318
319config MARCH_ZEC12
320	bool "IBM zBC12 and zEC12"
321	select HAVE_MARCH_ZEC12_FEATURES
322	depends on $(cc-option,-march=zEC12)
323	help
324	  Select this to enable optimizations for IBM zBC12 and zEC12 (2828 and
325	  2827 series). The kernel will be slightly faster but will not work on
326	  older machines.
327
328config MARCH_Z13
329	bool "IBM z13s and z13"
330	select HAVE_MARCH_Z13_FEATURES
331	depends on $(cc-option,-march=z13)
332	help
333	  Select this to enable optimizations for IBM z13s and z13 (2965 and
334	  2964 series). The kernel will be slightly faster but will not work on
335	  older machines.
336
337config MARCH_Z14
338	bool "IBM z14 ZR1 and z14"
339	select HAVE_MARCH_Z14_FEATURES
340	depends on $(cc-option,-march=z14)
341	help
342	  Select this to enable optimizations for IBM z14 ZR1 and z14 (3907
343	  and 3906 series). The kernel will be slightly faster but will not
344	  work on older machines.
345
346config MARCH_Z15
347	bool "IBM z15"
348	select HAVE_MARCH_Z15_FEATURES
349	depends on $(cc-option,-march=z15)
350	help
351	  Select this to enable optimizations for IBM z15 (8562
352	  and 8561 series). The kernel will be slightly faster but will not
353	  work on older machines.
354
355config MARCH_Z16
356	bool "IBM z16"
357	select HAVE_MARCH_Z16_FEATURES
358	depends on $(cc-option,-march=z16)
359	help
360	  Select this to enable optimizations for IBM z16 (3931 and
361	  3932 series).
362
363endchoice
364
365config MARCH_Z10_TUNE
366	def_bool TUNE_Z10 || MARCH_Z10 && TUNE_DEFAULT
367
368config MARCH_Z196_TUNE
369	def_bool TUNE_Z196 || MARCH_Z196 && TUNE_DEFAULT
370
371config MARCH_ZEC12_TUNE
372	def_bool TUNE_ZEC12 || MARCH_ZEC12 && TUNE_DEFAULT
373
374config MARCH_Z13_TUNE
375	def_bool TUNE_Z13 || MARCH_Z13 && TUNE_DEFAULT
376
377config MARCH_Z14_TUNE
378	def_bool TUNE_Z14 || MARCH_Z14 && TUNE_DEFAULT
379
380config MARCH_Z15_TUNE
381	def_bool TUNE_Z15 || MARCH_Z15 && TUNE_DEFAULT
382
383config MARCH_Z16_TUNE
384	def_bool TUNE_Z16 || MARCH_Z16 && TUNE_DEFAULT
385
386choice
387	prompt "Tune code generation"
388	default TUNE_DEFAULT
389	help
390	  Cause the compiler to tune (-mtune) the generated code for a machine.
391	  This will make the code run faster on the selected machine but
392	  somewhat slower on other machines.
393	  This option only changes how the compiler emits instructions, not the
394	  selection of instructions itself, so the resulting kernel will run on
395	  all other machines.
396
397config TUNE_DEFAULT
398	bool "Default"
399	help
400	  Tune the generated code for the target processor for which the kernel
401	  will be compiled.
402
403config TUNE_Z10
404	bool "IBM System z10"
405
406config TUNE_Z196
407	bool "IBM zEnterprise 114 and 196"
408	depends on $(cc-option,-mtune=z196)
409
410config TUNE_ZEC12
411	bool "IBM zBC12 and zEC12"
412	depends on $(cc-option,-mtune=zEC12)
413
414config TUNE_Z13
415	bool "IBM z13s and z13"
416	depends on $(cc-option,-mtune=z13)
417
418config TUNE_Z14
419	bool "IBM z14 ZR1 and z14"
420	depends on $(cc-option,-mtune=z14)
421
422config TUNE_Z15
423	bool "IBM z15"
424	depends on $(cc-option,-mtune=z15)
425
426config TUNE_Z16
427	bool "IBM z16"
428	depends on $(cc-option,-mtune=z16)
429
430endchoice
431
432config 64BIT
433	def_bool y
434
435config COMMAND_LINE_SIZE
436	int "Maximum size of kernel command line"
437	default 4096
438	range 896 1048576
439	help
440	  This allows you to specify the maximum length of the kernel command
441	  line.
442
443config COMPAT
444	def_bool y
445	prompt "Kernel support for 31 bit emulation"
446	select ARCH_WANT_OLD_COMPAT_IPC
447	select COMPAT_OLD_SIGACTION
448	select HAVE_UID16
449	depends on MULTIUSER
450	depends on !CC_IS_CLANG
451	help
452	  Select this option if you want to enable your system kernel to
453	  handle system-calls from ELF binaries for 31 bit ESA.  This option
454	  (and some other stuff like libraries and such) is needed for
455	  executing 31 bit applications.  It is safe to say "Y".
456
457config SMP
458	def_bool y
459
460config NR_CPUS
461	int "Maximum number of CPUs (2-512)"
462	range 2 512
463	default "64"
464	help
465	  This allows you to specify the maximum number of CPUs which this
466	  kernel will support. The maximum supported value is 512 and the
467	  minimum value which makes sense is 2.
468
469	  This is purely to save memory - each supported CPU adds
470	  approximately sixteen kilobytes to the kernel image.
471
472config HOTPLUG_CPU
473	def_bool y
474
475config NUMA
476	bool "NUMA support"
477	depends on SCHED_TOPOLOGY
478	default n
479	help
480	  Enable NUMA support
481
482	  This option adds NUMA support to the kernel.
483
484config NODES_SHIFT
485	int
486	depends on NUMA
487	default "1"
488
489config SCHED_SMT
490	def_bool n
491
492config SCHED_MC
493	def_bool n
494
495config SCHED_TOPOLOGY
496	def_bool y
497	prompt "Topology scheduler support"
498	select SCHED_SMT
499	select SCHED_MC
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 CERT_STORE
508	bool "Get user certificates via DIAG320"
509	depends on KEYS
510	select CRYPTO_LIB_SHA256
511	help
512	  Enable this option if you want to access user-provided secure boot
513	  certificates via DIAG 0x320.
514
515	  These certificates will be made available via the keyring named
516	  'cert_store'.
517
518config KERNEL_NOBP
519	def_bool n
520	prompt "Enable modified branch prediction for the kernel by default"
521	help
522	  If this option is selected the kernel will switch to a modified
523	  branch prediction mode if the firmware interface is available.
524	  The modified branch prediction mode improves the behaviour in
525	  regard to speculative execution.
526
527	  With the option enabled the kernel parameter "nobp=0" or "nospec"
528	  can be used to run the kernel in the normal branch prediction mode.
529
530	  With the option disabled the modified branch prediction mode is
531	  enabled with the "nobp=1" kernel parameter.
532
533	  If unsure, say N.
534
535config EXPOLINE
536	def_bool n
537	depends on $(cc-option,-mindirect-branch=thunk)
538	prompt "Avoid speculative indirect branches in the kernel"
539	help
540	  Compile the kernel with the expoline compiler options to guard
541	  against kernel-to-user data leaks by avoiding speculative indirect
542	  branches.
543	  Requires a compiler with -mindirect-branch=thunk support for full
544	  protection. The kernel may run slower.
545
546	  If unsure, say N.
547
548config EXPOLINE_EXTERN
549	def_bool n
550	depends on EXPOLINE
551	depends on CC_IS_GCC && GCC_VERSION >= 110200
552	depends on $(success,$(srctree)/arch/s390/tools/gcc-thunk-extern.sh $(CC))
553	prompt "Generate expolines as extern functions."
554	help
555	  This option is required for some tooling like kpatch. The kernel is
556	  compiled with -mindirect-branch=thunk-extern and requires a newer
557	  compiler.
558
559	  If unsure, say N.
560
561choice
562	prompt "Expoline default"
563	depends on EXPOLINE
564	default EXPOLINE_FULL
565
566config EXPOLINE_OFF
567	bool "spectre_v2=off"
568
569config EXPOLINE_AUTO
570	bool "spectre_v2=auto"
571
572config EXPOLINE_FULL
573	bool "spectre_v2=on"
574
575endchoice
576
577config RELOCATABLE
578	def_bool y
579	help
580	  This builds a kernel image that retains relocation information
581	  so it can be loaded at an arbitrary address.
582	  The kernel is linked as a position-independent executable (PIE)
583	  and contains dynamic relocations which are processed early in the
584	  bootup process.
585	  The relocations make the kernel image about 15% larger (compressed
586	  10%), but are discarded at runtime.
587	  Note: this option exists only for documentation purposes, please do
588	  not remove it.
589
590config RANDOMIZE_BASE
591	bool "Randomize the address of the kernel image (KASLR)"
592	default y
593	help
594	  In support of Kernel Address Space Layout Randomization (KASLR),
595	  this randomizes the address at which the kernel image is loaded,
596	  as a security feature that deters exploit attempts relying on
597	  knowledge of the location of kernel internals.
598
599endmenu
600
601menu "Memory setup"
602
603config ARCH_SPARSEMEM_ENABLE
604	def_bool y
605	select SPARSEMEM_VMEMMAP_ENABLE
606	select SPARSEMEM_VMEMMAP
607
608config ARCH_SPARSEMEM_DEFAULT
609	def_bool y
610
611config MAX_PHYSMEM_BITS
612	int "Maximum size of supported physical memory in bits (42-53)"
613	range 42 53
614	default "46"
615	help
616	  This option specifies the maximum supported size of physical memory
617	  in bits. Supported is any size between 2^42 (4TB) and 2^53 (8PB).
618	  Increasing the number of bits also increases the kernel image size.
619	  By default 46 bits (64TB) are supported.
620
621config CHECK_STACK
622	def_bool y
623	depends on !VMAP_STACK
624	prompt "Detect kernel stack overflow"
625	help
626	  This option enables the compiler option -mstack-guard and
627	  -mstack-size if they are available. If the compiler supports them
628	  it will emit additional code to each function prolog to trigger
629	  an illegal operation if the kernel stack is about to overflow.
630
631	  Say N if you are unsure.
632
633config STACK_GUARD
634	int "Size of the guard area (128-1024)"
635	range 128 1024
636	depends on CHECK_STACK
637	default "256"
638	help
639	  This allows you to specify the size of the guard area at the lower
640	  end of the kernel stack. If the kernel stack points into the guard
641	  area on function entry an illegal operation is triggered. The size
642	  needs to be a power of 2. Please keep in mind that the size of an
643	  interrupt frame is 184 bytes for 31 bit and 328 bytes on 64 bit.
644	  The minimum size for the stack guard should be 256 for 31 bit and
645	  512 for 64 bit.
646
647endmenu
648
649menu "I/O subsystem"
650
651config QDIO
652	def_tristate y
653	prompt "QDIO support"
654	help
655	  This driver provides the Queued Direct I/O base support for
656	  IBM System z.
657
658	  To compile this driver as a module, choose M here: the
659	  module will be called qdio.
660
661	  If unsure, say Y.
662
663if PCI
664
665config PCI_NR_FUNCTIONS
666	int "Maximum number of PCI functions (1-4096)"
667	range 1 4096
668	default "512"
669	help
670	  This allows you to specify the maximum number of PCI functions which
671	  this kernel will support.
672
673endif # PCI
674
675config HAS_IOMEM
676	def_bool PCI
677
678config CHSC_SCH
679	def_tristate m
680	prompt "Support for CHSC subchannels"
681	help
682	  This driver allows usage of CHSC subchannels. A CHSC subchannel
683	  is usually present on LPAR only.
684	  The driver creates a device /dev/chsc, which may be used to
685	  obtain I/O configuration information about the machine and
686	  to issue asynchronous chsc commands (DANGEROUS).
687	  You will usually only want to use this interface on a special
688	  LPAR designated for system management.
689
690	  To compile this driver as a module, choose M here: the
691	  module will be called chsc_sch.
692
693	  If unsure, say N.
694
695config SCM_BUS
696	def_bool y
697	prompt "SCM bus driver"
698	help
699	  Bus driver for Storage Class Memory.
700
701config EADM_SCH
702	def_tristate m
703	prompt "Support for EADM subchannels"
704	depends on SCM_BUS
705	help
706	  This driver allows usage of EADM subchannels. EADM subchannels act
707	  as a communication vehicle for SCM increments.
708
709	  To compile this driver as a module, choose M here: the
710	  module will be called eadm_sch.
711
712config VFIO_CCW
713	def_tristate n
714	prompt "Support for VFIO-CCW subchannels"
715	depends on VFIO
716	select VFIO_MDEV
717	help
718	  This driver allows usage of I/O subchannels via VFIO-CCW.
719
720	  To compile this driver as a module, choose M here: the
721	  module will be called vfio_ccw.
722
723config VFIO_AP
724	def_tristate n
725	prompt "VFIO support for AP devices"
726	depends on KVM
727	depends on VFIO
728	depends on ZCRYPT
729	select VFIO_MDEV
730	help
731	  This driver grants access to Adjunct Processor (AP) devices
732	  via the VFIO mediated device interface.
733
734	  To compile this driver as a module, choose M here: the module
735	  will be called vfio_ap.
736
737endmenu
738
739config CCW
740	def_bool y
741
742config HAVE_PNETID
743	tristate
744	default (SMC || CCWGROUP)
745
746menu "Virtualization"
747
748config PROTECTED_VIRTUALIZATION_GUEST
749	def_bool n
750	prompt "Protected virtualization guest support"
751	help
752	  Select this option, if you want to be able to run this
753	  kernel as a protected virtualization KVM guest.
754	  Protected virtualization capable machines have a mini hypervisor
755	  located at machine level (an ultravisor). With help of the
756	  Ultravisor, KVM will be able to run "protected" VMs, special
757	  VMs whose memory and management data are unavailable to KVM.
758
759config PFAULT
760	def_bool y
761	prompt "Pseudo page fault support"
762	help
763	  Select this option, if you want to use PFAULT pseudo page fault
764	  handling under VM. If running native or in LPAR, this option
765	  has no effect. If your VM does not support PFAULT, PAGEEX
766	  pseudo page fault handling will be used.
767	  Note that VM 4.2 supports PFAULT but has a bug in its
768	  implementation that causes some problems.
769	  Everybody who wants to run Linux under VM != VM4.2 should select
770	  this option.
771
772config CMM
773	def_tristate n
774	prompt "Cooperative memory management"
775	help
776	  Select this option, if you want to enable the kernel interface
777	  to reduce the memory size of the system. This is accomplished
778	  by allocating pages of memory and put them "on hold". This only
779	  makes sense for a system running under VM where the unused pages
780	  will be reused by VM for other guest systems. The interface
781	  allows an external monitor to balance memory of many systems.
782	  Everybody who wants to run Linux under VM should select this
783	  option.
784
785config CMM_IUCV
786	def_bool y
787	prompt "IUCV special message interface to cooperative memory management"
788	depends on CMM && (SMSGIUCV=y || CMM=SMSGIUCV)
789	help
790	  Select this option to enable the special message interface to
791	  the cooperative memory management.
792
793config APPLDATA_BASE
794	def_bool n
795	prompt "Linux - VM Monitor Stream, base infrastructure"
796	depends on PROC_SYSCTL
797	help
798	  This provides a kernel interface for creating and updating z/VM APPLDATA
799	  monitor records. The monitor records are updated at certain time
800	  intervals, once the timer is started.
801	  Writing 1 or 0 to /proc/appldata/timer starts(1) or stops(0) the timer,
802	  i.e. enables or disables monitoring on the Linux side.
803	  A custom interval value (in seconds) can be written to
804	  /proc/appldata/interval.
805
806	  Defaults are 60 seconds interval and timer off.
807	  The /proc entries can also be read from, showing the current settings.
808
809config APPLDATA_MEM
810	def_tristate m
811	prompt "Monitor memory management statistics"
812	depends on APPLDATA_BASE && VM_EVENT_COUNTERS
813	help
814	  This provides memory management related data to the Linux - VM Monitor
815	  Stream, like paging/swapping rate, memory utilisation, etc.
816	  Writing 1 or 0 to /proc/appldata/memory creates(1) or removes(0) a z/VM
817	  APPLDATA monitor record, i.e. enables or disables monitoring this record
818	  on the z/VM side.
819
820	  Default is disabled.
821	  The /proc entry can also be read from, showing the current settings.
822
823	  This can also be compiled as a module, which will be called
824	  appldata_mem.o.
825
826config APPLDATA_OS
827	def_tristate m
828	prompt "Monitor OS statistics"
829	depends on APPLDATA_BASE
830	help
831	  This provides OS related data to the Linux - VM Monitor Stream, like
832	  CPU utilisation, etc.
833	  Writing 1 or 0 to /proc/appldata/os creates(1) or removes(0) a z/VM
834	  APPLDATA monitor record, i.e. enables or disables monitoring this record
835	  on the z/VM side.
836
837	  Default is disabled.
838	  This can also be compiled as a module, which will be called
839	  appldata_os.o.
840
841config APPLDATA_NET_SUM
842	def_tristate m
843	prompt "Monitor overall network statistics"
844	depends on APPLDATA_BASE && NET
845	help
846	  This provides network related data to the Linux - VM Monitor Stream,
847	  currently there is only a total sum of network I/O statistics, no
848	  per-interface data.
849	  Writing 1 or 0 to /proc/appldata/net_sum creates(1) or removes(0) a z/VM
850	  APPLDATA monitor record, i.e. enables or disables monitoring this record
851	  on the z/VM side.
852
853	  Default is disabled.
854	  This can also be compiled as a module, which will be called
855	  appldata_net_sum.o.
856
857config S390_HYPFS
858	def_bool y
859	prompt "s390 hypervisor information"
860	help
861	  This provides several binary files at (debugfs)/s390_hypfs/ to
862	  provide accounting information in an s390 hypervisor environment.
863
864config S390_HYPFS_FS
865	def_bool n
866	prompt "s390 hypervisor file system support"
867	select SYS_HYPERVISOR
868	depends on S390_HYPFS
869	help
870	  This is a virtual file system intended to provide accounting
871	  information in an s390 hypervisor environment. This file system
872	  is deprecated and should not be used.
873
874	  Say N if you are unsure.
875
876source "arch/s390/kvm/Kconfig"
877
878config S390_GUEST
879	def_bool y
880	prompt "s390 support for virtio devices"
881	select TTY
882	select VIRTUALIZATION
883	select VIRTIO
884	help
885	  Enabling this option adds support for virtio based paravirtual device
886	  drivers on s390.
887
888	  Select this option if you want to run the kernel as a guest under
889	  the KVM hypervisor.
890
891endmenu
892
893config S390_MODULES_SANITY_TEST_HELPERS
894	def_bool n
895
896menu "Selftests"
897
898config S390_UNWIND_SELFTEST
899	def_tristate n
900	depends on KUNIT
901	default KUNIT_ALL_TESTS
902	prompt "Test unwind functions"
903	help
904	  This option enables s390 specific stack unwinder testing kernel
905	  module. This option is not useful for distributions or general
906	  kernels, but only for kernel developers working on architecture code.
907
908	  Say N if you are unsure.
909
910config S390_KPROBES_SANITY_TEST
911	def_tristate n
912	prompt "Enable s390 specific kprobes tests"
913	depends on KPROBES
914	depends on KUNIT
915	help
916	  This option enables an s390 specific kprobes test module. This option
917	  is not useful for distributions or general kernels, but only for kernel
918	  developers working on architecture code.
919
920	  Say N if you are unsure.
921
922config S390_MODULES_SANITY_TEST
923	def_tristate n
924	depends on KUNIT
925	default KUNIT_ALL_TESTS
926	prompt "Enable s390 specific modules tests"
927	select S390_MODULES_SANITY_TEST_HELPERS
928	help
929	  This option enables an s390 specific modules test. This option is
930	  not useful for distributions or general kernels, but only for
931	  kernel developers working on architecture code.
932
933	  Say N if you are unsure.
934endmenu
935