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