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