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