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