xref: /linux/arch/powerpc/Kconfig (revision 643d1f7fe3aa12c8bdea6fa5b4ba874ff6dd601d)
1# For a description of the syntax of this configuration file,
2# see Documentation/kbuild/kconfig-language.txt.
3#
4
5mainmenu "Linux/PowerPC Kernel Configuration"
6
7source "arch/powerpc/platforms/Kconfig.cputype"
8
9config PPC32
10	bool
11	default y if !PPC64
12
13config 64BIT
14	bool
15	default y if PPC64
16
17config WORD_SIZE
18	int
19	default 64 if PPC64
20	default 32 if !PPC64
21
22config PPC_MERGE
23	def_bool y
24
25config MMU
26	bool
27	default y
28
29config GENERIC_CMOS_UPDATE
30	def_bool y
31
32config GENERIC_TIME
33	def_bool y
34
35config GENERIC_TIME_VSYSCALL
36	def_bool y
37
38config GENERIC_CLOCKEVENTS
39	def_bool y
40
41config GENERIC_HARDIRQS
42	bool
43	default y
44
45config HAVE_SETUP_PER_CPU_AREA
46	def_bool PPC64
47
48config IRQ_PER_CPU
49	bool
50	default y
51
52config RWSEM_GENERIC_SPINLOCK
53	bool
54
55config RWSEM_XCHGADD_ALGORITHM
56	bool
57	default y
58
59config GENERIC_LOCKBREAK
60	bool
61	default y
62	depends on SMP && PREEMPT
63
64config ARCH_HAS_ILOG2_U32
65	bool
66	default y
67
68config ARCH_HAS_ILOG2_U64
69	bool
70	default y if 64BIT
71
72config GENERIC_HWEIGHT
73	bool
74	default y
75
76config GENERIC_CALIBRATE_DELAY
77	bool
78	default y
79
80config GENERIC_FIND_NEXT_BIT
81	bool
82	default y
83
84config ARCH_NO_VIRT_TO_BUS
85	def_bool PPC64
86
87config PPC
88	bool
89	default y
90
91config EARLY_PRINTK
92	bool
93	default y
94
95config COMPAT
96	bool
97	default y if PPC64
98
99config SYSVIPC_COMPAT
100	bool
101	depends on COMPAT && SYSVIPC
102	default y
103
104# All PPC32s use generic nvram driver through ppc_md
105config GENERIC_NVRAM
106	bool
107	default y if PPC32
108
109config SCHED_NO_NO_OMIT_FRAME_POINTER
110	bool
111	default y
112
113config ARCH_MAY_HAVE_PC_FDC
114	bool
115	default !PPC_PSERIES || PCI
116
117config PPC_OF
118	def_bool y
119
120config OF
121	def_bool y
122
123config PPC_UDBG_16550
124	bool
125	default n
126
127config GENERIC_TBSYNC
128	bool
129	default y if PPC32 && SMP
130	default n
131
132config AUDIT_ARCH
133	bool
134	default y
135
136config GENERIC_BUG
137	bool
138	default y
139	depends on BUG
140
141config SYS_SUPPORTS_APM_EMULATION
142	default y if PMAC_APM_EMU
143	bool
144
145config DEFAULT_UIMAGE
146	bool
147	help
148	  Used to allow a board to specify it wants a uImage built by default
149	default n
150
151config REDBOOT
152	bool
153
154config HIBERNATE_32
155	bool
156	depends on (PPC_PMAC && !SMP) || BROKEN
157	default y
158
159config HIBERNATE_64
160	bool
161	depends on BROKEN || (PPC_PMAC64 && EXPERIMENTAL)
162	default y
163
164config ARCH_HIBERNATION_POSSIBLE
165	bool
166	depends on (PPC64 && HIBERNATE_64) || (PPC32 && HIBERNATE_32)
167	default y
168
169config ARCH_SUSPEND_POSSIBLE
170	def_bool y
171	depends on ADB_PMU || PPC_EFIKA || PPC_LITE5200
172
173config PPC_DCR_NATIVE
174	bool
175	default n
176
177config PPC_DCR_MMIO
178	bool
179	default n
180
181config PPC_DCR
182	bool
183	depends on PPC_DCR_NATIVE || PPC_DCR_MMIO
184	default y
185
186config PPC_OF_PLATFORM_PCI
187	bool
188	depends on PCI
189	depends on PPC64 # not supported on 32 bits yet
190	default n
191
192source "init/Kconfig"
193
194source "arch/powerpc/sysdev/Kconfig"
195source "arch/powerpc/platforms/Kconfig"
196
197menu "Kernel options"
198
199config HIGHMEM
200	bool "High memory support"
201	depends on PPC32
202
203source kernel/time/Kconfig
204source kernel/Kconfig.hz
205source kernel/Kconfig.preempt
206source "fs/Kconfig.binfmt"
207
208# We optimistically allocate largepages from the VM, so make the limit
209# large enough (16MB). This badly named config option is actually
210# max order + 1
211config FORCE_MAX_ZONEORDER
212	int
213	depends on PPC64
214	default "9" if PPC_64K_PAGES
215	default "13"
216
217config HUGETLB_PAGE_SIZE_VARIABLE
218	bool
219	depends on HUGETLB_PAGE
220	default y
221
222config MATH_EMULATION
223	bool "Math emulation"
224	depends on 4xx || 8xx || E200 || PPC_MPC832x || E500
225	---help---
226	  Some PowerPC chips designed for embedded applications do not have
227	  a floating-point unit and therefore do not implement the
228	  floating-point instructions in the PowerPC instruction set.  If you
229	  say Y here, the kernel will include code to emulate a floating-point
230	  unit, which will allow programs that use floating-point
231	  instructions to run.
232
233config 8XX_MINIMAL_FPEMU
234	bool "Minimal math emulation for 8xx"
235	depends on 8xx && !MATH_EMULATION
236	help
237	  Older arch/ppc kernels still emulated a few floating point
238	  instructions such as load and store, even when full math
239	  emulation is disabled.  Say "Y" here if you want to preserve
240	  this behavior.
241
242	  It is recommended that you build a soft-float userspace instead.
243
244config IOMMU_VMERGE
245	bool "Enable IOMMU virtual merging"
246	depends on PPC64
247	default y
248	help
249	  Cause IO segments sent to a device for DMA to be merged virtually
250	  by the IOMMU when they happen to have been allocated contiguously.
251	  This doesn't add pressure to the IOMMU allocator. However, some
252	  drivers don't support getting large merged segments coming back
253	  from *_map_sg().
254
255	  Most drivers don't have this problem; it is safe to say Y here.
256
257config HOTPLUG_CPU
258	bool "Support for enabling/disabling CPUs"
259	depends on SMP && HOTPLUG && EXPERIMENTAL && (PPC_PSERIES || PPC_PMAC)
260	---help---
261	  Say Y here to be able to disable and re-enable individual
262	  CPUs at runtime on SMP machines.
263
264	  Say N if you are unsure.
265
266config ARCH_ENABLE_MEMORY_HOTPLUG
267	def_bool y
268
269config KEXEC
270	bool "kexec system call (EXPERIMENTAL)"
271	depends on (PPC_PRPMC2800 || PPC_MULTIPLATFORM) && EXPERIMENTAL
272	help
273	  kexec is a system call that implements the ability to shutdown your
274	  current kernel, and to start another kernel.  It is like a reboot
275	  but it is independent of the system firmware.   And like a reboot
276	  you can start any kernel with it, not just Linux.
277
278	  The name comes from the similarity to the exec system call.
279
280	  It is an ongoing process to be certain the hardware in a machine
281	  is properly shutdown, so do not be surprised if this code does not
282	  initially work for you.  It may help to enable device hotplugging
283	  support.  As of this writing the exact hardware interface is
284	  strongly in flux, so no good recommendation can be made.
285
286config CRASH_DUMP
287	bool "Build a kdump crash kernel (EXPERIMENTAL)"
288	depends on PPC_MULTIPLATFORM && PPC64 && EXPERIMENTAL
289	help
290	  Build a kernel suitable for use as a kdump capture kernel.
291	  The kernel will be linked at a different address than normal, and
292	  so can only be used for Kdump.
293
294	  Don't change this unless you know what you are doing.
295
296config PPCBUG_NVRAM
297	bool "Enable reading PPCBUG NVRAM during boot" if PPLUS || LOPEC
298	default y if PPC_PREP
299
300config IRQ_ALL_CPUS
301	bool "Distribute interrupts on all CPUs by default"
302	depends on SMP && !MV64360
303	help
304	  This option gives the kernel permission to distribute IRQs across
305	  multiple CPUs.  Saying N here will route all IRQs to the first
306	  CPU.  Generally saying Y is safe, although some problems have been
307	  reported with SMP Power Macintoshes with this option enabled.
308
309config NUMA
310	bool "NUMA support"
311	depends on PPC64
312	default y if SMP && PPC_PSERIES
313
314config NODES_SHIFT
315	int
316	default "4"
317	depends on NEED_MULTIPLE_NODES
318
319config ARCH_SELECT_MEMORY_MODEL
320	def_bool y
321	depends on PPC64
322
323config ARCH_FLATMEM_ENABLE
324	def_bool y
325	depends on (PPC64 && !NUMA) || PPC32
326
327config ARCH_SPARSEMEM_ENABLE
328	def_bool y
329	depends on PPC64
330	select SPARSEMEM_VMEMMAP_ENABLE
331
332config ARCH_SPARSEMEM_DEFAULT
333	def_bool y
334	depends on (SMP && PPC_PSERIES) || PPC_PS3
335
336config ARCH_POPULATES_NODE_MAP
337	def_bool y
338
339source "mm/Kconfig"
340
341config ARCH_MEMORY_PROBE
342	def_bool y
343	depends on MEMORY_HOTPLUG
344
345# Some NUMA nodes have memory ranges that span
346# other nodes.  Even though a pfn is valid and
347# between a node's start and end pfns, it may not
348# reside on that node.  See memmap_init_zone()
349# for details.
350config NODES_SPAN_OTHER_NODES
351	def_bool y
352	depends on NEED_MULTIPLE_NODES
353
354config PPC_HAS_HASH_64K
355	bool
356	depends on PPC64
357	default n
358
359config PPC_64K_PAGES
360	bool "64k page size"
361	depends on PPC64
362	select PPC_HAS_HASH_64K
363	help
364	  This option changes the kernel logical page size to 64k. On machines
365	  without processor support for 64k pages, the kernel will simulate
366	  them by loading each individual 4k page on demand transparently,
367	  while on hardware with such support, it will be used to map
368	  normal application pages.
369
370config PPC_SUBPAGE_PROT
371	bool "Support setting protections for 4k subpages"
372	depends on PPC_64K_PAGES
373	help
374	  This option adds support for a system call to allow user programs
375	  to set access permissions (read/write, readonly, or no access)
376	  on the 4k subpages of each 64k page.
377
378config SCHED_SMT
379	bool "SMT (Hyperthreading) scheduler support"
380	depends on PPC64 && SMP
381	help
382	  SMT scheduler support improves the CPU scheduler's decision making
383	  when dealing with POWER5 cpus at a cost of slightly increased
384	  overhead in some places. If unsure say N here.
385
386config PROC_DEVICETREE
387	bool "Support for device tree in /proc"
388	depends on PROC_FS
389	help
390	  This option adds a device-tree directory under /proc which contains
391	  an image of the device tree that the kernel copies from Open
392	  Firmware or other boot firmware. If unsure, say Y here.
393
394config CMDLINE_BOOL
395	bool "Default bootloader kernel arguments"
396
397config CMDLINE
398	string "Initial kernel command string"
399	depends on CMDLINE_BOOL
400	default "console=ttyS0,9600 console=tty0 root=/dev/sda2"
401	help
402	  On some platforms, there is currently no way for the boot loader to
403	  pass arguments to the kernel. For these platforms, you can supply
404	  some command-line options at build time by entering them here.  In
405	  most cases you will need to specify the root device here.
406
407if !44x || BROKEN
408config ARCH_WANTS_FREEZER_CONTROL
409	def_bool y
410	depends on ADB_PMU
411
412source kernel/power/Kconfig
413endif
414
415config SECCOMP
416	bool "Enable seccomp to safely compute untrusted bytecode"
417	depends on PROC_FS
418	default y
419	help
420	  This kernel feature is useful for number crunching applications
421	  that may need to compute untrusted bytecode during their
422	  execution. By using pipes or other transports made available to
423	  the process as file descriptors supporting the read/write
424	  syscalls, it's possible to isolate those applications in
425	  their own address space using seccomp. Once seccomp is
426	  enabled via /proc/<pid>/seccomp, it cannot be disabled
427	  and the task is only allowed to execute a few safe syscalls
428	  defined by each seccomp mode.
429
430	  If unsure, say Y. Only embedded should say N here.
431
432config WANT_DEVICE_TREE
433	bool
434	default n
435
436config DEVICE_TREE
437	string "Static device tree source file"
438	depends on WANT_DEVICE_TREE
439	help
440	  This specifies the device tree source (.dts) file to be
441	  compiled and included when building the bootwrapper.  If a
442	  relative filename is given, then it will be relative to
443	  arch/powerpc/boot/dts.  If you are not using the bootwrapper,
444	  or do not need to build a dts into the bootwrapper, this
445	  field is ignored.
446
447	  For example, this is required when building a cuImage target
448	  for an older U-Boot, which cannot pass a device tree itself.
449	  Such a kernel will not work with a newer U-Boot that tries to
450	  pass a device tree (unless you tell it not to).  If your U-Boot
451	  does not mention a device tree in "help bootm", then use the
452	  cuImage target and specify a device tree here.  Otherwise, use
453	  the uImage target and leave this field blank.
454
455endmenu
456
457config ISA_DMA_API
458	bool
459	default !PPC_ISERIES || PCI
460
461menu "Bus options"
462
463config ISA
464	bool "Support for ISA-bus hardware"
465	depends on PPC_PREP || PPC_CHRP
466	select PPC_I8259
467	help
468	  Find out whether you have ISA slots on your motherboard.  ISA is the
469	  name of a bus system, i.e. the way the CPU talks to the other stuff
470	  inside your box.  If you have an Apple machine, say N here; if you
471	  have an IBM RS/6000 or pSeries machine or a PReP machine, say Y.  If
472	  you have an embedded board, consult your board documentation.
473
474config ZONE_DMA
475	bool
476	default y
477
478config GENERIC_ISA_DMA
479	bool
480	depends on PPC64 || POWER4 || 6xx && !CPM2
481	default y
482
483config PPC_INDIRECT_PCI
484	bool
485	depends on PCI
486	default y if 40x || 44x
487	default n
488
489config EISA
490	bool
491
492config SBUS
493	bool
494
495config FSL_SOC
496	bool
497
498config FSL_PCI
499 	bool
500	select PPC_INDIRECT_PCI
501
502# Yes MCA RS/6000s exist but Linux-PPC does not currently support any
503config MCA
504	bool
505
506config PCI
507	bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \
508		|| PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \
509		|| PPC_PS3 || 44x
510	default y if !40x && !CPM2 && !8xx && !PPC_83xx \
511		&& !PPC_85xx && !PPC_86xx
512	default PCI_PERMEDIA if !4xx && !CPM2 && !8xx
513	default PCI_QSPAN if !4xx && !CPM2 && 8xx
514	select ARCH_SUPPORTS_MSI
515	help
516	  Find out whether your system includes a PCI bus. PCI is the name of
517	  a bus system, i.e. the way the CPU talks to the other stuff inside
518	  your box.  If you say Y here, the kernel will include drivers and
519	  infrastructure code to support PCI bus devices.
520
521config PCI_DOMAINS
522	def_bool PCI
523
524config PCI_SYSCALL
525	def_bool PCI
526
527config PCI_QSPAN
528	bool "QSpan PCI"
529	depends on !4xx && !CPM2 && 8xx
530	select PPC_I8259
531	help
532	  Say Y here if you have a system based on a Motorola 8xx-series
533	  embedded processor with a QSPAN PCI interface, otherwise say N.
534
535config PCI_8260
536	bool
537	depends on PCI && 8260
538	select PPC_INDIRECT_PCI
539	default y
540
541config 8260_PCI9
542	bool "Enable workaround for MPC826x erratum PCI 9"
543	depends on PCI_8260 && !8272
544	default y
545
546choice
547	prompt "IDMA channel for PCI 9 workaround"
548	depends on 8260_PCI9
549
550config 8260_PCI9_IDMA1
551	bool "IDMA1"
552
553config 8260_PCI9_IDMA2
554	bool "IDMA2"
555
556config 8260_PCI9_IDMA3
557	bool "IDMA3"
558
559config 8260_PCI9_IDMA4
560	bool "IDMA4"
561
562endchoice
563
564source "drivers/pci/pcie/Kconfig"
565
566source "drivers/pci/Kconfig"
567
568source "drivers/pcmcia/Kconfig"
569
570source "drivers/pci/hotplug/Kconfig"
571
572endmenu
573
574menu "Advanced setup"
575	depends on PPC32
576
577config ADVANCED_OPTIONS
578	bool "Prompt for advanced kernel configuration options"
579	help
580	  This option will enable prompting for a variety of advanced kernel
581	  configuration options.  These options can cause the kernel to not
582	  work if they are set incorrectly, but can be used to optimize certain
583	  aspects of kernel memory management.
584
585	  Unless you know what you are doing, say N here.
586
587comment "Default settings for advanced configuration options are used"
588	depends on !ADVANCED_OPTIONS
589
590config HIGHMEM_START_BOOL
591	bool "Set high memory pool address"
592	depends on ADVANCED_OPTIONS && HIGHMEM
593	help
594	  This option allows you to set the base address of the kernel virtual
595	  area used to map high memory pages.  This can be useful in
596	  optimizing the layout of kernel virtual memory.
597
598	  Say N here unless you know what you are doing.
599
600config HIGHMEM_START
601	hex "Virtual start address of high memory pool" if HIGHMEM_START_BOOL
602	default "0xfe000000"
603
604config LOWMEM_SIZE_BOOL
605	bool "Set maximum low memory"
606	depends on ADVANCED_OPTIONS
607	help
608	  This option allows you to set the maximum amount of memory which
609	  will be used as "low memory", that is, memory which the kernel can
610	  access directly, without having to set up a kernel virtual mapping.
611	  This can be useful in optimizing the layout of kernel virtual
612	  memory.
613
614	  Say N here unless you know what you are doing.
615
616config LOWMEM_SIZE
617	hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
618	default "0x30000000"
619
620config KERNEL_START_BOOL
621	bool "Set custom kernel base address"
622	depends on ADVANCED_OPTIONS
623	help
624	  This option allows you to set the kernel virtual address at which
625	  the kernel will map low memory (the kernel image will be linked at
626	  this address).  This can be useful in optimizing the virtual memory
627	  layout of the system.
628
629	  Say N here unless you know what you are doing.
630
631config KERNEL_START
632	hex "Virtual address of kernel base" if KERNEL_START_BOOL
633	default "0xc0000000"
634
635config TASK_SIZE_BOOL
636	bool "Set custom user task size"
637	depends on ADVANCED_OPTIONS
638	help
639	  This option allows you to set the amount of virtual address space
640	  allocated to user tasks.  This can be useful in optimizing the
641	  virtual memory layout of the system.
642
643	  Say N here unless you know what you are doing.
644
645config TASK_SIZE
646	hex "Size of user task space" if TASK_SIZE_BOOL
647	default "0x80000000" if PPC_PREP || PPC_8xx
648	default "0xc0000000"
649
650config CONSISTENT_START_BOOL
651	bool "Set custom consistent memory pool address"
652	depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
653	help
654	  This option allows you to set the base virtual address
655	  of the consistent memory pool.  This pool of virtual
656	  memory is used to make consistent memory allocations.
657
658config CONSISTENT_START
659	hex "Base virtual address of consistent memory pool" if CONSISTENT_START_BOOL
660	default "0xfd000000" if (NOT_COHERENT_CACHE && 8xx)
661	default "0xff100000" if NOT_COHERENT_CACHE
662
663config CONSISTENT_SIZE_BOOL
664	bool "Set custom consistent memory pool size"
665	depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
666	help
667	  This option allows you to set the size of the
668	  consistent memory pool.  This pool of virtual memory
669	  is used to make consistent memory allocations.
670
671config CONSISTENT_SIZE
672	hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL
673	default "0x00200000" if NOT_COHERENT_CACHE
674
675config BOOT_LOAD_BOOL
676	bool "Set the boot link/load address"
677	depends on ADVANCED_OPTIONS && !PPC_MULTIPLATFORM
678	help
679	  This option allows you to set the initial load address of the zImage
680	  or zImage.initrd file.  This can be useful if you are on a board
681	  which has a small amount of memory.
682
683	  Say N here unless you know what you are doing.
684
685config BOOT_LOAD
686	hex "Link/load address for booting" if BOOT_LOAD_BOOL
687	default "0x00400000" if 40x || 8xx || 8260
688	default "0x01000000" if 44x
689	default "0x00800000"
690
691config PIN_TLB
692	bool "Pinned Kernel TLBs (860 ONLY)"
693	depends on ADVANCED_OPTIONS && 8xx
694endmenu
695
696if PPC64
697config KERNEL_START
698	hex
699	default "0xc000000000000000"
700endif
701
702source "net/Kconfig"
703
704source "drivers/Kconfig"
705
706source "fs/Kconfig"
707
708# XXX source "arch/ppc/8xx_io/Kconfig"
709
710# XXX source "arch/ppc/8260_io/Kconfig"
711
712source "arch/powerpc/sysdev/qe_lib/Kconfig"
713
714source "lib/Kconfig"
715
716source "kernel/Kconfig.instrumentation"
717
718source "arch/powerpc/Kconfig.debug"
719
720source "security/Kconfig"
721
722config KEYS_COMPAT
723	bool
724	depends on COMPAT && KEYS
725	default y
726
727source "crypto/Kconfig"
728
729config PPC_CLOCK
730	bool
731	default n
732
733config PPC_LIB_RHEAP
734	bool
735
736