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