Merge tag 'stable/for-linus-3.7-tag' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / arch / tile / Kconfig
1 # For a description of the syntax of this configuration file,
2 # see Documentation/kbuild/kconfig-language.txt.
3
4 config TILE
5         def_bool y
6         select HAVE_DMA_ATTRS
7         select HAVE_DMA_API_DEBUG
8         select HAVE_KVM if !TILEGX
9         select GENERIC_FIND_FIRST_BIT
10         select USE_GENERIC_SMP_HELPERS
11         select CC_OPTIMIZE_FOR_SIZE
12         select HAVE_GENERIC_HARDIRQS
13         select GENERIC_IRQ_PROBE
14         select GENERIC_PENDING_IRQ if SMP
15         select GENERIC_IRQ_SHOW
16         select HAVE_SYSCALL_WRAPPERS if TILEGX
17         select SYS_HYPERVISOR
18         select ARCH_HAVE_NMI_SAFE_CMPXCHG
19         select GENERIC_CLOCKEVENTS
20
21 # FIXME: investigate whether we need/want these options.
22 #       select HAVE_IOREMAP_PROT
23 #       select HAVE_OPTPROBES
24 #       select HAVE_REGS_AND_STACK_ACCESS_API
25 #       select HAVE_HW_BREAKPOINT
26 #       select PERF_EVENTS
27 #       select HAVE_USER_RETURN_NOTIFIER
28 #       config NO_BOOTMEM
29 #       config ARCH_SUPPORTS_DEBUG_PAGEALLOC
30 #       config HUGETLB_PAGE_SIZE_VARIABLE
31
32 config MMU
33         def_bool y
34
35 config GENERIC_CSUM
36         def_bool y
37
38 config SEMAPHORE_SLEEPERS
39         def_bool y
40
41 config HAVE_ARCH_ALLOC_REMAP
42         def_bool y
43
44 config HAVE_SETUP_PER_CPU_AREA
45         def_bool y
46
47 config NEED_PER_CPU_PAGE_FIRST_CHUNK
48         def_bool y
49
50 config SYS_SUPPORTS_HUGETLBFS
51         def_bool y
52
53 # Support for additional huge page sizes besides HPAGE_SIZE.
54 # The software support is currently only present in the TILE-Gx
55 # hypervisor. TILEPro in any case does not support page sizes
56 # larger than the default HPAGE_SIZE.
57 config HUGETLB_SUPER_PAGES
58         depends on HUGETLB_PAGE && TILEGX
59         def_bool y
60
61 # FIXME: tilegx can implement a more efficient rwsem.
62 config RWSEM_GENERIC_SPINLOCK
63         def_bool y
64
65 # We have a very flat architecture from a migration point of view,
66 # so save boot time by presetting this (particularly useful on tile-sim).
67 config DEFAULT_MIGRATION_COST
68         int
69         default "10000000"
70
71 # We only support gcc 4.4 and above, so this should work.
72 config ARCH_SUPPORTS_OPTIMIZED_INLINING
73         def_bool y
74
75 config ARCH_PHYS_ADDR_T_64BIT
76         def_bool y
77
78 config ARCH_DMA_ADDR_T_64BIT
79         def_bool y
80
81 config NEED_DMA_MAP_STATE
82         def_bool y
83
84 config ARCH_HAS_DMA_SET_COHERENT_MASK
85         bool
86
87 config LOCKDEP_SUPPORT
88         def_bool y
89
90 config STACKTRACE_SUPPORT
91         def_bool y
92         select STACKTRACE
93
94 # We use discontigmem for now; at some point we may want to switch
95 # to sparsemem (Tilera bug 7996).
96 config ARCH_DISCONTIGMEM_ENABLE
97         def_bool y
98
99 config ARCH_DISCONTIGMEM_DEFAULT
100         def_bool y
101
102 config TRACE_IRQFLAGS_SUPPORT
103         def_bool y
104
105 config STRICT_DEVMEM
106         def_bool y
107
108 # SMP is required for Tilera Linux.
109 config SMP
110         def_bool y
111
112 # Allow checking for compile-time determined overflow errors in
113 # copy_from_user().  There are still unprovable places in the
114 # generic code as of 2.6.34, so this option is not really compatible
115 # with -Werror, which is more useful in general.
116 config DEBUG_COPY_FROM_USER
117         def_bool n
118
119 config HVC_TILE
120         select HVC_DRIVER
121         def_bool y
122
123 config TILEGX
124         bool "Building with TILE-Gx (64-bit) compiler and toolchain"
125
126 config TILEPRO
127         def_bool !TILEGX
128
129 config 64BIT
130         def_bool TILEGX
131
132 config ARCH_DEFCONFIG
133         string
134         default "arch/tile/configs/tilepro_defconfig" if !TILEGX
135         default "arch/tile/configs/tilegx_defconfig" if TILEGX
136
137 source "init/Kconfig"
138
139 menu "Tilera-specific configuration"
140
141 config NR_CPUS
142         int "Maximum number of tiles (2-255)"
143         range 2 255
144         depends on SMP
145         default "64"
146         ---help---
147           Building with 64 is the recommended value, but a slightly
148           smaller kernel memory footprint results from using a smaller
149           value on chips with fewer tiles.
150
151 if TILEGX
152
153 choice
154         prompt "Kernel page size"
155         default PAGE_SIZE_64KB
156         help
157           This lets you select the page size of the kernel.  For best
158           performance on memory-intensive applications, a page size of 64KB
159           is recommended.  For workloads involving many small files, many
160           connections, etc., it may be better to select 16KB, which uses
161           memory more efficiently at some cost in TLB performance.
162
163           Note that this option is TILE-Gx specific; currently
164           TILEPro page size is set by rebuilding the hypervisor.
165
166 config PAGE_SIZE_16KB
167         bool "16KB"
168
169 config PAGE_SIZE_64KB
170         bool "64KB"
171
172 endchoice
173
174 endif
175
176 source "kernel/Kconfig.hz"
177
178 config KEXEC
179         bool "kexec system call"
180         ---help---
181           kexec is a system call that implements the ability to shutdown your
182           current kernel, and to start another kernel.  It is like a reboot
183           but it is independent of the system firmware.   It is used
184           to implement the "mboot" Tilera booter.
185
186           The name comes from the similarity to the exec system call.
187
188 config COMPAT
189         bool "Support 32-bit TILE-Gx binaries in addition to 64-bit"
190         depends on TILEGX
191         select COMPAT_BINFMT_ELF
192         default y
193         ---help---
194           If enabled, the kernel will support running TILE-Gx binaries
195           that were built with the -m32 option.
196
197 config SYSVIPC_COMPAT
198         def_bool y
199         depends on COMPAT && SYSVIPC
200
201 # We do not currently support disabling HIGHMEM on tile64 and tilepro.
202 config HIGHMEM
203         bool # "Support for more than 512 MB of RAM"
204         default !TILEGX
205         ---help---
206           Linux can use the full amount of RAM in the system by
207           default.  However, the address space of TILE processors is
208           only 4 Gigabytes large. That means that, if you have a large
209           amount of physical memory, not all of it can be "permanently
210           mapped" by the kernel. The physical memory that's not
211           permanently mapped is called "high memory".
212
213           If you are compiling a kernel which will never run on a
214           machine with more than 512 MB total physical RAM, answer
215           "false" here. This will result in the kernel mapping all of
216           physical memory into the top 1 GB of virtual memory space.
217
218           If unsure, say "true".
219
220 config ZONE_DMA
221         def_bool y
222
223 config IOMMU_HELPER
224         bool
225
226 config NEED_SG_DMA_LENGTH
227         bool
228
229 config SWIOTLB
230         bool
231         default TILEGX
232         select IOMMU_HELPER
233         select NEED_SG_DMA_LENGTH
234         select ARCH_HAS_DMA_SET_COHERENT_MASK
235
236 # We do not currently support disabling NUMA.
237 config NUMA
238         bool # "NUMA Memory Allocation and Scheduler Support"
239         depends on SMP && DISCONTIGMEM
240         default y
241         ---help---
242           NUMA memory allocation is required for TILE processors
243           unless booting with memory striping enabled in the
244           hypervisor, or with only a single memory controller.
245           It is recommended that this option always be enabled.
246
247 config NODES_SHIFT
248         int "Log base 2 of the max number of memory controllers"
249         default 2
250         depends on NEED_MULTIPLE_NODES
251         ---help---
252           By default, 2, i.e. 2^2 == 4 DDR2 controllers.
253           In a system with more controllers, this value should be raised.
254
255 choice
256         depends on !TILEGX
257         prompt "Memory split" if EXPERT
258         default VMSPLIT_3G
259         ---help---
260           Select the desired split between kernel and user memory.
261
262           If the address range available to the kernel is less than the
263           physical memory installed, the remaining memory will be available
264           as "high memory". Accessing high memory is a little more costly
265           than low memory, as it needs to be mapped into the kernel first.
266           Note that increasing the kernel address space limits the range
267           available to user programs, making the address space there
268           tighter.  Selecting anything other than the default 3G/1G split
269           will also likely make your kernel incompatible with binary-only
270           kernel modules.
271
272           If you are not absolutely sure what you are doing, leave this
273           option alone!
274
275         config VMSPLIT_3_75G
276                 bool "3.75G/0.25G user/kernel split (no kernel networking)"
277         config VMSPLIT_3_5G
278                 bool "3.5G/0.5G user/kernel split"
279         config VMSPLIT_3G
280                 bool "3G/1G user/kernel split"
281         config VMSPLIT_2_75G
282                 bool "2.75G/1.25G user/kernel split (for full 1G low memory)"
283         config VMSPLIT_2_5G
284                 bool "2.5G/1.5G user/kernel split"
285         config VMSPLIT_2_25G
286                 bool "2.25G/1.75G user/kernel split"
287         config VMSPLIT_2G
288                 bool "2G/2G user/kernel split"
289         config VMSPLIT_1G
290                 bool "1G/3G user/kernel split"
291 endchoice
292
293 config PAGE_OFFSET
294         hex
295         depends on !64BIT
296         default 0xF0000000 if VMSPLIT_3_75G
297         default 0xE0000000 if VMSPLIT_3_5G
298         default 0xB0000000 if VMSPLIT_2_75G
299         default 0xA0000000 if VMSPLIT_2_5G
300         default 0x90000000 if VMSPLIT_2_25G
301         default 0x80000000 if VMSPLIT_2G
302         default 0x40000000 if VMSPLIT_1G
303         default 0xC0000000
304
305 source "mm/Kconfig"
306
307 config CMDLINE_BOOL
308         bool "Built-in kernel command line"
309         default n
310         ---help---
311           Allow for specifying boot arguments to the kernel at
312           build time.  On some systems (e.g. embedded ones), it is
313           necessary or convenient to provide some or all of the
314           kernel boot arguments with the kernel itself (that is,
315           to not rely on the boot loader to provide them.)
316
317           To compile command line arguments into the kernel,
318           set this option to 'Y', then fill in the
319           the boot arguments in CONFIG_CMDLINE.
320
321           Systems with fully functional boot loaders (e.g. mboot, or
322           if booting over PCI) should leave this option set to 'N'.
323
324 config CMDLINE
325         string "Built-in kernel command string"
326         depends on CMDLINE_BOOL
327         default ""
328         ---help---
329           Enter arguments here that should be compiled into the kernel
330           image and used at boot time.  If the boot loader provides a
331           command line at boot time, it is appended to this string to
332           form the full kernel command line, when the system boots.
333
334           However, you can use the CONFIG_CMDLINE_OVERRIDE option to
335           change this behavior.
336
337           In most cases, the command line (whether built-in or provided
338           by the boot loader) should specify the device for the root
339           file system.
340
341 config CMDLINE_OVERRIDE
342         bool "Built-in command line overrides boot loader arguments"
343         default n
344         depends on CMDLINE_BOOL
345         ---help---
346           Set this option to 'Y' to have the kernel ignore the boot loader
347           command line, and use ONLY the built-in command line.
348
349           This is used to work around broken boot loaders.  This should
350           be set to 'N' under normal conditions.
351
352 config VMALLOC_RESERVE
353         hex
354         default 0x1000000
355
356 config HARDWALL
357         bool "Hardwall support to allow access to user dynamic network"
358         default y
359
360 config KERNEL_PL
361         int "Processor protection level for kernel"
362         range 1 2
363         default "1"
364         ---help---
365           This setting determines the processor protection level the
366           kernel will be built to run at.  Generally you should use
367           the default value here.
368
369 source "arch/tile/gxio/Kconfig"
370
371 endmenu  # Tilera-specific configuration
372
373 menu "Bus options"
374
375 config PCI
376         bool "PCI support"
377         default y
378         select PCI_DOMAINS
379         select GENERIC_PCI_IOMAP
380         select TILE_GXIO_TRIO if TILEGX
381         select ARCH_SUPPORTS_MSI if TILEGX
382         select PCI_MSI if TILEGX
383         ---help---
384           Enable PCI root complex support, so PCIe endpoint devices can
385           be attached to the Tile chip.  Many, but not all, PCI devices
386           are supported under Tilera's root complex driver.
387
388 config PCI_DOMAINS
389         bool
390
391 config NO_IOMEM
392         def_bool !PCI
393
394 config NO_IOPORT
395         def_bool !PCI
396
397 source "drivers/pci/Kconfig"
398
399 config TILE_USB
400         tristate "Tilera USB host adapter support"
401         default y
402         depends on USB
403         depends on TILEGX
404         select TILE_GXIO_USB_HOST
405         ---help---
406           Provides USB host adapter support for the built-in EHCI and OHCI
407           interfaces on TILE-Gx chips.
408
409 # USB OHCI needs the bounce pool since tilegx will often have more
410 # than 4GB of memory, but we don't currently use the IOTLB to present
411 # a 32-bit address to OHCI.  So we need to use a bounce pool instead.
412 config NEED_BOUNCE_POOL
413         def_bool USB_OHCI_HCD
414
415 source "drivers/pci/hotplug/Kconfig"
416
417 endmenu
418
419 menu "Executable file formats"
420
421 # only elf supported
422 config KCORE_ELF
423         def_bool y
424         depends on PROC_FS
425
426 source "fs/Kconfig.binfmt"
427
428 endmenu
429
430 source "net/Kconfig"
431
432 source "drivers/Kconfig"
433
434 source "fs/Kconfig"
435
436 source "arch/tile/Kconfig.debug"
437
438 source "security/Kconfig"
439
440 source "crypto/Kconfig"
441
442 source "lib/Kconfig"
443
444 source "arch/tile/kvm/Kconfig"