powerpc: convert to generic helpers for IPI function calls
[linux-2.6/btrfs-unstable.git] / arch / powerpc / Kconfig
blob852d40c29637ac199e5e539b843e60f9668b932d
1 # For a description of the syntax of this configuration file,
2 # see Documentation/kbuild/kconfig-language.txt.
5 mainmenu "Linux/PowerPC Kernel Configuration"
7 source "arch/powerpc/platforms/Kconfig.cputype"
9 config PPC32
10         bool
11         default y if !PPC64
13 config 64BIT
14         bool
15         default y if PPC64
17 config WORD_SIZE
18         int
19         default 64 if PPC64
20         default 32 if !PPC64
22 config PPC_MERGE
23         def_bool y
25 config MMU
26         bool
27         default y
29 config GENERIC_CMOS_UPDATE
30         def_bool y
32 config GENERIC_TIME
33         def_bool y
35 config GENERIC_TIME_VSYSCALL
36         def_bool y
38 config GENERIC_CLOCKEVENTS
39         def_bool y
41 config GENERIC_HARDIRQS
42         bool
43         default y
45 config HAVE_SETUP_PER_CPU_AREA
46         def_bool PPC64
48 config IRQ_PER_CPU
49         bool
50         default y
52 config STACKTRACE_SUPPORT
53         bool
54         default y
56 config TRACE_IRQFLAGS_SUPPORT
57         bool
58         depends on PPC64
59         default y
61 config LOCKDEP_SUPPORT
62         bool
63         default y
65 config RWSEM_GENERIC_SPINLOCK
66         bool
68 config RWSEM_XCHGADD_ALGORITHM
69         bool
70         default y
72 config GENERIC_LOCKBREAK
73         bool
74         default y
75         depends on SMP && PREEMPT
77 config ARCH_HAS_ILOG2_U32
78         bool
79         default y
81 config ARCH_HAS_ILOG2_U64
82         bool
83         default y if 64BIT
85 config GENERIC_HWEIGHT
86         bool
87         default y
89 config GENERIC_CALIBRATE_DELAY
90         bool
91         default y
93 config GENERIC_FIND_NEXT_BIT
94         bool
95         default y
97 config GENERIC_GPIO
98         bool
99         help
100           Generic GPIO API support
102 config ARCH_NO_VIRT_TO_BUS
103         def_bool PPC64
105 config PPC
106         bool
107         default y
108         select HAVE_IDE
109         select HAVE_OPROFILE
110         select HAVE_KPROBES
111         select HAVE_KRETPROBES
112         select HAVE_LMB
113         select USE_GENERIC_SMP_HELPERS if SMP
115 config EARLY_PRINTK
116         bool
117         default y
119 config COMPAT
120         bool
121         default y if PPC64
122         select COMPAT_BINFMT_ELF
124 config SYSVIPC_COMPAT
125         bool
126         depends on COMPAT && SYSVIPC
127         default y
129 # All PPC32s use generic nvram driver through ppc_md
130 config GENERIC_NVRAM
131         bool
132         default y if PPC32
134 config SCHED_NO_NO_OMIT_FRAME_POINTER
135         bool
136         default y
138 config ARCH_MAY_HAVE_PC_FDC
139         bool
140         default !PPC_PSERIES || PCI
142 config PPC_OF
143         def_bool y
145 config OF
146         def_bool y
148 config PPC_UDBG_16550
149         bool
150         default n
152 config GENERIC_TBSYNC
153         bool
154         default y if PPC32 && SMP
155         default n
157 config AUDIT_ARCH
158         bool
159         default y
161 config GENERIC_BUG
162         bool
163         default y
164         depends on BUG
166 config SYS_SUPPORTS_APM_EMULATION
167         default y if PMAC_APM_EMU
168         bool
170 config DEFAULT_UIMAGE
171         bool
172         help
173           Used to allow a board to specify it wants a uImage built by default
174         default n
176 config REDBOOT
177         bool
179 config HIBERNATE_32
180         bool
181         depends on (PPC_PMAC && !SMP) || BROKEN
182         default y
184 config HIBERNATE_64
185         bool
186         depends on BROKEN || (PPC_PMAC64 && EXPERIMENTAL)
187         default y
189 config ARCH_HIBERNATION_POSSIBLE
190         bool
191         depends on (PPC64 && HIBERNATE_64) || (PPC32 && HIBERNATE_32)
192         default y
194 config ARCH_SUSPEND_POSSIBLE
195         def_bool y
196         depends on ADB_PMU || PPC_EFIKA || PPC_LITE5200
198 config PPC_DCR_NATIVE
199         bool
200         default n
202 config PPC_DCR_MMIO
203         bool
204         default n
206 config PPC_DCR
207         bool
208         depends on PPC_DCR_NATIVE || PPC_DCR_MMIO
209         default y
211 config PPC_OF_PLATFORM_PCI
212         bool
213         depends on PCI
214         depends on PPC64 # not supported on 32 bits yet
215         default n
217 source "init/Kconfig"
219 source "arch/powerpc/sysdev/Kconfig"
220 source "arch/powerpc/platforms/Kconfig"
222 menu "Kernel options"
224 config HIGHMEM
225         bool "High memory support"
226         depends on PPC32
228 source kernel/time/Kconfig
229 source kernel/Kconfig.hz
230 source kernel/Kconfig.preempt
231 source "fs/Kconfig.binfmt"
233 config HUGETLB_PAGE_SIZE_VARIABLE
234         bool
235         depends on HUGETLB_PAGE
236         default y
238 config MATH_EMULATION
239         bool "Math emulation"
240         depends on 4xx || 8xx || E200 || PPC_MPC832x || E500
241         ---help---
242           Some PowerPC chips designed for embedded applications do not have
243           a floating-point unit and therefore do not implement the
244           floating-point instructions in the PowerPC instruction set.  If you
245           say Y here, the kernel will include code to emulate a floating-point
246           unit, which will allow programs that use floating-point
247           instructions to run.
249 config 8XX_MINIMAL_FPEMU
250         bool "Minimal math emulation for 8xx"
251         depends on 8xx && !MATH_EMULATION
252         help
253           Older arch/ppc kernels still emulated a few floating point
254           instructions such as load and store, even when full math
255           emulation is disabled.  Say "Y" here if you want to preserve
256           this behavior.
258           It is recommended that you build a soft-float userspace instead.
260 config IOMMU_VMERGE
261         bool "Enable IOMMU virtual merging"
262         depends on PPC64
263         default y
264         help
265           Cause IO segments sent to a device for DMA to be merged virtually
266           by the IOMMU when they happen to have been allocated contiguously.
267           This doesn't add pressure to the IOMMU allocator. However, some
268           drivers don't support getting large merged segments coming back
269           from *_map_sg().
271           Most drivers don't have this problem; it is safe to say Y here.
273 config IOMMU_HELPER
274         def_bool PPC64
276 config HOTPLUG_CPU
277         bool "Support for enabling/disabling CPUs"
278         depends on SMP && HOTPLUG && EXPERIMENTAL && (PPC_PSERIES || PPC_PMAC)
279         ---help---
280           Say Y here to be able to disable and re-enable individual
281           CPUs at runtime on SMP machines.
283           Say N if you are unsure.
285 config ARCH_ENABLE_MEMORY_HOTPLUG
286         def_bool y
288 config ARCH_HAS_WALK_MEMORY
289         def_bool y
291 config ARCH_ENABLE_MEMORY_HOTREMOVE
292         def_bool y
294 config KEXEC
295         bool "kexec system call (EXPERIMENTAL)"
296         depends on (PPC_PRPMC2800 || PPC_MULTIPLATFORM) && EXPERIMENTAL
297         help
298           kexec is a system call that implements the ability to shutdown your
299           current kernel, and to start another kernel.  It is like a reboot
300           but it is independent of the system firmware.   And like a reboot
301           you can start any kernel with it, not just Linux.
303           The name comes from the similarity to the exec system call.
305           It is an ongoing process to be certain the hardware in a machine
306           is properly shutdown, so do not be surprised if this code does not
307           initially work for you.  It may help to enable device hotplugging
308           support.  As of this writing the exact hardware interface is
309           strongly in flux, so no good recommendation can be made.
311 config CRASH_DUMP
312         bool "Build a kdump crash kernel (EXPERIMENTAL)"
313         depends on PPC_MULTIPLATFORM && PPC64 && EXPERIMENTAL
314         help
315           Build a kernel suitable for use as a kdump capture kernel.
316           The kernel will be linked at a different address than normal, and
317           so can only be used for Kdump.
319           Don't change this unless you know what you are doing.
321 config PHYP_DUMP
322         bool "Hypervisor-assisted dump (EXPERIMENTAL)"
323         depends on PPC_PSERIES && EXPERIMENTAL
324         help
325           Hypervisor-assisted dump is meant to be a kdump replacement
326           offering robustness and speed not possible without system
327           hypervisor assistence.
329           If unsure, say "N"
331 config PPCBUG_NVRAM
332         bool "Enable reading PPCBUG NVRAM during boot" if PPLUS || LOPEC
333         default y if PPC_PREP
335 config IRQ_ALL_CPUS
336         bool "Distribute interrupts on all CPUs by default"
337         depends on SMP && !MV64360
338         help
339           This option gives the kernel permission to distribute IRQs across
340           multiple CPUs.  Saying N here will route all IRQs to the first
341           CPU.  Generally saying Y is safe, although some problems have been
342           reported with SMP Power Macintoshes with this option enabled.
344 config NUMA
345         bool "NUMA support"
346         depends on PPC64
347         default y if SMP && PPC_PSERIES
349 config NODES_SHIFT
350         int
351         default "4"
352         depends on NEED_MULTIPLE_NODES
354 config ARCH_SELECT_MEMORY_MODEL
355         def_bool y
356         depends on PPC64
358 config ARCH_FLATMEM_ENABLE
359         def_bool y
360         depends on (PPC64 && !NUMA) || PPC32
362 config ARCH_SPARSEMEM_ENABLE
363         def_bool y
364         depends on PPC64
365         select SPARSEMEM_VMEMMAP_ENABLE
367 config ARCH_SPARSEMEM_DEFAULT
368         def_bool y
369         depends on (SMP && PPC_PSERIES) || PPC_PS3
371 config ARCH_POPULATES_NODE_MAP
372         def_bool y
374 source "mm/Kconfig"
376 config ARCH_MEMORY_PROBE
377         def_bool y
378         depends on MEMORY_HOTPLUG
380 # Some NUMA nodes have memory ranges that span
381 # other nodes.  Even though a pfn is valid and
382 # between a node's start and end pfns, it may not
383 # reside on that node.  See memmap_init_zone()
384 # for details.
385 config NODES_SPAN_OTHER_NODES
386         def_bool y
387         depends on NEED_MULTIPLE_NODES
389 config PPC_HAS_HASH_64K
390         bool
391         depends on PPC64
392         default n
394 config PPC_64K_PAGES
395         bool "64k page size"
396         depends on PPC64
397         select PPC_HAS_HASH_64K
398         help
399           This option changes the kernel logical page size to 64k. On machines
400           without processor support for 64k pages, the kernel will simulate
401           them by loading each individual 4k page on demand transparently,
402           while on hardware with such support, it will be used to map
403           normal application pages.
405 config FORCE_MAX_ZONEORDER
406         int "Maximum zone order"
407         default "9" if PPC_64K_PAGES
408         default "13" if PPC64 && !PPC_64K_PAGES
409         default "11"
410         help
411           The kernel memory allocator divides physically contiguous memory
412           blocks into "zones", where each zone is a power of two number of
413           pages.  This option selects the largest power of two that the kernel
414           keeps in the memory allocator.  If you need to allocate very large
415           blocks of physically contiguous memory, then you may need to
416           increase this value.
418           This config option is actually maximum order plus one. For example,
419           a value of 11 means that the largest free memory block is 2^10 pages.
421           The page size is not necessarily 4KB.  For example, on 64-bit
422           systems, 64KB pages can be enabled via CONFIG_PPC_64K_PAGES.  Keep
423           this in mind when choosing a value for this option.
425 config PPC_SUBPAGE_PROT
426         bool "Support setting protections for 4k subpages"
427         depends on PPC_64K_PAGES
428         help
429           This option adds support for a system call to allow user programs
430           to set access permissions (read/write, readonly, or no access)
431           on the 4k subpages of each 64k page.
433 config SCHED_SMT
434         bool "SMT (Hyperthreading) scheduler support"
435         depends on PPC64 && SMP
436         help
437           SMT scheduler support improves the CPU scheduler's decision making
438           when dealing with POWER5 cpus at a cost of slightly increased
439           overhead in some places. If unsure say N here.
441 config PROC_DEVICETREE
442         bool "Support for device tree in /proc"
443         depends on PROC_FS
444         help
445           This option adds a device-tree directory under /proc which contains
446           an image of the device tree that the kernel copies from Open
447           Firmware or other boot firmware. If unsure, say Y here.
449 config CMDLINE_BOOL
450         bool "Default bootloader kernel arguments"
452 config CMDLINE
453         string "Initial kernel command string"
454         depends on CMDLINE_BOOL
455         default "console=ttyS0,9600 console=tty0 root=/dev/sda2"
456         help
457           On some platforms, there is currently no way for the boot loader to
458           pass arguments to the kernel. For these platforms, you can supply
459           some command-line options at build time by entering them here.  In
460           most cases you will need to specify the root device here.
462 if !44x || BROKEN
463 config ARCH_WANTS_FREEZER_CONTROL
464         def_bool y
465         depends on ADB_PMU
467 source kernel/power/Kconfig
468 endif
470 config SECCOMP
471         bool "Enable seccomp to safely compute untrusted bytecode"
472         depends on PROC_FS
473         default y
474         help
475           This kernel feature is useful for number crunching applications
476           that may need to compute untrusted bytecode during their
477           execution. By using pipes or other transports made available to
478           the process as file descriptors supporting the read/write
479           syscalls, it's possible to isolate those applications in
480           their own address space using seccomp. Once seccomp is
481           enabled via /proc/<pid>/seccomp, it cannot be disabled
482           and the task is only allowed to execute a few safe syscalls
483           defined by each seccomp mode.
485           If unsure, say Y. Only embedded should say N here.
487 endmenu
489 config ISA_DMA_API
490         bool
491         default !PPC_ISERIES || PCI
493 menu "Bus options"
495 config ISA
496         bool "Support for ISA-bus hardware"
497         depends on PPC_PREP || PPC_CHRP
498         select PPC_I8259
499         help
500           Find out whether you have ISA slots on your motherboard.  ISA is the
501           name of a bus system, i.e. the way the CPU talks to the other stuff
502           inside your box.  If you have an Apple machine, say N here; if you
503           have an IBM RS/6000 or pSeries machine or a PReP machine, say Y.  If
504           you have an embedded board, consult your board documentation.
506 config ZONE_DMA
507         bool
508         default y
510 config GENERIC_ISA_DMA
511         bool
512         depends on PPC64 || POWER4 || 6xx && !CPM2
513         default y
515 config PPC_INDIRECT_PCI
516         bool
517         depends on PCI
518         default y if 40x || 44x
519         default n
521 config EISA
522         bool
524 config SBUS
525         bool
527 config FSL_SOC
528         bool
530 config FSL_PCI
531         bool
532         select PPC_INDIRECT_PCI
534 config 4xx_SOC
535         bool
537 config FSL_LBC
538         bool
539         help
540           Freescale Localbus support
542 # Yes MCA RS/6000s exist but Linux-PPC does not currently support any
543 config MCA
544         bool
546 config PCI
547         bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \
548                 || PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \
549                 || PPC_PS3 || 44x
550         default y if !40x && !CPM2 && !8xx && !PPC_MPC512x && !PPC_83xx \
551                 && !PPC_85xx && !PPC_86xx
552         default PCI_PERMEDIA if !4xx && !CPM2 && !8xx
553         default PCI_QSPAN if !4xx && !CPM2 && 8xx
554         select ARCH_SUPPORTS_MSI
555         help
556           Find out whether your system includes a PCI bus. PCI is the name of
557           a bus system, i.e. the way the CPU talks to the other stuff inside
558           your box.  If you say Y here, the kernel will include drivers and
559           infrastructure code to support PCI bus devices.
561 config PCI_DOMAINS
562         def_bool PCI
564 config PCI_SYSCALL
565         def_bool PCI
567 config PCI_QSPAN
568         bool "QSpan PCI"
569         depends on !4xx && !CPM2 && 8xx
570         select PPC_I8259
571         help
572           Say Y here if you have a system based on a Motorola 8xx-series
573           embedded processor with a QSPAN PCI interface, otherwise say N.
575 config PCI_8260
576         bool
577         depends on PCI && 8260
578         select PPC_INDIRECT_PCI
579         default y
581 config 8260_PCI9
582         bool "Enable workaround for MPC826x erratum PCI 9"
583         depends on PCI_8260 && !8272
584         default y
586 choice
587         prompt "IDMA channel for PCI 9 workaround"
588         depends on 8260_PCI9
590 config 8260_PCI9_IDMA1
591         bool "IDMA1"
593 config 8260_PCI9_IDMA2
594         bool "IDMA2"
596 config 8260_PCI9_IDMA3
597         bool "IDMA3"
599 config 8260_PCI9_IDMA4
600         bool "IDMA4"
602 endchoice
604 source "drivers/pci/pcie/Kconfig"
606 source "drivers/pci/Kconfig"
608 source "drivers/pcmcia/Kconfig"
610 source "drivers/pci/hotplug/Kconfig"
612 config HAS_RAPIDIO
613         bool
614         default n
616 config RAPIDIO
617         bool "RapidIO support"
618         depends on HAS_RAPIDIO
619         help
620           If you say Y here, the kernel will include drivers and
621           infrastructure code to support RapidIO interconnect devices.
623 source "drivers/rapidio/Kconfig"
625 endmenu
627 menu "Advanced setup"
628         depends on PPC32
630 config ADVANCED_OPTIONS
631         bool "Prompt for advanced kernel configuration options"
632         help
633           This option will enable prompting for a variety of advanced kernel
634           configuration options.  These options can cause the kernel to not
635           work if they are set incorrectly, but can be used to optimize certain
636           aspects of kernel memory management.
638           Unless you know what you are doing, say N here.
640 comment "Default settings for advanced configuration options are used"
641         depends on !ADVANCED_OPTIONS
643 config LOWMEM_SIZE_BOOL
644         bool "Set maximum low memory"
645         depends on ADVANCED_OPTIONS
646         help
647           This option allows you to set the maximum amount of memory which
648           will be used as "low memory", that is, memory which the kernel can
649           access directly, without having to set up a kernel virtual mapping.
650           This can be useful in optimizing the layout of kernel virtual
651           memory.
653           Say N here unless you know what you are doing.
655 config LOWMEM_SIZE
656         hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
657         default "0x30000000"
659 config RELOCATABLE
660         bool "Build a relocatable kernel (EXPERIMENTAL)"
661         depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE
662         help
663           This builds a kernel image that is capable of running at the
664           location the kernel is loaded at (some alignment restrictions may
665           exist).
667           One use is for the kexec on panic case where the recovery kernel
668           must live at a different physical address than the primary
669           kernel.
671           Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
672           it has been loaded at and the compile time physical addresses
673           CONFIG_PHYSICAL_START is ignored.  However CONFIG_PHYSICAL_START
674           setting can still be useful to bootwrappers that need to know the
675           load location of the kernel (eg. u-boot/mkimage).
677 config PAGE_OFFSET_BOOL
678         bool "Set custom page offset address"
679         depends on ADVANCED_OPTIONS
680         help
681           This option allows you to set the kernel virtual address at which
682           the kernel will map low memory.  This can be useful in optimizing
683           the virtual memory layout of the system.
685           Say N here unless you know what you are doing.
687 config PAGE_OFFSET
688         hex "Virtual address of memory base" if PAGE_OFFSET_BOOL
689         default "0xc0000000"
691 config KERNEL_START_BOOL
692         bool "Set custom kernel base address"
693         depends on ADVANCED_OPTIONS
694         help
695           This option allows you to set the kernel virtual address at which
696           the kernel will be loaded.  Normally this should match PAGE_OFFSET
697           however there are times (like kdump) that one might not want them
698           to be the same.
700           Say N here unless you know what you are doing.
702 config KERNEL_START
703         hex "Virtual address of kernel base" if KERNEL_START_BOOL
704         default PAGE_OFFSET if PAGE_OFFSET_BOOL
705         default "0xc2000000" if CRASH_DUMP
706         default "0xc0000000"
708 config PHYSICAL_START_BOOL
709         bool "Set physical address where the kernel is loaded"
710         depends on ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE
711         help
712           This gives the physical address where the kernel is loaded.
714           Say N here unless you know what you are doing.
716 config PHYSICAL_START
717         hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
718         default "0x02000000" if PPC_STD_MMU && CRASH_DUMP
719         default "0x00000000"
721 config PHYSICAL_ALIGN
722         hex
723         default "0x10000000" if FSL_BOOKE
724         help
725           This value puts the alignment restrictions on physical address
726           where kernel is loaded and run from. Kernel is compiled for an
727           address which meets above alignment restriction.
729 config TASK_SIZE_BOOL
730         bool "Set custom user task size"
731         depends on ADVANCED_OPTIONS
732         help
733           This option allows you to set the amount of virtual address space
734           allocated to user tasks.  This can be useful in optimizing the
735           virtual memory layout of the system.
737           Say N here unless you know what you are doing.
739 config TASK_SIZE
740         hex "Size of user task space" if TASK_SIZE_BOOL
741         default "0x80000000" if PPC_PREP || PPC_8xx
742         default "0xc0000000"
744 config CONSISTENT_START_BOOL
745         bool "Set custom consistent memory pool address"
746         depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
747         help
748           This option allows you to set the base virtual address
749           of the consistent memory pool.  This pool of virtual
750           memory is used to make consistent memory allocations.
752 config CONSISTENT_START
753         hex "Base virtual address of consistent memory pool" if CONSISTENT_START_BOOL
754         default "0xfd000000" if (NOT_COHERENT_CACHE && 8xx)
755         default "0xff100000" if NOT_COHERENT_CACHE
757 config CONSISTENT_SIZE_BOOL
758         bool "Set custom consistent memory pool size"
759         depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
760         help
761           This option allows you to set the size of the
762           consistent memory pool.  This pool of virtual memory
763           is used to make consistent memory allocations.
765 config CONSISTENT_SIZE
766         hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL
767         default "0x00200000" if NOT_COHERENT_CACHE
769 config PIN_TLB
770         bool "Pinned Kernel TLBs (860 ONLY)"
771         depends on ADVANCED_OPTIONS && 8xx
772 endmenu
774 if PPC64
775 config PAGE_OFFSET
776         hex
777         default "0xc000000000000000"
778 config KERNEL_START
779         hex
780         default "0xc000000002000000" if CRASH_DUMP
781         default "0xc000000000000000"
782 config PHYSICAL_START
783         hex
784         default "0x02000000" if CRASH_DUMP
785         default "0x00000000"
786 endif
788 source "net/Kconfig"
790 source "drivers/Kconfig"
792 source "fs/Kconfig"
794 # XXX source "arch/ppc/8xx_io/Kconfig"
796 # XXX source "arch/ppc/8260_io/Kconfig"
798 source "arch/powerpc/sysdev/qe_lib/Kconfig"
800 source "lib/Kconfig"
802 source "arch/powerpc/Kconfig.debug"
804 source "security/Kconfig"
806 config KEYS_COMPAT
807         bool
808         depends on COMPAT && KEYS
809         default y
811 source "crypto/Kconfig"
813 config PPC_CLOCK
814         bool
815         default n
817 config PPC_LIB_RHEAP
818         bool
820 source "arch/powerpc/kvm/Kconfig"