linux/arch/powerpc/Kconfig
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0
   2source "arch/powerpc/platforms/Kconfig.cputype"
   3
   4config PPC32
   5        bool
   6        default y if !PPC64
   7
   8config 32BIT
   9        bool
  10        default y if PPC32
  11
  12config 64BIT
  13        bool
  14        default y if PPC64
  15
  16config MMU
  17        bool
  18        default y
  19
  20config ARCH_MMAP_RND_BITS_MAX
  21        # On Book3S 64, the default virtual address space for 64-bit processes
  22        # is 2^47 (128TB). As a maximum, allow randomisation to consume up to
  23        # 32T of address space (2^45), which should ensure a reasonable gap
  24        # between bottom-up and top-down allocations for applications that
  25        # consume "normal" amounts of address space. Book3S 64 only supports 64K
  26        # and 4K page sizes.
  27        default 29 if PPC_BOOK3S_64 && PPC_64K_PAGES # 29 = 45 (32T) - 16 (64K)
  28        default 33 if PPC_BOOK3S_64                  # 33 = 45 (32T) - 12 (4K)
  29        #
  30        # On all other 64-bit platforms (currently only Book3E), the virtual
  31        # address space is 2^46 (64TB). Allow randomisation to consume up to 16T
  32        # of address space (2^44). Only 4K page sizes are supported.
  33        default 32 if 64BIT     # 32 = 44 (16T) - 12 (4K)
  34        #
  35        # For 32-bit, use the compat values, as they're the same.
  36        default ARCH_MMAP_RND_COMPAT_BITS_MAX
  37
  38config ARCH_MMAP_RND_BITS_MIN
  39        # Allow randomisation to consume up to 1GB of address space (2^30).
  40        default 14 if 64BIT && PPC_64K_PAGES    # 14 = 30 (1GB) - 16 (64K)
  41        default 18 if 64BIT                     # 18 = 30 (1GB) - 12 (4K)
  42        #
  43        # For 32-bit, use the compat values, as they're the same.
  44        default ARCH_MMAP_RND_COMPAT_BITS_MIN
  45
  46config ARCH_MMAP_RND_COMPAT_BITS_MAX
  47        # Total virtual address space for 32-bit processes is 2^31 (2GB).
  48        # Allow randomisation to consume up to 512MB of address space (2^29).
  49        default 11 if PPC_256K_PAGES    # 11 = 29 (512MB) - 18 (256K)
  50        default 13 if PPC_64K_PAGES     # 13 = 29 (512MB) - 16 (64K)
  51        default 15 if PPC_16K_PAGES     # 15 = 29 (512MB) - 14 (16K)
  52        default 17                      # 17 = 29 (512MB) - 12 (4K)
  53
  54config ARCH_MMAP_RND_COMPAT_BITS_MIN
  55        # Total virtual address space for 32-bit processes is 2^31 (2GB).
  56        # Allow randomisation to consume up to 8MB of address space (2^23).
  57        default 5 if PPC_256K_PAGES     #  5 = 23 (8MB) - 18 (256K)
  58        default 7 if PPC_64K_PAGES      #  7 = 23 (8MB) - 16 (64K)
  59        default 9 if PPC_16K_PAGES      #  9 = 23 (8MB) - 14 (16K)
  60        default 11                      # 11 = 23 (8MB) - 12 (4K)
  61
  62config HAVE_SETUP_PER_CPU_AREA
  63        def_bool PPC64
  64
  65config NEED_PER_CPU_EMBED_FIRST_CHUNK
  66        def_bool PPC64
  67
  68config NR_IRQS
  69        int "Number of virtual interrupt numbers"
  70        range 32 32768
  71        default "512"
  72        help
  73          This defines the number of virtual interrupt numbers the kernel
  74          can manage. Virtual interrupt numbers are what you see in
  75          /proc/interrupts. If you configure your system to have too few,
  76          drivers will fail to load or worse - handle with care.
  77
  78config NMI_IPI
  79        bool
  80        depends on SMP && (DEBUGGER || KEXEC_CORE || HARDLOCKUP_DETECTOR)
  81        default y
  82
  83config PPC_WATCHDOG
  84        bool
  85        depends on HARDLOCKUP_DETECTOR
  86        depends on HAVE_HARDLOCKUP_DETECTOR_ARCH
  87        default y
  88        help
  89          This is a placeholder when the powerpc hardlockup detector
  90          watchdog is selected (arch/powerpc/kernel/watchdog.c). It is
  91          seleted via the generic lockup detector menu which is why we
  92          have no standalone config option for it here.
  93
  94config STACKTRACE_SUPPORT
  95        bool
  96        default y
  97
  98config TRACE_IRQFLAGS_SUPPORT
  99        bool
 100        default y
 101
 102config LOCKDEP_SUPPORT
 103        bool
 104        default y
 105
 106config GENERIC_LOCKBREAK
 107        bool
 108        default y
 109        depends on SMP && PREEMPT
 110
 111config GENERIC_HWEIGHT
 112        bool
 113        default y
 114
 115config ARCH_HAS_DMA_SET_COHERENT_MASK
 116        bool
 117
 118config PPC
 119        bool
 120        default y
 121        #
 122        # Please keep this list sorted alphabetically.
 123        #
 124        select ARCH_HAS_DEVMEM_IS_ALLOWED
 125        select ARCH_HAS_DMA_SET_COHERENT_MASK
 126        select ARCH_HAS_ELF_RANDOMIZE
 127        select ARCH_HAS_FORTIFY_SOURCE
 128        select ARCH_HAS_GCOV_PROFILE_ALL
 129        select ARCH_HAS_PHYS_TO_DMA
 130        select ARCH_HAS_PMEM_API                if PPC64
 131        select ARCH_HAS_PTE_SPECIAL
 132        select ARCH_HAS_MEMBARRIER_CALLBACKS
 133        select ARCH_HAS_SCALED_CPUTIME          if VIRT_CPU_ACCOUNTING_NATIVE
 134        select ARCH_HAS_SG_CHAIN
 135        select ARCH_HAS_STRICT_KERNEL_RWX       if ((PPC_BOOK3S_64 || PPC32) && !RELOCATABLE && !HIBERNATION)
 136        select ARCH_HAS_TICK_BROADCAST          if GENERIC_CLOCKEVENTS_BROADCAST
 137        select ARCH_HAS_UACCESS_FLUSHCACHE      if PPC64
 138        select ARCH_HAS_UBSAN_SANITIZE_ALL
 139        select ARCH_HAS_ZONE_DEVICE             if PPC_BOOK3S_64
 140        select ARCH_HAVE_NMI_SAFE_CMPXCHG
 141        select ARCH_MIGHT_HAVE_PC_PARPORT
 142        select ARCH_MIGHT_HAVE_PC_SERIO
 143        select ARCH_OPTIONAL_KERNEL_RWX         if ARCH_HAS_STRICT_KERNEL_RWX
 144        select ARCH_SUPPORTS_ATOMIC_RMW
 145        select ARCH_USE_BUILTIN_BSWAP
 146        select ARCH_USE_CMPXCHG_LOCKREF         if PPC64
 147        select ARCH_WANT_IPC_PARSE_VERSION
 148        select ARCH_WEAK_RELEASE_ACQUIRE
 149        select BINFMT_ELF
 150        select BUILDTIME_EXTABLE_SORT
 151        select CLONE_BACKWARDS
 152        select DCACHE_WORD_ACCESS               if PPC64 && CPU_LITTLE_ENDIAN
 153        select DYNAMIC_FTRACE                   if FUNCTION_TRACER
 154        select EDAC_ATOMIC_SCRUB
 155        select EDAC_SUPPORT
 156        select GENERIC_ATOMIC64                 if PPC32
 157        select GENERIC_CLOCKEVENTS
 158        select GENERIC_CLOCKEVENTS_BROADCAST    if SMP
 159        select GENERIC_CMOS_UPDATE
 160        select GENERIC_CPU_AUTOPROBE
 161        select GENERIC_CPU_VULNERABILITIES      if PPC_BARRIER_NOSPEC
 162        select GENERIC_IRQ_SHOW
 163        select GENERIC_IRQ_SHOW_LEVEL
 164        select GENERIC_SMP_IDLE_THREAD
 165        select GENERIC_STRNCPY_FROM_USER
 166        select GENERIC_STRNLEN_USER
 167        select GENERIC_TIME_VSYSCALL
 168        select HAVE_ARCH_AUDITSYSCALL
 169        select HAVE_ARCH_JUMP_LABEL
 170        select HAVE_ARCH_KGDB
 171        select HAVE_ARCH_MMAP_RND_BITS
 172        select HAVE_ARCH_MMAP_RND_COMPAT_BITS   if COMPAT
 173        select HAVE_ARCH_SECCOMP_FILTER
 174        select HAVE_ARCH_TRACEHOOK
 175        select HAVE_CBPF_JIT                    if !PPC64
 176        select HAVE_CONTEXT_TRACKING            if PPC64
 177        select HAVE_DEBUG_KMEMLEAK
 178        select HAVE_DEBUG_STACKOVERFLOW
 179        select HAVE_DYNAMIC_FTRACE
 180        select HAVE_DYNAMIC_FTRACE_WITH_REGS    if MPROFILE_KERNEL
 181        select HAVE_EBPF_JIT                    if PPC64
 182        select HAVE_EFFICIENT_UNALIGNED_ACCESS  if !(CPU_LITTLE_ENDIAN && POWER7_CPU)
 183        select HAVE_FTRACE_MCOUNT_RECORD
 184        select HAVE_FUNCTION_GRAPH_TRACER
 185        select HAVE_FUNCTION_TRACER
 186        select HAVE_GCC_PLUGINS                 if GCC_VERSION >= 50200   # plugin support on gcc <= 5.1 is buggy on PPC
 187        select HAVE_GENERIC_GUP
 188        select HAVE_HW_BREAKPOINT               if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
 189        select HAVE_IDE
 190        select HAVE_IOREMAP_PROT
 191        select HAVE_IRQ_EXIT_ON_IRQ_STACK
 192        select HAVE_KERNEL_GZIP
 193        select HAVE_KPROBES
 194        select HAVE_KPROBES_ON_FTRACE
 195        select HAVE_KRETPROBES
 196        select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
 197        select HAVE_LIVEPATCH                   if HAVE_DYNAMIC_FTRACE_WITH_REGS
 198        select HAVE_MEMBLOCK
 199        select HAVE_MEMBLOCK_NODE_MAP
 200        select HAVE_MOD_ARCH_SPECIFIC
 201        select HAVE_NMI                         if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
 202        select HAVE_HARDLOCKUP_DETECTOR_ARCH    if (PPC64 && PPC_BOOK3S)
 203        select HAVE_OPROFILE
 204        select HAVE_OPTPROBES                   if PPC64
 205        select HAVE_PERF_EVENTS
 206        select HAVE_PERF_EVENTS_NMI             if PPC64
 207        select HAVE_HARDLOCKUP_DETECTOR_PERF    if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH
 208        select HAVE_PERF_REGS
 209        select HAVE_PERF_USER_STACK_DUMP
 210        select HAVE_RCU_TABLE_FREE              if SMP
 211        select HAVE_REGS_AND_STACK_ACCESS_API
 212        select HAVE_RELIABLE_STACKTRACE         if PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
 213        select HAVE_SYSCALL_TRACEPOINTS
 214        select HAVE_VIRT_CPU_ACCOUNTING
 215        select HAVE_IRQ_TIME_ACCOUNTING
 216        select HAVE_RSEQ
 217        select IOMMU_HELPER                     if PPC64
 218        select IRQ_DOMAIN
 219        select IRQ_FORCED_THREADING
 220        select MODULES_USE_ELF_RELA
 221        select NEED_DMA_MAP_STATE               if PPC64 || NOT_COHERENT_CACHE
 222        select NEED_SG_DMA_LENGTH
 223        select NO_BOOTMEM
 224        select OF
 225        select OF_EARLY_FLATTREE
 226        select OF_RESERVED_MEM
 227        select OLD_SIGACTION                    if PPC32
 228        select OLD_SIGSUSPEND
 229        select RTC_LIB
 230        select SPARSE_IRQ
 231        select SYSCTL_EXCEPTION_TRACE
 232        select VIRT_TO_BUS                      if !PPC64
 233        #
 234        # Please keep this list sorted alphabetically.
 235        #
 236
 237config PPC_BARRIER_NOSPEC
 238    bool
 239    default y
 240    depends on PPC_BOOK3S_64
 241
 242config GENERIC_CSUM
 243        def_bool n
 244
 245config EARLY_PRINTK
 246        bool
 247        default y
 248
 249config PANIC_TIMEOUT
 250        int
 251        default 180
 252
 253config COMPAT
 254        bool
 255        default y if PPC64
 256        select COMPAT_BINFMT_ELF
 257        select ARCH_WANT_OLD_COMPAT_IPC
 258        select COMPAT_OLD_SIGACTION
 259
 260config SYSVIPC_COMPAT
 261        bool
 262        depends on COMPAT && SYSVIPC
 263        default y
 264
 265# All PPC32s use generic nvram driver through ppc_md
 266config GENERIC_NVRAM
 267        bool
 268        default y if PPC32
 269
 270config SCHED_OMIT_FRAME_POINTER
 271        bool
 272        default y
 273
 274config ARCH_MAY_HAVE_PC_FDC
 275        bool
 276        default PCI
 277
 278config PPC_UDBG_16550
 279        bool
 280        default n
 281
 282config GENERIC_TBSYNC
 283        bool
 284        default y if PPC32 && SMP
 285        default n
 286
 287config AUDIT_ARCH
 288        bool
 289        default y
 290
 291config GENERIC_BUG
 292        bool
 293        default y
 294        depends on BUG
 295
 296config SYS_SUPPORTS_APM_EMULATION
 297        default y if PMAC_APM_EMU
 298        bool
 299
 300config EPAPR_BOOT
 301        bool
 302        help
 303          Used to allow a board to specify it wants an ePAPR compliant wrapper.
 304        default n
 305
 306config DEFAULT_UIMAGE
 307        bool
 308        help
 309          Used to allow a board to specify it wants a uImage built by default
 310        default n
 311
 312config ARCH_HIBERNATION_POSSIBLE
 313        bool
 314        default y
 315
 316config ARCH_SUSPEND_POSSIBLE
 317        def_bool y
 318        depends on ADB_PMU || PPC_EFIKA || PPC_LITE5200 || PPC_83xx || \
 319                   (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \
 320                   || 44x || 40x
 321
 322config ARCH_SUSPEND_NONZERO_CPU
 323        def_bool y
 324        depends on PPC_POWERNV || PPC_PSERIES
 325
 326config PPC_DCR_NATIVE
 327        bool
 328        default n
 329
 330config PPC_DCR_MMIO
 331        bool
 332        default n
 333
 334config PPC_DCR
 335        bool
 336        depends on PPC_DCR_NATIVE || PPC_DCR_MMIO
 337        default y
 338
 339config PPC_OF_PLATFORM_PCI
 340        bool
 341        depends on PCI
 342        depends on PPC64 # not supported on 32 bits yet
 343        default n
 344
 345config ARCH_SUPPORTS_DEBUG_PAGEALLOC
 346        depends on PPC32 || PPC_BOOK3S_64
 347        def_bool y
 348
 349config ARCH_SUPPORTS_UPROBES
 350        def_bool y
 351
 352config PPC_ADV_DEBUG_REGS
 353        bool
 354        depends on 40x || BOOKE
 355        default y
 356
 357config PPC_ADV_DEBUG_IACS
 358        int
 359        depends on PPC_ADV_DEBUG_REGS
 360        default 4 if 44x
 361        default 2
 362
 363config PPC_ADV_DEBUG_DACS
 364        int
 365        depends on PPC_ADV_DEBUG_REGS
 366        default 2
 367
 368config PPC_ADV_DEBUG_DVCS
 369        int
 370        depends on PPC_ADV_DEBUG_REGS
 371        default 2 if 44x
 372        default 0
 373
 374config PPC_ADV_DEBUG_DAC_RANGE
 375        bool
 376        depends on PPC_ADV_DEBUG_REGS && 44x
 377        default y
 378
 379# RHEL8 downstream - Keep these around and switched on for PPC64, to
 380#  maintain kABI
 381config ZONE_DMA
 382        bool
 383        default y if PPC64
 384
 385config ZONE_DMA32
 386        bool
 387        default y if PPC64
 388
 389config PGTABLE_LEVELS
 390        int
 391        default 2 if !PPC64
 392        default 3 if PPC_64K_PAGES && !PPC_BOOK3S_64
 393        default 4
 394
 395source "init/Kconfig"
 396
 397source "kernel/Kconfig.freezer"
 398
 399source "arch/powerpc/sysdev/Kconfig"
 400source "arch/powerpc/platforms/Kconfig"
 401
 402menu "Kernel options"
 403
 404config HIGHMEM
 405        bool "High memory support"
 406        depends on PPC32
 407
 408source kernel/Kconfig.hz
 409source kernel/Kconfig.preempt
 410source "fs/Kconfig.binfmt"
 411
 412config HUGETLB_PAGE_SIZE_VARIABLE
 413        bool
 414        depends on HUGETLB_PAGE
 415        default y
 416
 417config MATH_EMULATION
 418        bool "Math emulation"
 419        depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE
 420        ---help---
 421          Some PowerPC chips designed for embedded applications do not have
 422          a floating-point unit and therefore do not implement the
 423          floating-point instructions in the PowerPC instruction set.  If you
 424          say Y here, the kernel will include code to emulate a floating-point
 425          unit, which will allow programs that use floating-point
 426          instructions to run.
 427
 428          This is also useful to emulate missing (optional) instructions
 429          such as fsqrt on cores that do have an FPU but do not implement
 430          them (such as Freescale BookE).
 431
 432choice
 433        prompt "Math emulation options"
 434        default MATH_EMULATION_FULL
 435        depends on MATH_EMULATION
 436
 437config  MATH_EMULATION_FULL
 438        bool "Emulate all the floating point instructions"
 439        ---help---
 440          Select this option will enable the kernel to support to emulate
 441          all the floating point instructions. If your SoC doesn't have
 442          a FPU, you should select this.
 443
 444config MATH_EMULATION_HW_UNIMPLEMENTED
 445        bool "Just emulate the FPU unimplemented instructions"
 446        ---help---
 447          Select this if you know there does have a hardware FPU on your
 448          SoC, but some floating point instructions are not implemented by that.
 449
 450endchoice
 451
 452config PPC_TRANSACTIONAL_MEM
 453       bool "Transactional Memory support for POWERPC"
 454       depends on PPC_BOOK3S_64
 455       depends on SMP
 456       select ALTIVEC
 457       select VSX
 458       default n
 459       ---help---
 460         Support user-mode Transactional Memory on POWERPC.
 461
 462config LD_HEAD_STUB_CATCH
 463        bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT
 464        depends on PPC64
 465        default n
 466        help
 467          Very large kernels can cause linker branch stubs to be generated by
 468          code in head_64.S, which moves the head text sections out of their
 469          specified location. This option can work around the problem.
 470
 471          If unsure, say "N".
 472
 473config MPROFILE_KERNEL
 474        depends on PPC64 && CPU_LITTLE_ENDIAN
 475        def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__)
 476
 477config HOTPLUG_CPU
 478        bool "Support for enabling/disabling CPUs"
 479        depends on SMP && (PPC_PSERIES || \
 480        PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
 481        ---help---
 482          Say Y here to be able to disable and re-enable individual
 483          CPUs at runtime on SMP machines.
 484
 485          Say N if you are unsure.
 486
 487config ARCH_CPU_PROBE_RELEASE
 488        def_bool y
 489        depends on HOTPLUG_CPU
 490
 491config ARCH_ENABLE_MEMORY_HOTPLUG
 492        def_bool y
 493
 494config ARCH_HAS_WALK_MEMORY
 495        def_bool y
 496
 497config ARCH_ENABLE_MEMORY_HOTREMOVE
 498        def_bool y
 499
 500config PPC64_SUPPORTS_MEMORY_FAILURE
 501        bool "Add support for memory hwpoison"
 502        depends on PPC_BOOK3S_64
 503        default "y" if PPC_POWERNV
 504        select ARCH_SUPPORTS_MEMORY_FAILURE
 505
 506config KEXEC
 507        bool "kexec system call"
 508        depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) || PPC_BOOK3E
 509        select KEXEC_CORE
 510        help
 511          kexec is a system call that implements the ability to shutdown your
 512          current kernel, and to start another kernel.  It is like a reboot
 513          but it is independent of the system firmware.   And like a reboot
 514          you can start any kernel with it, not just Linux.
 515
 516          The name comes from the similarity to the exec system call.
 517
 518          It is an ongoing process to be certain the hardware in a machine
 519          is properly shutdown, so do not be surprised if this code does not
 520          initially work for you.  As of this writing the exact hardware
 521          interface is strongly in flux, so no good recommendation can be
 522          made.
 523
 524config KEXEC_FILE
 525        bool "kexec file based system call"
 526        select KEXEC_CORE
 527        select HAVE_IMA_KEXEC
 528        select BUILD_BIN2C
 529        depends on PPC64
 530        depends on CRYPTO=y
 531        depends on CRYPTO_SHA256=y
 532        help
 533          This is a new version of the kexec system call. This call is
 534          file based and takes in file descriptors as system call arguments
 535          for kernel and initramfs as opposed to a list of segments as is the
 536          case for the older kexec call.
 537
 538config ARCH_HAS_KEXEC_PURGATORY
 539        def_bool KEXEC_FILE
 540
 541config RELOCATABLE
 542        bool "Build a relocatable kernel"
 543        depends on PPC64 || (FLATMEM && (44x || FSL_BOOKE))
 544        select NONSTATIC_KERNEL
 545        select MODULE_REL_CRCS if MODVERSIONS
 546        help
 547          This builds a kernel image that is capable of running at the
 548          location the kernel is loaded at. For ppc32, there is no any
 549          alignment restrictions, and this feature is a superset of
 550          DYNAMIC_MEMSTART and hence overrides it. For ppc64, we should use
 551          16k-aligned base address. The kernel is linked as a
 552          position-independent executable (PIE) and contains dynamic relocations
 553          which are processed early in the bootup process.
 554
 555          One use is for the kexec on panic case where the recovery kernel
 556          must live at a different physical address than the primary
 557          kernel.
 558
 559          Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
 560          it has been loaded at and the compile time physical addresses
 561          CONFIG_PHYSICAL_START is ignored.  However CONFIG_PHYSICAL_START
 562          setting can still be useful to bootwrappers that need to know the
 563          load address of the kernel (eg. u-boot/mkimage).
 564
 565config RELOCATABLE_TEST
 566        bool "Test relocatable kernel"
 567        depends on (PPC64 && RELOCATABLE)
 568        default n
 569        help
 570          This runs the relocatable kernel at the address it was initially
 571          loaded at, which tends to be non-zero and therefore test the
 572          relocation code.
 573
 574config CRASH_DUMP
 575        bool "Build a dump capture kernel"
 576        depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
 577        select RELOCATABLE if PPC64 || 44x || FSL_BOOKE
 578        help
 579          Build a kernel suitable for use as a dump capture kernel.
 580          The same kernel binary can be used as production kernel and dump
 581          capture kernel.
 582
 583config FA_DUMP
 584        bool "Firmware-assisted dump"
 585        depends on PPC64 && PPC_RTAS
 586        select CRASH_CORE
 587        select CRASH_DUMP
 588        help
 589          A robust mechanism to get reliable kernel crash dump with
 590          assistance from firmware. This approach does not use kexec,
 591          instead firmware assists in booting the capture kernel
 592          while preserving memory contents. Firmware-assisted dump
 593          is meant to be a kdump replacement offering robustness and
 594          speed not possible without system firmware assistance.
 595
 596          If unsure, say "N"
 597
 598config IRQ_ALL_CPUS
 599        bool "Distribute interrupts on all CPUs by default"
 600        depends on SMP
 601        help
 602          This option gives the kernel permission to distribute IRQs across
 603          multiple CPUs.  Saying N here will route all IRQs to the first
 604          CPU.  Generally saying Y is safe, although some problems have been
 605          reported with SMP Power Macintoshes with this option enabled.
 606
 607config NUMA
 608        bool "NUMA support"
 609        depends on PPC64
 610        default y if SMP && PPC_PSERIES
 611
 612config NODES_SHIFT
 613        int
 614        default "8" if PPC64
 615        default "4"
 616        depends on NEED_MULTIPLE_NODES
 617
 618config USE_PERCPU_NUMA_NODE_ID
 619        def_bool y
 620        depends on NUMA
 621
 622config HAVE_MEMORYLESS_NODES
 623        def_bool y
 624        depends on NUMA
 625
 626config ARCH_SELECT_MEMORY_MODEL
 627        def_bool y
 628        depends on PPC64
 629
 630config ARCH_FLATMEM_ENABLE
 631        def_bool y
 632        depends on (PPC64 && !NUMA) || PPC32
 633
 634config ARCH_SPARSEMEM_ENABLE
 635        def_bool y
 636        depends on PPC64
 637        select SPARSEMEM_VMEMMAP_ENABLE
 638
 639config ARCH_SPARSEMEM_DEFAULT
 640        def_bool y
 641        depends on PPC_BOOK3S_64
 642
 643config SYS_SUPPORTS_HUGETLBFS
 644        bool
 645
 646config ILLEGAL_POINTER_VALUE
 647        hex
 648        # This is roughly half way between the top of user space and the bottom
 649        # of kernel space, which seems about as good as we can get.
 650        default 0x5deadbeef0000000 if PPC64
 651        default 0
 652
 653source "mm/Kconfig"
 654
 655config ARCH_MEMORY_PROBE
 656        def_bool y
 657        depends on MEMORY_HOTPLUG
 658
 659# Some NUMA nodes have memory ranges that span
 660# other nodes.  Even though a pfn is valid and
 661# between a node's start and end pfns, it may not
 662# reside on that node.  See memmap_init_zone()
 663# for details.
 664config NODES_SPAN_OTHER_NODES
 665        def_bool y
 666        depends on NEED_MULTIPLE_NODES
 667
 668config STDBINUTILS
 669        bool "Using standard binutils settings"
 670        depends on 44x
 671        default y
 672        help
 673          Turning this option off allows you to select 256KB PAGE_SIZE on 44x.
 674          Note, that kernel will be able to run only those applications,
 675          which had been compiled using binutils later than 2.17.50.0.3 with
 676          '-zmax-page-size' set to 256K (the default is 64K). Or, if using
 677          the older binutils, you can patch them with a trivial patch, which
 678          changes the ELF_MAXPAGESIZE definition from 0x10000 to 0x40000.
 679
 680choice
 681        prompt "Page size"
 682        default PPC_4K_PAGES
 683        help
 684          Select the kernel logical page size. Increasing the page size
 685          will reduce software overhead at each page boundary, allow
 686          hardware prefetch mechanisms to be more effective, and allow
 687          larger dma transfers increasing IO efficiency and reducing
 688          overhead. However the utilization of memory will increase.
 689          For example, each cached file will using a multiple of the
 690          page size to hold its contents and the difference between the
 691          end of file and the end of page is wasted.
 692
 693          Some dedicated systems, such as software raid serving with
 694          accelerated calculations, have shown significant increases.
 695
 696          If you configure a 64 bit kernel for 64k pages but the
 697          processor does not support them, then the kernel will simulate
 698          them with 4k pages, loading them on demand, but with the
 699          reduced software overhead and larger internal fragmentation.
 700          For the 32 bit kernel, a large page option will not be offered
 701          unless it is supported by the configured processor.
 702
 703          If unsure, choose 4K_PAGES.
 704
 705config PPC_4K_PAGES
 706        bool "4k page size"
 707        select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
 708
 709config PPC_16K_PAGES
 710        bool "16k page size"
 711        depends on 44x || PPC_8xx
 712
 713config PPC_64K_PAGES
 714        bool "64k page size"
 715        depends on !PPC_FSL_BOOK3E && (44x || PPC_BOOK3S_64 || PPC_BOOK3E_64)
 716        select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
 717
 718config PPC_256K_PAGES
 719        bool "256k page size"
 720        depends on 44x && !STDBINUTILS
 721        help
 722          Make the page size 256k.
 723
 724          As the ELF standard only requires alignment to support page
 725          sizes up to 64k, you will need to compile all of your user
 726          space applications with a non-standard binutils settings
 727          (see the STDBINUTILS description for details).
 728
 729          Say N unless you know what you are doing.
 730
 731endchoice
 732
 733config THREAD_SHIFT
 734        int "Thread shift" if EXPERT
 735        range 13 15
 736        default "15" if PPC_256K_PAGES
 737        default "14" if PPC64
 738        default "13"
 739        help
 740          Used to define the stack size. The default is almost always what you
 741          want. Only change this if you know what you are doing.
 742
 743config FORCE_MAX_ZONEORDER
 744        int "Maximum zone order"
 745        range 8 9 if PPC64 && PPC_64K_PAGES
 746        default "9" if PPC64 && PPC_64K_PAGES
 747        range 13 13 if PPC64 && !PPC_64K_PAGES
 748        default "13" if PPC64 && !PPC_64K_PAGES
 749        range 9 64 if PPC32 && PPC_16K_PAGES
 750        default "9" if PPC32 && PPC_16K_PAGES
 751        range 7 64 if PPC32 && PPC_64K_PAGES
 752        default "7" if PPC32 && PPC_64K_PAGES
 753        range 5 64 if PPC32 && PPC_256K_PAGES
 754        default "5" if PPC32 && PPC_256K_PAGES
 755        range 11 64
 756        default "11"
 757        help
 758          The kernel memory allocator divides physically contiguous memory
 759          blocks into "zones", where each zone is a power of two number of
 760          pages.  This option selects the largest power of two that the kernel
 761          keeps in the memory allocator.  If you need to allocate very large
 762          blocks of physically contiguous memory, then you may need to
 763          increase this value.
 764
 765          This config option is actually maximum order plus one. For example,
 766          a value of 11 means that the largest free memory block is 2^10 pages.
 767
 768          The page size is not necessarily 4KB.  For example, on 64-bit
 769          systems, 64KB pages can be enabled via CONFIG_PPC_64K_PAGES.  Keep
 770          this in mind when choosing a value for this option.
 771
 772config PPC_SUBPAGE_PROT
 773        bool "Support setting protections for 4k subpages"
 774        depends on PPC_BOOK3S_64 && PPC_64K_PAGES
 775        help
 776          This option adds support for a system call to allow user programs
 777          to set access permissions (read/write, readonly, or no access)
 778          on the 4k subpages of each 64k page.
 779
 780config PPC_COPRO_BASE
 781        bool
 782        default n
 783
 784config SCHED_SMT
 785        bool "SMT (Hyperthreading) scheduler support"
 786        depends on PPC64 && SMP
 787        help
 788          SMT scheduler support improves the CPU scheduler's decision making
 789          when dealing with POWER5 cpus at a cost of slightly increased
 790          overhead in some places. If unsure say N here.
 791
 792config PPC_DENORMALISATION
 793        bool "PowerPC denormalisation exception handling"
 794        depends on PPC_BOOK3S_64
 795        default "y" if PPC_POWERNV
 796        ---help---
 797          Add support for handling denormalisation of single precision
 798          values.  Useful for bare metal only.  If unsure say Y here.
 799
 800config CMDLINE_BOOL
 801        bool "Default bootloader kernel arguments"
 802
 803config CMDLINE
 804        string "Initial kernel command string" if CMDLINE_BOOL
 805        default "console=ttyS0,9600 console=tty0 root=/dev/sda2" if CMDLINE_BOOL
 806        default ""
 807        help
 808          On some platforms, there is currently no way for the boot loader to
 809          pass arguments to the kernel. For these platforms, you can supply
 810          some command-line options at build time by entering them here.  In
 811          most cases you will need to specify the root device here.
 812
 813config CMDLINE_FORCE
 814        bool "Always use the default kernel command string"
 815        depends on CMDLINE_BOOL
 816        help
 817          Always use the default kernel command string, even if the boot
 818          loader passes other arguments to the kernel.
 819          This is useful if you cannot or don't want to change the
 820          command-line options your boot loader passes to the kernel.
 821
 822config EXTRA_TARGETS
 823        string "Additional default image types"
 824        help
 825          List additional targets to be built by the bootwrapper here (separated
 826          by spaces).  This is useful for targets that depend of device tree
 827          files in the .dts directory.
 828
 829          Targets in this list will be build as part of the default build
 830          target, or when the user does a 'make zImage' or a
 831          'make zImage.initrd'.
 832
 833          If unsure, leave blank
 834
 835config ARCH_WANTS_FREEZER_CONTROL
 836        def_bool y
 837        depends on ADB_PMU
 838
 839source kernel/power/Kconfig
 840
 841config SECCOMP
 842        bool "Enable seccomp to safely compute untrusted bytecode"
 843        depends on PROC_FS
 844        default y
 845        help
 846          This kernel feature is useful for number crunching applications
 847          that may need to compute untrusted bytecode during their
 848          execution. By using pipes or other transports made available to
 849          the process as file descriptors supporting the read/write
 850          syscalls, it's possible to isolate those applications in
 851          their own address space using seccomp. Once seccomp is
 852          enabled via /proc/<pid>/seccomp, it cannot be disabled
 853          and the task is only allowed to execute a few safe syscalls
 854          defined by each seccomp mode.
 855
 856          If unsure, say Y. Only embedded should say N here.
 857
 858config PPC_MEM_KEYS
 859        prompt "PowerPC Memory Protection Keys"
 860        def_bool y
 861        depends on PPC_BOOK3S_64
 862        select ARCH_USES_HIGH_VMA_FLAGS
 863        select ARCH_HAS_PKEYS
 864        help
 865          Memory Protection Keys provides a mechanism for enforcing
 866          page-based protections, but without requiring modification of the
 867          page tables when an application changes protection domains.
 868
 869          For details, see Documentation/vm/protection-keys.rst
 870
 871          If unsure, say y.
 872
 873endmenu
 874
 875config ISA_DMA_API
 876        bool
 877        default PCI
 878
 879menu "Bus options"
 880
 881config ISA
 882        bool "Support for ISA-bus hardware"
 883        depends on PPC_CHRP
 884        select PPC_I8259
 885        help
 886          Find out whether you have ISA slots on your motherboard.  ISA is the
 887          name of a bus system, i.e. the way the CPU talks to the other stuff
 888          inside your box.  If you have an Apple machine, say N here; if you
 889          have an IBM RS/6000 or pSeries machine, say Y.  If you have an
 890          embedded board, consult your board documentation.
 891
 892config GENERIC_ISA_DMA
 893        bool
 894        depends on ISA_DMA_API
 895        default y
 896
 897config PPC_INDIRECT_PCI
 898        bool
 899        depends on PCI
 900        default y if 40x || 44x
 901        default n
 902
 903config EISA
 904        bool
 905
 906config SBUS
 907        bool
 908
 909config FSL_SOC
 910        bool
 911
 912config FSL_PCI
 913        bool
 914        select PPC_INDIRECT_PCI
 915        select PCI_QUIRKS
 916
 917config FSL_PMC
 918        bool
 919        default y
 920        depends on SUSPEND && (PPC_85xx || PPC_86xx)
 921        help
 922          Freescale MPC85xx/MPC86xx power management controller support
 923          (suspend/resume). For MPC83xx see platforms/83xx/suspend.c
 924
 925config PPC4xx_CPM
 926        bool
 927        default y
 928        depends on SUSPEND && (44x || 40x)
 929        help
 930          PPC4xx Clock Power Management (CPM) support (suspend/resume).
 931          It also enables support for two different idle states (idle-wait
 932          and idle-doze).
 933
 934config 4xx_SOC
 935        bool
 936
 937config FSL_LBC
 938        bool "Freescale Local Bus support"
 939        help
 940          Enables reporting of errors from the Freescale local bus
 941          controller.  Also contains some common code used by
 942          drivers for specific local bus peripherals.
 943
 944config FSL_GTM
 945        bool
 946        depends on PPC_83xx || QUICC_ENGINE || CPM2
 947        help
 948          Freescale General-purpose Timers support
 949
 950# Yes MCA RS/6000s exist but Linux-PPC does not currently support any
 951config MCA
 952        bool
 953
 954# Platforms that what PCI turned unconditionally just do select PCI
 955# in their config node.  Platforms that want to choose at config
 956# time should select PPC_PCI_CHOICE
 957config PPC_PCI_CHOICE
 958        bool
 959
 960config PCI
 961        bool "PCI support" if PPC_PCI_CHOICE
 962        default y if !40x && !CPM2 && !PPC_8xx && !PPC_83xx \
 963                && !PPC_85xx && !PPC_86xx && !GAMECUBE_COMMON
 964        default PCI_QSPAN if PPC_8xx
 965        select GENERIC_PCI_IOMAP
 966        help
 967          Find out whether your system includes a PCI bus. PCI is the name of
 968          a bus system, i.e. the way the CPU talks to the other stuff inside
 969          your box.  If you say Y here, the kernel will include drivers and
 970          infrastructure code to support PCI bus devices.
 971
 972config PCI_DOMAINS
 973        def_bool PCI
 974
 975config PCI_SYSCALL
 976        def_bool PCI
 977
 978config PCI_QSPAN
 979        bool "QSpan PCI"
 980        depends on PPC_8xx
 981        select PPC_I8259
 982        help
 983          Say Y here if you have a system based on a Motorola 8xx-series
 984          embedded processor with a QSPAN PCI interface, otherwise say N.
 985
 986config PCI_8260
 987        bool
 988        depends on PCI && 8260
 989        select PPC_INDIRECT_PCI
 990        default y
 991
 992source "drivers/pci/Kconfig"
 993
 994source "drivers/pcmcia/Kconfig"
 995
 996config HAS_RAPIDIO
 997        bool
 998        default n
 999
