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