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