1000config RAPIDIO
1001        tristate "RapidIO support"
1002        depends on HAS_RAPIDIO || PCI
1003        help
1004          If you say Y here, the kernel will include drivers and
1005          infrastructure code to support RapidIO interconnect devices.
1006
1007config FSL_RIO
1008        bool "Freescale Embedded SRIO Controller support"
1009        depends on RAPIDIO = y && HAS_RAPIDIO
1010        default "n"
1011        ---help---
1012          Include support for RapidIO controller on Freescale embedded
1013          processors (MPC8548, MPC8641, etc).
1014
1015source "drivers/rapidio/Kconfig"
1016
1017endmenu
1018
1019config NONSTATIC_KERNEL
1020        bool
1021        default n
1022
1023menu "Advanced setup"
1024        depends on PPC32
1025
1026config ADVANCED_OPTIONS
1027        bool "Prompt for advanced kernel configuration options"
1028        help
1029          This option will enable prompting for a variety of advanced kernel
1030          configuration options.  These options can cause the kernel to not
1031          work if they are set incorrectly, but can be used to optimize certain
1032          aspects of kernel memory management.
1033
1034          Unless you know what you are doing, say N here.
1035
1036comment "Default settings for advanced configuration options are used"
1037        depends on !ADVANCED_OPTIONS
1038
1039config LOWMEM_SIZE_BOOL
1040        bool "Set maximum low memory"
1041        depends on ADVANCED_OPTIONS
1042        help
1043          This option allows you to set the maximum amount of memory which
1044          will be used as "low memory", that is, memory which the kernel can
1045          access directly, without having to set up a kernel virtual mapping.
1046          This can be useful in optimizing the layout of kernel virtual
1047          memory.
1048
1049          Say N here unless you know what you are doing.
1050
1051config LOWMEM_SIZE
1052        hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
1053        default "0x30000000"
1054
1055config LOWMEM_CAM_NUM_BOOL
1056        bool "Set number of CAMs to use to map low memory"
1057        depends on ADVANCED_OPTIONS && FSL_BOOKE
1058        help
1059          This option allows you to set the maximum number of CAM slots that
1060          will be used to map low memory.  There are a limited number of slots
1061          available and even more limited number that will fit in the L1 MMU.
1062          However, using more entries will allow mapping more low memory.  This
1063          can be useful in optimizing the layout of kernel virtual memory.
1064
1065          Say N here unless you know what you are doing.
1066
1067config LOWMEM_CAM_NUM
1068        depends on FSL_BOOKE
1069        int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL
1070        default 3
1071
1072config DYNAMIC_MEMSTART
1073        bool "Enable page aligned dynamic load address for kernel"
1074        depends on ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || 44x)
1075        select NONSTATIC_KERNEL
1076        help
1077          This option enables the kernel to be loaded at any page aligned
1078          physical address. The kernel creates a mapping from KERNELBASE to 
1079          the address where the kernel is loaded. The page size here implies
1080          the TLB page size of the mapping for kernel on the particular platform.
1081          Please refer to the init code for finding the TLB page size.
1082
1083          DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
1084          kernel image, where the only restriction is the page aligned kernel
1085          load address. When this option is enabled, the compile time physical 
1086          address CONFIG_PHYSICAL_START is ignored.
1087
1088          This option is overridden by CONFIG_RELOCATABLE
1089
1090config PAGE_OFFSET_BOOL
1091        bool "Set custom page offset address"
1092        depends on ADVANCED_OPTIONS
1093        help
1094          This option allows you to set the kernel virtual address at which
1095          the kernel will map low memory.  This can be useful in optimizing
1096          the virtual memory layout of the system.
1097
1098          Say N here unless you know what you are doing.
1099
1100config PAGE_OFFSET
1101        hex "Virtual address of memory base" if PAGE_OFFSET_BOOL
1102        default "0xc0000000"
1103
1104config KERNEL_START_BOOL
1105        bool "Set custom kernel base address"
1106        depends on ADVANCED_OPTIONS
1107        help
1108          This option allows you to set the kernel virtual address at which
1109          the kernel will be loaded.  Normally this should match PAGE_OFFSET
1110          however there are times (like kdump) that one might not want them
1111          to be the same.
1112
1113          Say N here unless you know what you are doing.
1114
1115config KERNEL_START
1116        hex "Virtual address of kernel base" if KERNEL_START_BOOL
1117        default PAGE_OFFSET if PAGE_OFFSET_BOOL
1118        default "0xc2000000" if CRASH_DUMP && !NONSTATIC_KERNEL
1119        default "0xc0000000"
1120
1121config PHYSICAL_START_BOOL
1122        bool "Set physical address where the kernel is loaded"
1123        depends on ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE
1124        help
1125          This gives the physical address where the kernel is loaded.
1126
1127          Say N here unless you know what you are doing.
1128
1129config PHYSICAL_START
1130        hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
1131        default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !NONSTATIC_KERNEL
1132        default "0x00000000"
1133
1134config PHYSICAL_ALIGN
1135        hex
1136        default "0x04000000" if FSL_BOOKE
1137        help
1138          This value puts the alignment restrictions on physical address
1139          where kernel is loaded and run from. Kernel is compiled for an
1140          address which meets above alignment restriction.
1141
1142config TASK_SIZE_BOOL
1143        bool "Set custom user task size"
1144        depends on ADVANCED_OPTIONS
1145        help
1146          This option allows you to set the amount of virtual address space
1147          allocated to user tasks.  This can be useful in optimizing the
1148          virtual memory layout of the system.
1149
1150          Say N here unless you know what you are doing.
1151
1152config TASK_SIZE
1153        hex "Size of user task space" if TASK_SIZE_BOOL
1154        default "0x80000000" if PPC_8xx
1155        default "0xc0000000"
1156
1157config CONSISTENT_SIZE_BOOL
1158        bool "Set custom consistent memory pool size"
1159        depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
1160        help
1161          This option allows you to set the size of the
1162          consistent memory pool.  This pool of virtual memory
1163          is used to make consistent memory allocations.
1164
1165config CONSISTENT_SIZE
1166        hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL
1167        default "0x00200000" if NOT_COHERENT_CACHE
1168
1169config PIN_TLB
1170        bool "Pinned Kernel TLBs (860 ONLY)"
1171        depends on ADVANCED_OPTIONS && PPC_8xx && \
1172                   !DEBUG_PAGEALLOC && !STRICT_KERNEL_RWX
1173
1174config PIN_TLB_DATA
1175        bool "Pinned TLB for DATA"
1176        depends on PIN_TLB
1177        default y
1178
1179config PIN_TLB_IMMR
1180        bool "Pinned TLB for IMMR"
1181        depends on PIN_TLB
1182        default y
1183
1184config PIN_TLB_TEXT
1185        bool "Pinned TLB for TEXT"
1186        depends on PIN_TLB
1187        default y
1188endmenu
1189
1190if PPC64
1191# This value must have zeroes in the bottom 60 bits otherwise lots will break
1192config PAGE_OFFSET
1193        hex
1194        default "0xc000000000000000"
1195config KERNEL_START
1196        hex
1197        default "0xc000000000000000"
1198config PHYSICAL_START
1199        hex
1200        default "0x00000000"
1201endif
1202
1203config  ARCH_RANDOM
1204        def_bool n
1205
1206source "net/Kconfig"
1207
1208source "drivers/Kconfig"
1209
1210source "fs/Kconfig"
1211
1212source "lib/Kconfig"
1213
1214source "arch/powerpc/Kconfig.debug"
1215
1216source "security/Kconfig"
1217
1218source "crypto/Kconfig"
1219
1220config PPC_LIB_RHEAP
1221        bool
1222
1223source "arch/powerpc/kvm/Kconfig"
1224
1225source "kernel/livepatch/Kconfig"
1226