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