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