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