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