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