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