kbuild: add CONFIG_ASM_MODVERSIONS
[sfrench/cifs-2.6.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_DMA_MMAP_PGPROT
125         select ARCH_HAS_ELF_RANDOMIZE
126         select ARCH_HAS_FORTIFY_SOURCE
127         select ARCH_HAS_GCOV_PROFILE_ALL
128         select ARCH_HAS_KCOV
129         select ARCH_HAS_HUGEPD                  if HUGETLB_PAGE
130         select ARCH_HAS_MMIOWB                  if PPC64
131         select ARCH_HAS_PHYS_TO_DMA
132         select ARCH_HAS_PMEM_API                if PPC64
133         select ARCH_HAS_PTE_DEVMAP              if PPC_BOOK3S_64
134         select ARCH_HAS_PTE_SPECIAL
135         select ARCH_HAS_MEMBARRIER_CALLBACKS
136         select ARCH_HAS_SCALED_CPUTIME          if VIRT_CPU_ACCOUNTING_NATIVE && PPC64
137         select ARCH_HAS_STRICT_KERNEL_RWX       if ((PPC_BOOK3S_64 || PPC32) && !RELOCATABLE && !HIBERNATION)
138         select ARCH_HAS_TICK_BROADCAST          if GENERIC_CLOCKEVENTS_BROADCAST
139         select ARCH_HAS_UACCESS_FLUSHCACHE      if PPC64
140         select ARCH_HAS_UBSAN_SANITIZE_ALL
141         select ARCH_HAVE_NMI_SAFE_CMPXCHG
142         select ARCH_KEEP_MEMBLOCK
143         select ARCH_MIGHT_HAVE_PC_PARPORT
144         select ARCH_MIGHT_HAVE_PC_SERIO
145         select ARCH_OPTIONAL_KERNEL_RWX         if ARCH_HAS_STRICT_KERNEL_RWX
146         select ARCH_SUPPORTS_ATOMIC_RMW
147         select ARCH_USE_BUILTIN_BSWAP
148         select ARCH_USE_CMPXCHG_LOCKREF         if PPC64
149         select ARCH_WANT_IPC_PARSE_VERSION
150         select ARCH_WEAK_RELEASE_ACQUIRE
151         select BINFMT_ELF
152         select BUILDTIME_EXTABLE_SORT
153         select CLONE_BACKWARDS
154         select DCACHE_WORD_ACCESS               if PPC64 && CPU_LITTLE_ENDIAN
155         select DYNAMIC_FTRACE                   if FUNCTION_TRACER
156         select EDAC_ATOMIC_SCRUB
157         select EDAC_SUPPORT
158         select GENERIC_ATOMIC64                 if PPC32
159         select GENERIC_CLOCKEVENTS
160         select GENERIC_CLOCKEVENTS_BROADCAST    if SMP
161         select GENERIC_CMOS_UPDATE
162         select GENERIC_CPU_AUTOPROBE
163         select GENERIC_CPU_VULNERABILITIES      if PPC_BARRIER_NOSPEC
164         select GENERIC_IRQ_SHOW
165         select GENERIC_IRQ_SHOW_LEVEL
166         select GENERIC_PCI_IOMAP                if PCI
167         select GENERIC_SMP_IDLE_THREAD
168         select GENERIC_STRNCPY_FROM_USER
169         select GENERIC_STRNLEN_USER
170         select GENERIC_TIME_VSYSCALL
171         select HAVE_ARCH_AUDITSYSCALL
172         select HAVE_ARCH_HUGE_VMAP              if PPC_BOOK3S_64 && PPC_RADIX_MMU
173         select HAVE_ARCH_JUMP_LABEL
174         select HAVE_ARCH_KASAN                  if PPC32
175         select HAVE_ARCH_KGDB
176         select HAVE_ARCH_MMAP_RND_BITS
177         select HAVE_ARCH_MMAP_RND_COMPAT_BITS   if COMPAT
178         select HAVE_ARCH_NVRAM_OPS
179         select HAVE_ARCH_SECCOMP_FILTER
180         select HAVE_ARCH_TRACEHOOK
181         select HAVE_ASM_MODVERSIONS
182         select HAVE_C_RECORDMCOUNT
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_FAST_GUP
194         select HAVE_FTRACE_MCOUNT_RECORD
195         select HAVE_FUNCTION_ERROR_INJECTION
196         select HAVE_FUNCTION_GRAPH_TRACER
197         select HAVE_FUNCTION_TRACER
198         select HAVE_GCC_PLUGINS                 if GCC_VERSION >= 50200   # plugin support on gcc <= 5.1 is buggy on PPC
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_LZMA                 if DEFAULT_UIMAGE
205         select HAVE_KERNEL_LZO                  if DEFAULT_UIMAGE
206         select HAVE_KERNEL_XZ                   if PPC_BOOK3S || 44x
207         select HAVE_KPROBES
208         select HAVE_KPROBES_ON_FTRACE
209         select HAVE_KRETPROBES
210         select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
211         select HAVE_LIVEPATCH                   if HAVE_DYNAMIC_FTRACE_WITH_REGS
212         select HAVE_MEMBLOCK_NODE_MAP
213         select HAVE_MOD_ARCH_SPECIFIC
214         select HAVE_NMI                         if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
215         select HAVE_HARDLOCKUP_DETECTOR_ARCH    if (PPC64 && PPC_BOOK3S)
216         select HAVE_OPROFILE
217         select HAVE_OPTPROBES                   if PPC64
218         select HAVE_PERF_EVENTS
219         select HAVE_PERF_EVENTS_NMI             if PPC64
220         select HAVE_HARDLOCKUP_DETECTOR_PERF    if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH
221         select HAVE_PERF_REGS
222         select HAVE_PERF_USER_STACK_DUMP
223         select HAVE_RCU_TABLE_FREE              if SMP
224         select HAVE_RCU_TABLE_NO_INVALIDATE     if HAVE_RCU_TABLE_FREE
225         select HAVE_MMU_GATHER_PAGE_SIZE
226         select HAVE_REGS_AND_STACK_ACCESS_API
227         select HAVE_RELIABLE_STACKTRACE         if PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
228         select HAVE_SYSCALL_TRACEPOINTS
229         select HAVE_VIRT_CPU_ACCOUNTING
230         select HAVE_IRQ_TIME_ACCOUNTING
231         select HAVE_RSEQ
232         select IOMMU_HELPER                     if PPC64
233         select IRQ_DOMAIN
234         select IRQ_FORCED_THREADING
235         select MODULES_USE_ELF_RELA
236         select NEED_DMA_MAP_STATE               if PPC64 || NOT_COHERENT_CACHE
237         select NEED_SG_DMA_LENGTH
238         select OF
239         select OF_EARLY_FLATTREE
240         select OLD_SIGACTION                    if PPC32
241         select OLD_SIGSUSPEND
242         select PCI_DOMAINS                      if PCI
243         select PCI_SYSCALL                      if PCI
244         select PPC_DAWR                         if PPC64
245         select RTC_LIB
246         select SPARSE_IRQ
247         select SYSCTL_EXCEPTION_TRACE
248         select THREAD_INFO_IN_TASK
249         select VIRT_TO_BUS                      if !PPC64
250         #
251         # Please keep this list sorted alphabetically.
252         #
253
254 config PPC_BARRIER_NOSPEC
255         bool
256         default y
257         depends on PPC_BOOK3S_64 || PPC_FSL_BOOK3E
258
259 config EARLY_PRINTK
260         bool
261         default y
262
263 config PANIC_TIMEOUT
264         int
265         default 180
266
267 config COMPAT
268         bool
269         default y if PPC64
270         select COMPAT_BINFMT_ELF
271         select ARCH_WANT_OLD_COMPAT_IPC
272         select COMPAT_OLD_SIGACTION
273
274 config SYSVIPC_COMPAT
275         bool
276         depends on COMPAT && SYSVIPC
277         default y
278
279 config SCHED_OMIT_FRAME_POINTER
280         bool
281         default y
282
283 config ARCH_MAY_HAVE_PC_FDC
284         bool
285         default PCI
286
287 config PPC_UDBG_16550
288         bool
289
290 config GENERIC_TBSYNC
291         bool
292         default y if PPC32 && SMP
293
294 config AUDIT_ARCH
295         bool
296         default y
297
298 config GENERIC_BUG
299         bool
300         default y
301         depends on BUG
302
303 config SYS_SUPPORTS_APM_EMULATION
304         default y if PMAC_APM_EMU
305         bool
306
307 config EPAPR_BOOT
308         bool
309         help
310           Used to allow a board to specify it wants an ePAPR compliant wrapper.
311
312 config DEFAULT_UIMAGE
313         bool
314         help
315           Used to allow a board to specify it wants a uImage built by default
316
317 config ARCH_HIBERNATION_POSSIBLE
318         bool
319         default y
320
321 config ARCH_SUSPEND_POSSIBLE
322         def_bool y
323         depends on ADB_PMU || PPC_EFIKA || PPC_LITE5200 || PPC_83xx || \
324                    (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \
325                    || 44x || 40x
326
327 config ARCH_SUSPEND_NONZERO_CPU
328         def_bool y
329         depends on PPC_POWERNV || PPC_PSERIES
330
331 config PPC_DCR_NATIVE
332         bool
333
334 config PPC_DCR_MMIO
335         bool
336
337 config PPC_DCR
338         bool
339         depends on PPC_DCR_NATIVE || PPC_DCR_MMIO
340         default y
341
342 config PPC_OF_PLATFORM_PCI
343         bool
344         depends on PCI
345         depends on PPC64 # not supported on 32 bits yet
346
347 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
348         depends on PPC32 || PPC_BOOK3S_64
349         def_bool y
350
351 config ARCH_SUPPORTS_UPROBES
352         def_bool y
353
354 config PPC_ADV_DEBUG_REGS
355         bool
356         depends on 40x || BOOKE
357         default y
358
359 config PPC_ADV_DEBUG_IACS
360         int
361         depends on PPC_ADV_DEBUG_REGS
362         default 4 if 44x
363         default 2
364
365 config PPC_ADV_DEBUG_DACS
366         int
367         depends on PPC_ADV_DEBUG_REGS
368         default 2
369
370 config PPC_ADV_DEBUG_DVCS
371         int
372         depends on PPC_ADV_DEBUG_REGS
373         default 2 if 44x
374         default 0
375
376 config PPC_ADV_DEBUG_DAC_RANGE
377         bool
378         depends on PPC_ADV_DEBUG_REGS && 44x
379         default y
380
381 config PPC_DAWR
382         bool
383
384 config ZONE_DMA
385         bool
386         default y if PPC_BOOK3E_64
387
388 config PGTABLE_LEVELS
389         int
390         default 2 if !PPC64
391         default 4
392
393 source "arch/powerpc/sysdev/Kconfig"
394 source "arch/powerpc/platforms/Kconfig"
395
396 menu "Kernel options"
397
398 config HIGHMEM
399         bool "High memory support"
400         depends on PPC32
401
402 source "kernel/Kconfig.hz"
403
404 config HUGETLB_PAGE_SIZE_VARIABLE
405         bool
406         depends on HUGETLB_PAGE && PPC_BOOK3S_64
407         default y
408
409 config MATH_EMULATION
410         bool "Math emulation"
411         depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE
412         help
413           Some PowerPC chips designed for embedded applications do not have
414           a floating-point unit and therefore do not implement the
415           floating-point instructions in the PowerPC instruction set.  If you
416           say Y here, the kernel will include code to emulate a floating-point
417           unit, which will allow programs that use floating-point
418           instructions to run.
419
420           This is also useful to emulate missing (optional) instructions
421           such as fsqrt on cores that do have an FPU but do not implement
422           them (such as Freescale BookE).
423
424 choice
425         prompt "Math emulation options"
426         default MATH_EMULATION_FULL
427         depends on MATH_EMULATION
428
429 config  MATH_EMULATION_FULL
430         bool "Emulate all the floating point instructions"
431         help
432           Select this option will enable the kernel to support to emulate
433           all the floating point instructions. If your SoC doesn't have
434           a FPU, you should select this.
435
436 config MATH_EMULATION_HW_UNIMPLEMENTED
437         bool "Just emulate the FPU unimplemented instructions"
438         help
439           Select this if you know there does have a hardware FPU on your
440           SoC, but some floating point instructions are not implemented by that.
441
442 endchoice
443
444 config PPC_TRANSACTIONAL_MEM
445         bool "Transactional Memory support for POWERPC"
446         depends on PPC_BOOK3S_64
447         depends on SMP
448         select ALTIVEC
449         select VSX
450         help
451           Support user-mode Transactional Memory on POWERPC.
452
453 config LD_HEAD_STUB_CATCH
454         bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT
455         depends on PPC64
456         help
457           Very large kernels can cause linker branch stubs to be generated by
458           code in head_64.S, which moves the head text sections out of their
459           specified location. This option can work around the problem.
460
461           If unsure, say "N".
462
463 config MPROFILE_KERNEL
464         depends on PPC64 && CPU_LITTLE_ENDIAN
465         def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__)
466
467 config HOTPLUG_CPU
468         bool "Support for enabling/disabling CPUs"
469         depends on SMP && (PPC_PSERIES || \
470         PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
471         help
472           Say Y here to be able to disable and re-enable individual
473           CPUs at runtime on SMP machines.
474
475           Say N if you are unsure.
476
477 config ARCH_CPU_PROBE_RELEASE
478         def_bool y
479         depends on HOTPLUG_CPU
480
481 config ARCH_ENABLE_MEMORY_HOTPLUG
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 44x || PPC_BOOK3S_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 PPC_PAGE_SHIFT
718         int
719         default 18 if PPC_256K_PAGES
720         default 16 if PPC_64K_PAGES
721         default 14 if PPC_16K_PAGES
722         default 12
723
724 config THREAD_SHIFT
725         int "Thread shift" if EXPERT
726         range 13 15
727         default "15" if PPC_256K_PAGES
728         default "14" if PPC64
729         default "13"
730         help
731           Used to define the stack size. The default is almost always what you
732           want. Only change this if you know what you are doing.
733
734 config ETEXT_SHIFT_BOOL
735         bool "Set custom etext alignment" if STRICT_KERNEL_RWX && \
736                                              (PPC_BOOK3S_32 || PPC_8xx)
737         depends on ADVANCED_OPTIONS
738         help
739           This option allows you to set the kernel end of text alignment. When
740           RAM is mapped by blocks, the alignment needs to fit the size and
741           number of possible blocks. The default should be OK for most configs.
742
743           Say N here unless you know what you are doing.
744
745 config ETEXT_SHIFT
746         int "_etext shift" if ETEXT_SHIFT_BOOL
747         range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
748         range 19 23 if STRICT_KERNEL_RWX && PPC_8xx
749         default 17 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
750         default 19 if STRICT_KERNEL_RWX && PPC_8xx
751         default PPC_PAGE_SHIFT
752         help
753           On Book3S 32 (603+), IBATs are used to map kernel text.
754           Smaller is the alignment, greater is the number of necessary IBATs.
755
756           On 8xx, large pages (512kb or 8M) are used to map kernel linear
757           memory. Aligning to 8M reduces TLB misses as only 8M pages are used
758           in that case.
759
760 config DATA_SHIFT_BOOL
761         bool "Set custom data alignment" if STRICT_KERNEL_RWX && \
762                                             (PPC_BOOK3S_32 || PPC_8xx)
763         depends on ADVANCED_OPTIONS
764         help
765           This option allows you to set the kernel data alignment. When
766           RAM is mapped by blocks, the alignment needs to fit the size and
767           number of possible blocks. The default should be OK for most configs.
768
769           Say N here unless you know what you are doing.
770
771 config DATA_SHIFT
772         int "Data shift" if DATA_SHIFT_BOOL
773         default 24 if STRICT_KERNEL_RWX && PPC64
774         range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
775         range 19 23 if STRICT_KERNEL_RWX && PPC_8xx
776         default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
777         default 23 if STRICT_KERNEL_RWX && PPC_8xx
778         default PPC_PAGE_SHIFT
779         help
780           On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO.
781           Smaller is the alignment, greater is the number of necessary DBATs.
782
783           On 8xx, large pages (512kb or 8M) are used to map kernel linear
784           memory. Aligning to 8M reduces TLB misses as only 8M pages are used
785           in that case.
786
787 config FORCE_MAX_ZONEORDER
788         int "Maximum zone order"
789         range 8 9 if PPC64 && PPC_64K_PAGES
790         default "9" if PPC64 && PPC_64K_PAGES
791         range 13 13 if PPC64 && !PPC_64K_PAGES
792         default "13" if PPC64 && !PPC_64K_PAGES
793         range 9 64 if PPC32 && PPC_16K_PAGES
794         default "9" if PPC32 && PPC_16K_PAGES
795         range 7 64 if PPC32 && PPC_64K_PAGES
796         default "7" if PPC32 && PPC_64K_PAGES
797         range 5 64 if PPC32 && PPC_256K_PAGES
798         default "5" if PPC32 && PPC_256K_PAGES
799         range 11 64
800         default "11"
801         help
802           The kernel memory allocator divides physically contiguous memory
803           blocks into "zones", where each zone is a power of two number of
804           pages.  This option selects the largest power of two that the kernel
805           keeps in the memory allocator.  If you need to allocate very large
806           blocks of physically contiguous memory, then you may need to
807           increase this value.
808
809           This config option is actually maximum order plus one. For example,
810           a value of 11 means that the largest free memory block is 2^10 pages.
811
812           The page size is not necessarily 4KB.  For example, on 64-bit
813           systems, 64KB pages can be enabled via CONFIG_PPC_64K_PAGES.  Keep
814           this in mind when choosing a value for this option.
815
816 config PPC_SUBPAGE_PROT
817         bool "Support setting protections for 4k subpages"
818         depends on PPC_BOOK3S_64 && PPC_64K_PAGES
819         help
820           This option adds support for a system call to allow user programs
821           to set access permissions (read/write, readonly, or no access)
822           on the 4k subpages of each 64k page.
823
824 config PPC_COPRO_BASE
825         bool
826
827 config SCHED_SMT
828         bool "SMT (Hyperthreading) scheduler support"
829         depends on PPC64 && SMP
830         help
831           SMT scheduler support improves the CPU scheduler's decision making
832           when dealing with POWER5 cpus at a cost of slightly increased
833           overhead in some places. If unsure say N here.
834
835 config PPC_DENORMALISATION
836         bool "PowerPC denormalisation exception handling"
837         depends on PPC_BOOK3S_64
838         default "y" if PPC_POWERNV
839         help
840           Add support for handling denormalisation of single precision
841           values.  Useful for bare metal only.  If unsure say Y here.
842
843 config CMDLINE_BOOL
844         bool "Default bootloader kernel arguments"
845
846 config CMDLINE
847         string "Initial kernel command string" if CMDLINE_BOOL
848         default "console=ttyS0,9600 console=tty0 root=/dev/sda2" if CMDLINE_BOOL
849         default ""
850         help
851           On some platforms, there is currently no way for the boot loader to
852           pass arguments to the kernel. For these platforms, you can supply
853           some command-line options at build time by entering them here.  In
854           most cases you will need to specify the root device here.
855
856 config CMDLINE_FORCE
857         bool "Always use the default kernel command string"
858         depends on CMDLINE_BOOL
859         help
860           Always use the default kernel command string, even if the boot
861           loader passes other arguments to the kernel.
862           This is useful if you cannot or don't want to change the
863           command-line options your boot loader passes to the kernel.
864
865 config EXTRA_TARGETS
866         string "Additional default image types"
867         help
868           List additional targets to be built by the bootwrapper here (separated
869           by spaces).  This is useful for targets that depend of device tree
870           files in the .dts directory.
871
872           Targets in this list will be build as part of the default build
873           target, or when the user does a 'make zImage' or a
874           'make zImage.initrd'.
875
876           If unsure, leave blank
877
878 config ARCH_WANTS_FREEZER_CONTROL
879         def_bool y
880         depends on ADB_PMU
881
882 source "kernel/power/Kconfig"
883
884 config SECCOMP
885         bool "Enable seccomp to safely compute untrusted bytecode"
886         depends on PROC_FS
887         default y
888         help
889           This kernel feature is useful for number crunching applications
890           that may need to compute untrusted bytecode during their
891           execution. By using pipes or other transports made available to
892           the process as file descriptors supporting the read/write
893           syscalls, it's possible to isolate those applications in
894           their own address space using seccomp. Once seccomp is
895           enabled via /proc/<pid>/seccomp, it cannot be disabled
896           and the task is only allowed to execute a few safe syscalls
897           defined by each seccomp mode.
898
899           If unsure, say Y. Only embedded should say N here.
900
901 config PPC_MEM_KEYS
902         prompt "PowerPC Memory Protection Keys"
903         def_bool y
904         depends on PPC_BOOK3S_64
905         select ARCH_USES_HIGH_VMA_FLAGS
906         select ARCH_HAS_PKEYS
907         help
908           Memory Protection Keys provides a mechanism for enforcing
909           page-based protections, but without requiring modification of the
910           page tables when an application changes protection domains.
911
912           For details, see Documentation/core-api/protection-keys.rst
913
914           If unsure, say y.
915
916 endmenu
917
918 config ISA_DMA_API
919         bool
920         default PCI
921
922 menu "Bus options"
923
924 config ISA
925         bool "Support for ISA-bus hardware"
926         depends on PPC_CHRP
927         select PPC_I8259
928         help
929           Find out whether you have ISA slots on your motherboard.  ISA is the
930           name of a bus system, i.e. the way the CPU talks to the other stuff
931           inside your box.  If you have an Apple machine, say N here; if you
932           have an IBM RS/6000 or pSeries machine, say Y.  If you have an
933           embedded board, consult your board documentation.
934
935 config GENERIC_ISA_DMA
936         bool
937         depends on ISA_DMA_API
938         default y
939
940 config PPC_INDIRECT_PCI
941         bool
942         depends on PCI
943         default y if 40x || 44x
944
945 config SBUS
946         bool
947
948 config FSL_SOC
949         bool
950
951 config FSL_PCI
952         bool
953         select ARCH_HAS_DMA_SET_MASK
954         select PPC_INDIRECT_PCI
955         select PCI_QUIRKS
956
957 config FSL_PMC
958         bool
959         default y
960         depends on SUSPEND && (PPC_85xx || PPC_86xx)
961         help
962           Freescale MPC85xx/MPC86xx power management controller support
963           (suspend/resume). For MPC83xx see platforms/83xx/suspend.c
964
965 config PPC4xx_CPM
966         bool
967         default y
968         depends on SUSPEND && (44x || 40x)
969         help
970           PPC4xx Clock Power Management (CPM) support (suspend/resume).
971           It also enables support for two different idle states (idle-wait
972           and idle-doze).
973
974 config 4xx_SOC
975         bool
976
977 config FSL_LBC
978         bool "Freescale Local Bus support"
979         help
980           Enables reporting of errors from the Freescale local bus
981           controller.  Also contains some common code used by
982           drivers for specific local bus peripherals.
983
984 config FSL_GTM
985         bool
986         depends on PPC_83xx || QUICC_ENGINE || CPM2
987         help
988           Freescale General-purpose Timers support
989
990 config PCI_8260
991         bool
992         depends on PCI && 8260
993         select PPC_INDIRECT_PCI
994         default y
995
996 config FSL_RIO
997         bool "Freescale Embedded SRIO Controller support"
998         depends on RAPIDIO = y && HAVE_RAPIDIO
999         default "n"
1000         help
1001           Include support for RapidIO controller on Freescale embedded
1002           processors (MPC8548, MPC8641, etc).
1003
1004 endmenu
1005
1006 config NONSTATIC_KERNEL
1007         bool
1008
1009 menu "Advanced setup"
1010         depends on PPC32
1011
1012 config ADVANCED_OPTIONS
1013         bool "Prompt for advanced kernel configuration options"
1014         help
1015           This option will enable prompting for a variety of advanced kernel
1016           configuration options.  These options can cause the kernel to not
1017           work if they are set incorrectly, but can be used to optimize certain
1018           aspects of kernel memory management.
1019
1020           Unless you know what you are doing, say N here.
1021
1022 comment "Default settings for advanced configuration options are used"
1023         depends on !ADVANCED_OPTIONS
1024
1025 config LOWMEM_SIZE_BOOL
1026         bool "Set maximum low memory"
1027         depends on ADVANCED_OPTIONS
1028         help
1029           This option allows you to set the maximum amount of memory which
1030           will be used as "low memory", that is, memory which the kernel can
1031           access directly, without having to set up a kernel virtual mapping.
1032           This can be useful in optimizing the layout of kernel virtual
1033           memory.
1034
1035           Say N here unless you know what you are doing.
1036
1037 config LOWMEM_SIZE
1038         hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
1039         default "0x30000000"
1040
1041 config LOWMEM_CAM_NUM_BOOL
1042         bool "Set number of CAMs to use to map low memory"
1043         depends on ADVANCED_OPTIONS && FSL_BOOKE
1044         help
1045           This option allows you to set the maximum number of CAM slots that
1046           will be used to map low memory.  There are a limited number of slots
1047           available and even more limited number that will fit in the L1 MMU.
1048           However, using more entries will allow mapping more low memory.  This
1049           can be useful in optimizing the layout of kernel virtual memory.
1050
1051           Say N here unless you know what you are doing.
1052
1053 config LOWMEM_CAM_NUM
1054         depends on FSL_BOOKE
1055         int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL
1056         default 3
1057
1058 config DYNAMIC_MEMSTART
1059         bool "Enable page aligned dynamic load address for kernel"
1060         depends on ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || 44x)
1061         select NONSTATIC_KERNEL
1062         help
1063           This option enables the kernel to be loaded at any page aligned
1064           physical address. The kernel creates a mapping from KERNELBASE to
1065           the address where the kernel is loaded. The page size here implies
1066           the TLB page size of the mapping for kernel on the particular platform.
1067           Please refer to the init code for finding the TLB page size.
1068
1069           DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
1070           kernel image, where the only restriction is the page aligned kernel
1071           load address. When this option is enabled, the compile time physical
1072           address CONFIG_PHYSICAL_START is ignored.
1073
1074           This option is overridden by CONFIG_RELOCATABLE
1075
1076 config PAGE_OFFSET_BOOL
1077         bool "Set custom page offset address"
1078         depends on ADVANCED_OPTIONS
1079         help
1080           This option allows you to set the kernel virtual address at which
1081           the kernel will map low memory.  This can be useful in optimizing
1082           the virtual memory layout of the system.
1083
1084           Say N here unless you know what you are doing.
1085
1086 config PAGE_OFFSET
1087         hex "Virtual address of memory base" if PAGE_OFFSET_BOOL
1088         default "0xc0000000"
1089
1090 config KERNEL_START_BOOL
1091         bool "Set custom kernel base 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 be loaded.  Normally this should match PAGE_OFFSET
1096           however there are times (like kdump) that one might not want them
1097           to be the same.
1098
1099           Say N here unless you know what you are doing.
1100
1101 config KERNEL_START
1102         hex "Virtual address of kernel base" if KERNEL_START_BOOL
1103         default PAGE_OFFSET if PAGE_OFFSET_BOOL
1104         default "0xc2000000" if CRASH_DUMP && !NONSTATIC_KERNEL
1105         default "0xc0000000"
1106
1107 config PHYSICAL_START_BOOL
1108         bool "Set physical address where the kernel is loaded"
1109         depends on ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE
1110         help
1111           This gives the physical address where the kernel is loaded.
1112
1113           Say N here unless you know what you are doing.
1114
1115 config PHYSICAL_START
1116         hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
1117         default "0x02000000" if PPC_BOOK3S && CRASH_DUMP && !NONSTATIC_KERNEL
1118         default "0x00000000"
1119
1120 config PHYSICAL_ALIGN
1121         hex
1122         default "0x04000000" if FSL_BOOKE
1123         help
1124           This value puts the alignment restrictions on physical address
1125           where kernel is loaded and run from. Kernel is compiled for an
1126           address which meets above alignment restriction.
1127
1128 config TASK_SIZE_BOOL
1129         bool "Set custom user task size"
1130         depends on ADVANCED_OPTIONS
1131         help
1132           This option allows you to set the amount of virtual address space
1133           allocated to user tasks.  This can be useful in optimizing the
1134           virtual memory layout of the system.
1135
1136           Say N here unless you know what you are doing.
1137
1138 config TASK_SIZE
1139         hex "Size of user task space" if TASK_SIZE_BOOL
1140         default "0x80000000" if PPC_8xx
1141         default "0xc0000000"
1142
1143 config CONSISTENT_SIZE_BOOL
1144         bool "Set custom consistent memory pool size"
1145         depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
1146         help
1147           This option allows you to set the size of the
1148           consistent memory pool.  This pool of virtual memory
1149           is used to make consistent memory allocations.
1150
1151 config CONSISTENT_SIZE
1152         hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL
1153         default "0x00200000" if NOT_COHERENT_CACHE
1154
1155 config PIN_TLB
1156         bool "Pinned Kernel TLBs (860 ONLY)"
1157         depends on ADVANCED_OPTIONS && PPC_8xx && \
1158                    !DEBUG_PAGEALLOC && !STRICT_KERNEL_RWX
1159
1160 config PIN_TLB_DATA
1161         bool "Pinned TLB for DATA"
1162         depends on PIN_TLB
1163         default y
1164
1165 config PIN_TLB_IMMR
1166         bool "Pinned TLB for IMMR"
1167         depends on PIN_TLB || PPC_EARLY_DEBUG_CPM
1168         default y
1169
1170 config PIN_TLB_TEXT
1171         bool "Pinned TLB for TEXT"
1172         depends on PIN_TLB
1173         default y
1174 endmenu
1175
1176 if PPC64
1177 # This value must have zeroes in the bottom 60 bits otherwise lots will break
1178 config PAGE_OFFSET
1179         hex
1180         default "0xc000000000000000"
1181 config KERNEL_START
1182         hex
1183         default "0xc000000000000000"
1184 config PHYSICAL_START
1185         hex
1186         default "0x00000000"
1187 endif
1188
1189 config  ARCH_RANDOM
1190         def_bool n
1191
1192 config PPC_LIB_RHEAP
1193         bool
1194
1195 source "arch/powerpc/kvm/Kconfig"
1196
1197 source "kernel/livepatch/Kconfig"