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