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