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