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