linux/arch/s390/Kconfig
<<
>>
Prefs
   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 GENERIC_HWEIGHT
  21        def_bool y
  22
  23config GENERIC_BUG
  24        def_bool y if BUG
  25
  26config GENERIC_BUG_RELATIVE_POINTERS
  27        def_bool y
  28
  29config GENERIC_LOCKBREAK
  30        def_bool y if PREEMPTION
  31
  32config PGSTE
  33        def_bool y if KVM
  34
  35config AUDIT_ARCH
  36        def_bool y
  37
  38config NO_IOPORT_MAP
  39        def_bool y
  40
  41config PCI_QUIRKS
  42        def_bool n
  43
  44config ARCH_SUPPORTS_UPROBES
  45        def_bool y
  46
  47config KASAN_SHADOW_OFFSET
  48        hex
  49        depends on KASAN
  50        default 0x18000000000000
  51
  52config S390
  53        def_bool y
  54        #
  55        # Note: keep this list sorted alphabetically
  56        #
  57        imply IMA_SECURE_AND_OR_TRUSTED_BOOT
  58        select ARCH_32BIT_USTAT_F_TINODE
  59        select ARCH_BINFMT_ELF_STATE
  60        select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM
  61        select ARCH_ENABLE_MEMORY_HOTREMOVE
  62        select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2
  63        select ARCH_HAS_DEBUG_VM_PGTABLE
  64        select ARCH_HAS_DEBUG_WX
  65        select ARCH_HAS_DEVMEM_IS_ALLOWED
  66        select ARCH_HAS_ELF_RANDOMIZE
  67        select ARCH_HAS_FORCE_DMA_UNENCRYPTED
  68        select ARCH_HAS_FORTIFY_SOURCE
  69        select ARCH_HAS_GCOV_PROFILE_ALL
  70        select ARCH_HAS_GIGANTIC_PAGE
  71        select ARCH_HAS_KCOV
  72        select ARCH_HAS_MEM_ENCRYPT
  73        select ARCH_HAS_PTE_SPECIAL
  74        select ARCH_HAS_SCALED_CPUTIME
  75        select ARCH_HAS_SET_MEMORY
  76        select ARCH_HAS_STRICT_KERNEL_RWX
  77        select ARCH_HAS_STRICT_MODULE_RWX
  78        select ARCH_HAS_SYSCALL_WRAPPER
  79        select ARCH_HAS_UBSAN_SANITIZE_ALL
  80        select ARCH_HAS_VDSO_DATA
  81        select ARCH_HAVE_NMI_SAFE_CMPXCHG
  82        select ARCH_INLINE_READ_LOCK
  83        select ARCH_INLINE_READ_LOCK_BH
  84        select ARCH_INLINE_READ_LOCK_IRQ
  85        select ARCH_INLINE_READ_LOCK_IRQSAVE
  86        select ARCH_INLINE_READ_TRYLOCK
  87        select ARCH_INLINE_READ_UNLOCK
  88        select ARCH_INLINE_READ_UNLOCK_BH
  89        select ARCH_INLINE_READ_UNLOCK_IRQ
  90        select ARCH_INLINE_READ_UNLOCK_IRQRESTORE
  91        select ARCH_INLINE_SPIN_LOCK
  92        select ARCH_INLINE_SPIN_LOCK_BH
  93        select ARCH_INLINE_SPIN_LOCK_IRQ
  94        select ARCH_INLINE_SPIN_LOCK_IRQSAVE
  95        select ARCH_INLINE_SPIN_TRYLOCK
  96        select ARCH_INLINE_SPIN_TRYLOCK_BH
  97        select ARCH_INLINE_SPIN_UNLOCK
  98        select ARCH_INLINE_SPIN_UNLOCK_BH
  99        select ARCH_INLINE_SPIN_UNLOCK_IRQ
 100        select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
 101        select ARCH_INLINE_WRITE_LOCK
 102        select ARCH_INLINE_WRITE_LOCK_BH
 103        select ARCH_INLINE_WRITE_LOCK_IRQ
 104        select ARCH_INLINE_WRITE_LOCK_IRQSAVE
 105        select ARCH_INLINE_WRITE_TRYLOCK
 106        select ARCH_INLINE_WRITE_UNLOCK
 107        select ARCH_INLINE_WRITE_UNLOCK_BH
 108        select ARCH_INLINE_WRITE_UNLOCK_IRQ
 109        select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
 110        select ARCH_STACKWALK
 111        select ARCH_SUPPORTS_ATOMIC_RMW
 112        select ARCH_SUPPORTS_DEBUG_PAGEALLOC
 113        select ARCH_SUPPORTS_HUGETLBFS
 114        select ARCH_SUPPORTS_NUMA_BALANCING
 115        select ARCH_USE_BUILTIN_BSWAP
 116        select ARCH_USE_CMPXCHG_LOCKREF
 117        select ARCH_WANTS_DYNAMIC_TASK_STRUCT
 118        select ARCH_WANTS_NO_INSTR
 119        select ARCH_WANT_DEFAULT_BPF_JIT
 120        select ARCH_WANT_IPC_PARSE_VERSION
 121        select BUILDTIME_TABLE_SORT
 122        select CLONE_BACKWARDS2
 123        select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES
 124        select DMA_OPS if PCI
 125        select DYNAMIC_FTRACE if FUNCTION_TRACER
 126        select GENERIC_ALLOCATOR
 127        select GENERIC_CPU_AUTOPROBE
 128        select GENERIC_CPU_VULNERABILITIES
 129        select GENERIC_ENTRY
 130        select GENERIC_FIND_FIRST_BIT
 131        select GENERIC_GETTIMEOFDAY
 132        select GENERIC_PTDUMP
 133        select GENERIC_SMP_IDLE_THREAD
 134        select GENERIC_TIME_VSYSCALL
 135        select GENERIC_VDSO_TIME_NS
 136        select HAVE_ALIGNED_STRUCT_PAGE if SLUB
 137        select HAVE_ARCH_AUDITSYSCALL
 138        select HAVE_ARCH_JUMP_LABEL
 139        select HAVE_ARCH_JUMP_LABEL_RELATIVE
 140        select HAVE_ARCH_KASAN
 141        select HAVE_ARCH_KASAN_VMALLOC
 142        select HAVE_ARCH_KCSAN
 143        select HAVE_ARCH_KFENCE
 144        select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
 145        select HAVE_ARCH_SECCOMP_FILTER
 146        select HAVE_ARCH_SOFT_DIRTY
 147        select HAVE_ARCH_TRACEHOOK
 148        select HAVE_ARCH_TRANSPARENT_HUGEPAGE
 149        select HAVE_ARCH_VMAP_STACK
 150        select HAVE_ASM_MODVERSIONS
 151        select HAVE_CMPXCHG_DOUBLE
 152        select HAVE_CMPXCHG_LOCAL
 153        select HAVE_DEBUG_KMEMLEAK
 154        select HAVE_DMA_CONTIGUOUS
 155        select HAVE_DYNAMIC_FTRACE
 156        select HAVE_DYNAMIC_FTRACE_WITH_REGS
 157        select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
 158        select HAVE_EFFICIENT_UNALIGNED_ACCESS
 159        select HAVE_FAST_GUP
 160        select HAVE_FENTRY
 161        select HAVE_FTRACE_MCOUNT_RECORD
 162        select HAVE_FUNCTION_ERROR_INJECTION
 163        select HAVE_FUNCTION_GRAPH_TRACER
 164        select HAVE_FUNCTION_TRACER
 165        select HAVE_FUTEX_CMPXCHG if FUTEX
 166        select HAVE_GCC_PLUGINS
 167        select HAVE_GENERIC_VDSO
 168        select HAVE_IOREMAP_PROT if PCI
 169        select HAVE_KERNEL_BZIP2
 170        select HAVE_KERNEL_GZIP
 171        select HAVE_KERNEL_LZ4
 172        select HAVE_KERNEL_LZMA
 173        select HAVE_KERNEL_LZO
 174        select HAVE_KERNEL_UNCOMPRESSED
 175        select HAVE_KERNEL_XZ
 176        select HAVE_KERNEL_ZSTD
 177        select HAVE_KPROBES
 178        select HAVE_KPROBES_ON_FTRACE
 179        select HAVE_KRETPROBES
 180        select HAVE_KVM
 181        select HAVE_LIVEPATCH
 182        select HAVE_MEMBLOCK_PHYS_MAP
 183        select HAVE_MOD_ARCH_SPECIFIC
 184        select HAVE_NMI
 185        select HAVE_NOP_MCOUNT
 186        select HAVE_PCI
 187        select HAVE_PERF_EVENTS
 188        select HAVE_PERF_REGS
 189        select HAVE_PERF_USER_STACK_DUMP
 190        select HAVE_REGS_AND_STACK_ACCESS_API
 191        select HAVE_RELIABLE_STACKTRACE
 192        select HAVE_RSEQ
 193        select HAVE_SOFTIRQ_ON_OWN_STACK
 194        select HAVE_SYSCALL_TRACEPOINTS
 195        select HAVE_VIRT_CPU_ACCOUNTING
 196        select HAVE_VIRT_CPU_ACCOUNTING_IDLE
 197        select IOMMU_HELPER             if PCI
 198        select IOMMU_SUPPORT            if PCI
 199        select MMU_GATHER_NO_GATHER
 200        select MMU_GATHER_RCU_TABLE_FREE
 201        select MODULES_USE_ELF_RELA
 202        select NEED_DMA_MAP_STATE       if PCI
 203        select NEED_SG_DMA_LENGTH       if PCI
 204        select OLD_SIGACTION
 205        select OLD_SIGSUSPEND3
 206        select PCI_DOMAINS              if PCI
 207        select PCI_MSI                  if PCI
 208        select PCI_MSI_ARCH_FALLBACKS   if PCI_MSI
 209        select SPARSE_IRQ
 210        select SWIOTLB
 211        select SYSCTL_EXCEPTION_TRACE
 212        select THREAD_INFO_IN_TASK
 213        select TRACE_IRQFLAGS_SUPPORT
 214        select TTY
 215        select VIRT_CPU_ACCOUNTING
 216        select ZONE_DMA
 217        # Note: keep the above list sorted alphabetically
 218
 219config SCHED_OMIT_FRAME_POINTER
 220        def_bool y
 221
 222config PGTABLE_LEVELS
 223        int
 224        default 5
 225
 226source "kernel/livepatch/Kconfig"
 227
 228menu "Processor type and features"
 229
 230config HAVE_MARCH_Z900_FEATURES
 231        def_bool n
 232
 233config HAVE_MARCH_Z990_FEATURES
 234        def_bool n
 235        select HAVE_MARCH_Z900_FEATURES
 236
 237config HAVE_MARCH_Z9_109_FEATURES
 238        def_bool n
 239        select HAVE_MARCH_Z990_FEATURES
 240
 241config HAVE_MARCH_Z10_FEATURES
 242        def_bool n
 243        select HAVE_MARCH_Z9_109_FEATURES
 244
 245config HAVE_MARCH_Z196_FEATURES
 246        def_bool n
 247        select HAVE_MARCH_Z10_FEATURES
 248
 249config HAVE_MARCH_ZEC12_FEATURES
 250        def_bool n
 251        select HAVE_MARCH_Z196_FEATURES
 252
 253config HAVE_MARCH_Z13_FEATURES
 254        def_bool n
 255        select HAVE_MARCH_ZEC12_FEATURES
 256
 257config HAVE_MARCH_Z14_FEATURES
 258        def_bool n
 259        select HAVE_MARCH_Z13_FEATURES
 260
 261config HAVE_MARCH_Z15_FEATURES
 262        def_bool n
 263        select HAVE_MARCH_Z14_FEATURES
 264
 265choice
 266        prompt "Processor type"
 267        default MARCH_Z196
 268
 269config MARCH_Z900
 270        bool "IBM zSeries model z800 and z900"
 271        select HAVE_MARCH_Z900_FEATURES
 272        depends on $(cc-option,-march=z900)
 273        help
 274          Select this to enable optimizations for model z800/z900 (2064 and
 275          2066 series). This will enable some optimizations that are not
 276          available on older ESA/390 (31 Bit) only CPUs.
 277
 278config MARCH_Z990
 279        bool "IBM zSeries model z890 and z990"
 280        select HAVE_MARCH_Z990_FEATURES
 281        depends on $(cc-option,-march=z990)
 282        help
 283          Select this to enable optimizations for model z890/z990 (2084 and
 284          2086 series). The kernel will be slightly faster but will not work
 285          on older machines.
 286
 287config MARCH_Z9_109
 288        bool "IBM System z9"
 289        select HAVE_MARCH_Z9_109_FEATURES
 290        depends on $(cc-option,-march=z9-109)
 291        help
 292          Select this to enable optimizations for IBM System z9 (2094 and
 293          2096 series). The kernel will be slightly faster but will not work
 294          on older machines.
 295
 296config MARCH_Z10
 297        bool "IBM System z10"
 298        select HAVE_MARCH_Z10_FEATURES
 299        depends on $(cc-option,-march=z10)
 300        help
 301          Select this to enable optimizations for IBM System z10 (2097 and
 302          2098 series). The kernel will be slightly faster but will not work
 303          on older machines.
 304
 305config MARCH_Z196
 306        bool "IBM zEnterprise 114 and 196"
 307        select HAVE_MARCH_Z196_FEATURES
 308        depends on $(cc-option,-march=z196)
 309        help
 310          Select this to enable optimizations for IBM zEnterprise 114 and 196
 311          (2818 and 2817 series). The kernel will be slightly faster but will
 312          not work on older machines.
 313
 314config MARCH_ZEC12
 315        bool "IBM zBC12 and zEC12"
 316        select HAVE_MARCH_ZEC12_FEATURES
 317        depends on $(cc-option,-march=zEC12)
 318        help
 319          Select this to enable optimizations for IBM zBC12 and zEC12 (2828 and
 320          2827 series). The kernel will be slightly faster but will not work on
 321          older machines.
 322
 323config MARCH_Z13
 324        bool "IBM z13s and z13"
 325        select HAVE_MARCH_Z13_FEATURES
 326        depends on $(cc-option,-march=z13)
 327        help
 328          Select this to enable optimizations for IBM z13s and z13 (2965 and
 329          2964 series). The kernel will be slightly faster but will not work on
 330          older machines.
 331
 332config MARCH_Z14
 333        bool "IBM z14 ZR1 and z14"
 334        select HAVE_MARCH_Z14_FEATURES
 335        depends on $(cc-option,-march=z14)
 336        help
 337          Select this to enable optimizations for IBM z14 ZR1 and z14 (3907
 338          and 3906 series). The kernel will be slightly faster but will not
 339          work on older machines.
 340
 341config MARCH_Z15
 342        bool "IBM z15"
 343        select HAVE_MARCH_Z15_FEATURES
 344        depends on $(cc-option,-march=z15)
 345        help
 346          Select this to enable optimizations for IBM z15 (8562
 347          and 8561 series). The kernel will be slightly faster but will not
 348          work on older machines.
 349
 350endchoice
 351
 352config MARCH_Z900_TUNE
 353        def_bool TUNE_Z900 || MARCH_Z900 && TUNE_DEFAULT
 354
 355config MARCH_Z990_TUNE
 356        def_bool TUNE_Z990 || MARCH_Z990 && TUNE_DEFAULT
 357
 358config MARCH_Z9_109_TUNE
 359        def_bool TUNE_Z9_109 || MARCH_Z9_109 && TUNE_DEFAULT
 360
 361config MARCH_Z10_TUNE
 362        def_bool TUNE_Z10 || MARCH_Z10 && TUNE_DEFAULT
 363
 364config MARCH_Z196_TUNE
 365        def_bool TUNE_Z196 || MARCH_Z196 && TUNE_DEFAULT
 366
 367config MARCH_ZEC12_TUNE
 368        def_bool TUNE_ZEC12 || MARCH_ZEC12 && TUNE_DEFAULT
 369
 370config MARCH_Z13_TUNE
 371        def_bool TUNE_Z13 || MARCH_Z13 && TUNE_DEFAULT
 372
 373config MARCH_Z14_TUNE
 374        def_bool TUNE_Z14 || MARCH_Z14 && TUNE_DEFAULT
 375
 376config MARCH_Z15_TUNE
 377        def_bool TUNE_Z15 || MARCH_Z15 && TUNE_DEFAULT
 378
 379choice
 380        prompt "Tune code generation"
 381        default TUNE_DEFAULT
 382        help
 383          Cause the compiler to tune (-mtune) the generated code for a machine.
 384          This will make the code run faster on the selected machine but
 385          somewhat slower on other machines.
 386          This option only changes how the compiler emits instructions, not the
 387          selection of instructions itself, so the resulting kernel will run on
 388          all other machines.
 389
 390config TUNE_DEFAULT
 391        bool "Default"
 392        help
 393          Tune the generated code for the target processor for which the kernel
 394          will be compiled.
 395
 396config TUNE_Z900
 397        bool "IBM zSeries model z800 and z900"
 398        depends on $(cc-option,-mtune=z900)
 399
 400config TUNE_Z990
 401        bool "IBM zSeries model z890 and z990"
 402        depends on $(cc-option,-mtune=z990)
 403
 404config TUNE_Z9_109
 405        bool "IBM System z9"
 406        depends on $(cc-option,-mtune=z9-109)
 407
 408config TUNE_Z10
 409        bool "IBM System z10"
 410        depends on $(cc-option,-mtune=z10)
 411
 412config TUNE_Z196
 413        bool "IBM zEnterprise 114 and 196"
 414        depends on $(cc-option,-mtune=z196)
 415
 416config TUNE_ZEC12
 417        bool "IBM zBC12 and zEC12"
 418        depends on $(cc-option,-mtune=zEC12)
 419
 420config TUNE_Z13
 421        bool "IBM z13s and z13"
 422        depends on $(cc-option,-mtune=z13)
 423
 424config TUNE_Z14
 425        bool "IBM z14 ZR1 and z14"
 426        depends on $(cc-option,-mtune=z14)
 427
 428config TUNE_Z15
 429        bool "IBM z15"
 430        depends on $(cc-option,-mtune=z15)
 431
 432endchoice
 433
 434config 64BIT
 435        def_bool y
 436
 437config COMPAT
 438        def_bool y
 439        prompt "Kernel support for 31 bit emulation"
 440        select ARCH_WANT_OLD_COMPAT_IPC
 441        select COMPAT_OLD_SIGACTION
 442        select HAVE_UID16
 443        depends on MULTIUSER
 444        depends on !CC_IS_CLANG
 445        help
 446          Select this option if you want to enable your system kernel to
 447          handle system-calls from ELF binaries for 31 bit ESA.  This option
 448          (and some other stuff like libraries and such) is needed for
 449          executing 31 bit applications.  It is safe to say "Y".
 450
 451config SYSVIPC_COMPAT
 452        def_bool y if COMPAT && SYSVIPC
 453
 454config SMP
 455        def_bool y
 456
 457config NR_CPUS
 458        int "Maximum number of CPUs (2-512)"
 459        range 2 512
 460        default "64"
 461        help
 462          This allows you to specify the maximum number of CPUs which this
 463          kernel will support. The maximum supported value is 512 and the
 464          minimum value which makes sense is 2.
 465
 466          This is purely to save memory - each supported CPU adds
 467          approximately sixteen kilobytes to the kernel image.
 468
 469config HOTPLUG_CPU
 470        def_bool y
 471
 472config NUMA
 473        bool "NUMA support"
 474        depends on SCHED_TOPOLOGY
 475        default n
 476        help
 477          Enable NUMA support
 478
 479          This option adds NUMA support to the kernel.
 480
 481config NODES_SHIFT
 482        int
 483        depends on NUMA
 484        default "1"
 485
 486config SCHED_SMT
 487        def_bool n
 488
 489config SCHED_MC
 490        def_bool n
 491
 492config SCHED_BOOK
 493        def_bool n
 494
 495config SCHED_DRAWER
 496        def_bool n
 497
 498config SCHED_TOPOLOGY
 499        def_bool y
 500        prompt "Topology scheduler support"
 501        select SCHED_SMT
 502        select SCHED_MC
 503        select SCHED_BOOK
 504        select SCHED_DRAWER
 505        help
 506          Topology scheduler support improves the CPU scheduler's decision
 507          making when dealing with machines that have multi-threading,
 508          multiple cores or multiple books.
 509
 510source "kernel/Kconfig.hz"
 511
 512config KEXEC
 513        def_bool y
 514        select KEXEC_CORE
 515
 516config KEXEC_FILE
 517        bool "kexec file based system call"
 518        select KEXEC_CORE
 519        select BUILD_BIN2C
 520        depends on CRYPTO
 521        depends on CRYPTO_SHA256
 522        depends on CRYPTO_SHA256_S390
 523        help
 524          Enable the kexec file based system call. In contrast to the normal
 525          kexec system call this system call takes file descriptors for the
 526          kernel and initramfs as arguments.
 527
 528config ARCH_HAS_KEXEC_PURGATORY
 529        def_bool y
 530        depends on KEXEC_FILE
 531
 532config KEXEC_SIG
 533        bool "Verify kernel signature during kexec_file_load() syscall"
 534        depends on KEXEC_FILE && MODULE_SIG_FORMAT
 535        help
 536          This option makes kernel signature verification mandatory for
 537          the kexec_file_load() syscall.
 538
 539          In addition to that option, you need to enable signature
 540          verification for the corresponding kernel image type being
 541          loaded in order for this to work.
 542
 543config ARCH_RANDOM
 544        def_bool y
 545        prompt "s390 architectural random number generation API"
 546        help
 547          Enable the s390 architectural random number generation API
 548          to provide random data for all consumers within the Linux
 549          kernel.
 550
 551          When enabled the arch_random_* functions declared in linux/random.h
 552          are implemented. The implementation is based on the s390 CPACF
 553          instruction subfunction TRNG which provides a real true random
 554          number generator.
 555
 556          If unsure, say Y.
 557
 558config KERNEL_NOBP
 559        def_bool n
 560        prompt "Enable modified branch prediction for the kernel by default"
 561        help
 562          If this option is selected the kernel will switch to a modified
 563          branch prediction mode if the firmware interface is available.
 564          The modified branch prediction mode improves the behaviour in
 565          regard to speculative execution.
 566
 567          With the option enabled the kernel parameter "nobp=0" or "nospec"
 568          can be used to run the kernel in the normal branch prediction mode.
 569
 570          With the option disabled the modified branch prediction mode is
 571          enabled with the "nobp=1" kernel parameter.
 572
 573          If unsure, say N.
 574
 575config EXPOLINE
 576        def_bool n
 577        prompt "Avoid speculative indirect branches in the kernel"
 578        help
 579          Compile the kernel with the expoline compiler options to guard
 580          against kernel-to-user data leaks by avoiding speculative indirect
 581          branches.
 582          Requires a compiler with -mindirect-branch=thunk support for full
 583          protection. The kernel may run slower.
 584
 585          If unsure, say N.
 586
 587choice
 588        prompt "Expoline default"
 589        depends on EXPOLINE
 590        default EXPOLINE_FULL
 591
 592config EXPOLINE_OFF
 593        bool "spectre_v2=off"
 594
 595config EXPOLINE_AUTO
 596        bool "spectre_v2=auto"
 597
 598config EXPOLINE_FULL
 599        bool "spectre_v2=on"
 600
 601endchoice
 602
 603config RELOCATABLE
 604        bool "Build a relocatable kernel"
 605        select MODULE_REL_CRCS if MODVERSIONS
 606        default y
 607        help
 608          This builds a kernel image that retains relocation information
 609          so it can be loaded at an arbitrary address.
 610          The kernel is linked as a position-independent executable (PIE)
 611          and contains dynamic relocations which are processed early in the
 612          bootup process.
 613          The relocations make the kernel image about 15% larger (compressed
 614          10%), but are discarded at runtime.
 615
 616config RANDOMIZE_BASE
 617        bool "Randomize the address of the kernel image (KASLR)"
 618        depends on RELOCATABLE
 619        default y
 620        help
 621          In support of Kernel Address Space Layout Randomization (KASLR),
 622          this randomizes the address at which the kernel image is loaded,
 623          as a security feature that deters exploit attempts relying on
 624          knowledge of the location of kernel internals.
 625
 626endmenu
 627
 628menu "Memory setup"
 629
 630config ARCH_SPARSEMEM_ENABLE
 631        def_bool y
 632        select SPARSEMEM_VMEMMAP_ENABLE
 633        select SPARSEMEM_VMEMMAP
 634
 635config ARCH_SPARSEMEM_DEFAULT
 636        def_bool y
 637
 638config MAX_PHYSMEM_BITS
 639        int "Maximum size of supported physical memory in bits (42-53)"
 640        range 42 53
 641        default "46"
 642        help
 643          This option specifies the maximum supported size of physical memory
 644          in bits. Supported is any size between 2^42 (4TB) and 2^53 (8PB).
 645          Increasing the number of bits also increases the kernel image size.
 646          By default 46 bits (64TB) are supported.
 647
 648config PACK_STACK
 649        def_bool y
 650        prompt "Pack kernel stack"
 651        help
 652          This option enables the compiler option -mkernel-backchain if it
 653          is available. If the option is available the compiler supports
 654          the new stack layout which dramatically reduces the minimum stack
 655          frame size. With an old compiler a non-leaf function needs a
 656          minimum of 96 bytes on 31 bit and 160 bytes on 64 bit. With
 657          -mkernel-backchain the minimum size drops to 16 byte on 31 bit
 658          and 24 byte on 64 bit.
 659
 660          Say Y if you are unsure.
 661
 662config CHECK_STACK
 663        def_bool y
 664        depends on !VMAP_STACK
 665        prompt "Detect kernel stack overflow"
 666        help
 667          This option enables the compiler option -mstack-guard and
 668          -mstack-size if they are available. If the compiler supports them
 669          it will emit additional code to each function prolog to trigger
 670          an illegal operation if the kernel stack is about to overflow.
 671
 672          Say N if you are unsure.
 673
 674config STACK_GUARD
 675        int "Size of the guard area (128-1024)"
 676        range 128 1024
 677        depends on CHECK_STACK
 678        default "256"
 679        help
 680          This allows you to specify the size of the guard area at the lower
 681          end of the kernel stack. If the kernel stack points into the guard
 682          area on function entry an illegal operation is triggered. The size
 683          needs to be a power of 2. Please keep in mind that the size of an
 684          interrupt frame is 184 bytes for 31 bit and 328 bytes on 64 bit.
 685          The minimum size for the stack guard should be 256 for 31 bit and
 686          512 for 64 bit.
 687
 688endmenu
 689
 690menu "I/O subsystem"
 691
 692config QDIO
 693        def_tristate y
 694        prompt "QDIO support"
 695        help
 696          This driver provides the Queued Direct I/O base support for
 697          IBM System z.
 698
 699          To compile this driver as a module, choose M here: the
 700          module will be called qdio.
 701
 702          If unsure, say Y.
 703
 704if PCI
 705
 706config PCI_NR_FUNCTIONS
 707        int "Maximum number of PCI functions (1-4096)"
 708        range 1 4096
 709        default "512"
 710        help
 711          This allows you to specify the maximum number of PCI functions which
 712          this kernel will support.
 713
 714endif # PCI
 715
 716config HAS_IOMEM
 717        def_bool PCI
 718
 719config CHSC_SCH
 720        def_tristate m
 721        prompt "Support for CHSC subchannels"
 722        help
 723          This driver allows usage of CHSC subchannels. A CHSC subchannel
 724          is usually present on LPAR only.
 725          The driver creates a device /dev/chsc, which may be used to
 726          obtain I/O configuration information about the machine and
 727          to issue asynchronous chsc commands (DANGEROUS).
 728          You will usually only want to use this interface on a special
 729          LPAR designated for system management.
 730
 731          To compile this driver as a module, choose M here: the
 732          module will be called chsc_sch.
 733
 734          If unsure, say N.
 735
 736config SCM_BUS
 737        def_bool y
 738        prompt "SCM bus driver"
 739        help
 740          Bus driver for Storage Class Memory.
 741
 742config EADM_SCH
 743        def_tristate m
 744        prompt "Support for EADM subchannels"
 745        depends on SCM_BUS
 746        help
 747          This driver allows usage of EADM subchannels. EADM subchannels act
 748          as a communication vehicle for SCM increments.
 749
 750          To compile this driver as a module, choose M here: the
 751          module will be called eadm_sch.
 752
 753config VFIO_CCW
 754        def_tristate n
 755        prompt "Support for VFIO-CCW subchannels"
 756        depends on S390_CCW_IOMMU && VFIO_MDEV
 757        help
 758          This driver allows usage of I/O subchannels via VFIO-CCW.
 759
 760          To compile this driver as a module, choose M here: the
 761          module will be called vfio_ccw.
 762
 763config VFIO_AP
 764        def_tristate n
 765        prompt "VFIO support for AP devices"
 766        depends on S390_AP_IOMMU && VFIO_MDEV && KVM
 767        depends on ZCRYPT
 768        help
 769                This driver grants access to Adjunct Processor (AP) devices
 770                via the VFIO mediated device interface.
 771
 772                To compile this driver as a module, choose M here: the module
 773                will be called vfio_ap.
 774
 775endmenu
 776
 777menu "Dump support"
 778
 779config CRASH_DUMP
 780        bool "kernel crash dumps"
 781        select KEXEC
 782        help
 783          Generate crash dump after being started by kexec.
 784          Crash dump kernels are loaded in the main kernel with kexec-tools
 785          into a specially reserved region and then later executed after
 786          a crash by kdump/kexec.
 787          Refer to <file:Documentation/s390/zfcpdump.rst> for more details on this.
 788          This option also enables s390 zfcpdump.
 789          See also <file:Documentation/s390/zfcpdump.rst>
 790
 791endmenu
 792
 793config CCW
 794        def_bool y
 795
 796config HAVE_PNETID
 797        tristate
 798        default (SMC || CCWGROUP)
 799
 800menu "Virtualization"
 801
 802config PROTECTED_VIRTUALIZATION_GUEST
 803        def_bool n
 804        prompt "Protected virtualization guest support"
 805        select ARCH_HAS_RESTRICTED_VIRTIO_MEMORY_ACCESS
 806        help
 807          Select this option, if you want to be able to run this
 808          kernel as a protected virtualization KVM guest.
 809          Protected virtualization capable machines have a mini hypervisor
 810          located at machine level (an ultravisor). With help of the
 811          Ultravisor, KVM will be able to run "protected" VMs, special
 812          VMs whose memory and management data are unavailable to KVM.
 813
 814config PFAULT
 815        def_bool y
 816        prompt "Pseudo page fault support"
 817        help
 818          Select this option, if you want to use PFAULT pseudo page fault
 819          handling under VM. If running native or in LPAR, this option
 820          has no effect. If your VM does not support PFAULT, PAGEEX
 821          pseudo page fault handling will be used.
 822          Note that VM 4.2 supports PFAULT but has a bug in its
 823          implementation that causes some problems.
 824          Everybody who wants to run Linux under VM != VM4.2 should select
 825          this option.
 826
 827config CMM
 828        def_tristate n
 829        prompt "Cooperative memory management"
 830        help
 831          Select this option, if you want to enable the kernel interface
 832          to reduce the memory size of the system. This is accomplished
 833          by allocating pages of memory and put them "on hold". This only
 834          makes sense for a system running under VM where the unused pages
 835          will be reused by VM for other guest systems. The interface
 836          allows an external monitor to balance memory of many systems.
 837          Everybody who wants to run Linux under VM should select this
 838          option.
 839
 840config CMM_IUCV
 841        def_bool y
 842        prompt "IUCV special message interface to cooperative memory management"
 843        depends on CMM && (SMSGIUCV=y || CMM=SMSGIUCV)
 844        help
 845          Select this option to enable the special message interface to
 846          the cooperative memory management.
 847
 848config APPLDATA_BASE
 849        def_bool n
 850        prompt "Linux - VM Monitor Stream, base infrastructure"
 851        depends on PROC_SYSCTL
 852        help
 853          This provides a kernel interface for creating and updating z/VM APPLDATA
 854          monitor records. The monitor records are updated at certain time
 855          intervals, once the timer is started.
 856          Writing 1 or 0 to /proc/appldata/timer starts(1) or stops(0) the timer,
 857          i.e. enables or disables monitoring on the Linux side.
 858          A custom interval value (in seconds) can be written to
 859          /proc/appldata/interval.
 860
 861          Defaults are 60 seconds interval and timer off.
 862          The /proc entries can also be read from, showing the current settings.
 863
 864config APPLDATA_MEM
 865        def_tristate m
 866        prompt "Monitor memory management statistics"
 867        depends on APPLDATA_BASE && VM_EVENT_COUNTERS
 868        help
 869          This provides memory management related data to the Linux - VM Monitor
 870          Stream, like paging/swapping rate, memory utilisation, etc.
 871          Writing 1 or 0 to /proc/appldata/memory creates(1) or removes(0) a z/VM
 872          APPLDATA monitor record, i.e. enables or disables monitoring this record
 873          on the z/VM side.
 874
 875          Default is disabled.
 876          The /proc entry can also be read from, showing the current settings.
 877
 878          This can also be compiled as a module, which will be called
 879          appldata_mem.o.
 880
 881config APPLDATA_OS
 882        def_tristate m
 883        prompt "Monitor OS statistics"
 884        depends on APPLDATA_BASE
 885        help
 886          This provides OS related data to the Linux - VM Monitor Stream, like
 887          CPU utilisation, etc.
 888          Writing 1 or 0 to /proc/appldata/os creates(1) or removes(0) a z/VM
 889          APPLDATA monitor record, i.e. enables or disables monitoring this record
 890          on the z/VM side.
 891
 892          Default is disabled.
 893          This can also be compiled as a module, which will be called
 894          appldata_os.o.
 895
 896config APPLDATA_NET_SUM
 897        def_tristate m
 898        prompt "Monitor overall network statistics"
 899        depends on APPLDATA_BASE && NET
 900        help
 901          This provides network related data to the Linux - VM Monitor Stream,
 902          currently there is only a total sum of network I/O statistics, no
 903          per-interface data.
 904          Writing 1 or 0 to /proc/appldata/net_sum creates(1) or removes(0) a z/VM
 905          APPLDATA monitor record, i.e. enables or disables monitoring this record
 906          on the z/VM side.
 907
 908          Default is disabled.
 909          This can also be compiled as a module, which will be called
 910          appldata_net_sum.o.
 911
 912config S390_HYPFS_FS
 913        def_bool y
 914        prompt "s390 hypervisor file system support"
 915        select SYS_HYPERVISOR
 916        help
 917          This is a virtual file system intended to provide accounting
 918          information in an s390 hypervisor environment.
 919
 920source "arch/s390/kvm/Kconfig"
 921
 922config S390_GUEST
 923        def_bool y
 924        prompt "s390 support for virtio devices"
 925        select TTY
 926        select VIRTUALIZATION
 927        select VIRTIO
 928        help
 929          Enabling this option adds support for virtio based paravirtual device
 930          drivers on s390.
 931
 932          Select this option if you want to run the kernel as a guest under
 933          the KVM hypervisor.
 934
 935endmenu
 936
 937menu "Selftests"
 938
 939config S390_UNWIND_SELFTEST
 940        def_tristate n
 941        prompt "Test unwind functions"
 942        help
 943          This option enables s390 specific stack unwinder testing kernel
 944          module. This option is not useful for distributions or general
 945          kernels, but only for kernel developers working on architecture code.
 946
 947          Say N if you are unsure.
 948
 949endmenu
 950