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