1# SPDX-License-Identifier: GPL-2.0 2config LOONGARCH 3 bool 4 default y 5 select ACPI 6 select ACPI_GENERIC_GSI if ACPI 7 select ACPI_MCFG if ACPI 8 select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI 9 select ARCH_BINFMT_ELF_STATE 10 select ARCH_ENABLE_MEMORY_HOTPLUG 11 select ARCH_ENABLE_MEMORY_HOTREMOVE 12 select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI 13 select ARCH_HAS_PTE_SPECIAL 14 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 15 select ARCH_INLINE_READ_LOCK if !PREEMPTION 16 select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION 17 select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION 18 select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION 19 select ARCH_INLINE_READ_UNLOCK if !PREEMPTION 20 select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION 21 select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION 22 select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION 23 select ARCH_INLINE_WRITE_LOCK if !PREEMPTION 24 select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION 25 select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION 26 select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION 27 select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION 28 select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION 29 select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION 30 select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION 31 select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION 32 select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION 33 select ARCH_INLINE_SPIN_LOCK if !PREEMPTION 34 select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION 35 select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION 36 select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION 37 select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION 38 select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION 39 select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION 40 select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION 41 select ARCH_KEEP_MEMBLOCK 42 select ARCH_MIGHT_HAVE_PC_PARPORT 43 select ARCH_MIGHT_HAVE_PC_SERIO 44 select ARCH_SPARSEMEM_ENABLE 45 select ARCH_STACKWALK 46 select ARCH_SUPPORTS_ACPI 47 select ARCH_SUPPORTS_ATOMIC_RMW 48 select ARCH_SUPPORTS_HUGETLBFS 49 select ARCH_SUPPORTS_NUMA_BALANCING 50 select ARCH_USE_BUILTIN_BSWAP 51 select ARCH_USE_CMPXCHG_LOCKREF 52 select ARCH_USE_QUEUED_RWLOCKS 53 select ARCH_USE_QUEUED_SPINLOCKS 54 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT 55 select ARCH_WANT_LD_ORPHAN_WARN 56 select ARCH_WANTS_NO_INSTR 57 select BUILDTIME_TABLE_SORT 58 select COMMON_CLK 59 select EFI 60 select GENERIC_CLOCKEVENTS 61 select GENERIC_CMOS_UPDATE 62 select GENERIC_CPU_AUTOPROBE 63 select GENERIC_ENTRY 64 select GENERIC_GETTIMEOFDAY 65 select GENERIC_IOREMAP if !ARCH_IOREMAP 66 select GENERIC_IRQ_MULTI_HANDLER 67 select GENERIC_IRQ_PROBE 68 select GENERIC_IRQ_SHOW 69 select GENERIC_LIB_ASHLDI3 70 select GENERIC_LIB_ASHRDI3 71 select GENERIC_LIB_CMPDI2 72 select GENERIC_LIB_LSHRDI3 73 select GENERIC_LIB_UCMPDI2 74 select GENERIC_LIB_DEVMEM_IS_ALLOWED 75 select GENERIC_PCI_IOMAP 76 select GENERIC_SCHED_CLOCK 77 select GENERIC_SMP_IDLE_THREAD 78 select GENERIC_TIME_VSYSCALL 79 select GPIOLIB 80 select HAVE_ARCH_AUDITSYSCALL 81 select HAVE_ARCH_MMAP_RND_BITS if MMU 82 select HAVE_ARCH_SECCOMP_FILTER 83 select HAVE_ARCH_TRACEHOOK 84 select HAVE_ARCH_TRANSPARENT_HUGEPAGE 85 select HAVE_ASM_MODVERSIONS 86 select HAVE_CONTEXT_TRACKING_USER 87 select HAVE_DEBUG_STACKOVERFLOW 88 select HAVE_DMA_CONTIGUOUS 89 select HAVE_EBPF_JIT 90 select HAVE_EXIT_THREAD 91 select HAVE_FAST_GUP 92 select HAVE_GENERIC_VDSO 93 select HAVE_IOREMAP_PROT 94 select HAVE_IRQ_EXIT_ON_IRQ_STACK 95 select HAVE_IRQ_TIME_ACCOUNTING 96 select HAVE_MOD_ARCH_SPECIFIC 97 select HAVE_NMI 98 select HAVE_PCI 99 select HAVE_PERF_EVENTS 100 select HAVE_PERF_REGS 101 select HAVE_PERF_USER_STACK_DUMP 102 select HAVE_REGS_AND_STACK_ACCESS_API 103 select HAVE_RSEQ 104 select HAVE_SETUP_PER_CPU_AREA if NUMA 105 select HAVE_SYSCALL_TRACEPOINTS 106 select HAVE_TIF_NOHZ 107 select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP 108 select IRQ_FORCED_THREADING 109 select IRQ_LOONGARCH_CPU 110 select MMU_GATHER_MERGE_VMAS if MMU 111 select MODULES_USE_ELF_RELA if MODULES 112 select NEED_PER_CPU_EMBED_FIRST_CHUNK 113 select NEED_PER_CPU_PAGE_FIRST_CHUNK 114 select PCI 115 select PCI_DOMAINS_GENERIC 116 select PCI_ECAM if ACPI 117 select PCI_LOONGSON 118 select PCI_MSI_ARCH_FALLBACKS 119 select PCI_QUIRKS 120 select PERF_USE_VMALLOC 121 select RTC_LIB 122 select SMP 123 select SPARSE_IRQ 124 select SYSCTL_EXCEPTION_TRACE 125 select SWIOTLB 126 select TRACE_IRQFLAGS_SUPPORT 127 select USE_PERCPU_NUMA_NODE_ID 128 select USER_STACKTRACE_SUPPORT 129 select ZONE_DMA32 130 131config 32BIT 132 bool 133 134config 64BIT 135 def_bool y 136 137config CPU_HAS_FPU 138 bool 139 default y 140 141config CPU_HAS_PREFETCH 142 bool 143 default y 144 145config GENERIC_BUG 146 def_bool y 147 depends on BUG 148 149config GENERIC_BUG_RELATIVE_POINTERS 150 def_bool y 151 depends on GENERIC_BUG 152 153config GENERIC_CALIBRATE_DELAY 154 def_bool y 155 156config GENERIC_CSUM 157 def_bool y 158 159config GENERIC_HWEIGHT 160 def_bool y 161 162config L1_CACHE_SHIFT 163 int 164 default "6" 165 166config LOCKDEP_SUPPORT 167 bool 168 default y 169 170config STACKTRACE_SUPPORT 171 bool 172 default y 173 174# MACH_LOONGSON32 and MACH_LOONGSON64 are deliberately carried over from the 175# MIPS Loongson code, to preserve Loongson-specific code paths in drivers that 176# are shared between architectures, and specifically expecting the symbols. 177config MACH_LOONGSON32 178 def_bool 32BIT 179 180config MACH_LOONGSON64 181 def_bool 64BIT 182 183config FIX_EARLYCON_MEM 184 def_bool y 185 186config PAGE_SIZE_4KB 187 bool 188 189config PAGE_SIZE_16KB 190 bool 191 192config PAGE_SIZE_64KB 193 bool 194 195config PGTABLE_2LEVEL 196 bool 197 198config PGTABLE_3LEVEL 199 bool 200 201config PGTABLE_4LEVEL 202 bool 203 204config PGTABLE_LEVELS 205 int 206 default 2 if PGTABLE_2LEVEL 207 default 3 if PGTABLE_3LEVEL 208 default 4 if PGTABLE_4LEVEL 209 210config SCHED_OMIT_FRAME_POINTER 211 bool 212 default y 213 214config AS_HAS_EXPLICIT_RELOCS 215 def_bool $(as-instr,x:pcalau12i \$t0$(comma)%pc_hi20(x)) 216 217menu "Kernel type and options" 218 219source "kernel/Kconfig.hz" 220 221choice 222 prompt "Page Table Layout" 223 default 16KB_2LEVEL if 32BIT 224 default 16KB_3LEVEL if 64BIT 225 help 226 Allows choosing the page table layout, which is a combination 227 of page size and page table levels. The size of virtual memory 228 address space are determined by the page table layout. 229 230config 4KB_3LEVEL 231 bool "4KB with 3 levels" 232 select PAGE_SIZE_4KB 233 select PGTABLE_3LEVEL 234 help 235 This option selects 4KB page size with 3 level page tables, which 236 support a maximum of 39 bits of application virtual memory. 237 238config 4KB_4LEVEL 239 bool "4KB with 4 levels" 240 select PAGE_SIZE_4KB 241 select PGTABLE_4LEVEL 242 help 243 This option selects 4KB page size with 4 level page tables, which 244 support a maximum of 48 bits of application virtual memory. 245 246config 16KB_2LEVEL 247 bool "16KB with 2 levels" 248 select PAGE_SIZE_16KB 249 select PGTABLE_2LEVEL 250 help 251 This option selects 16KB page size with 2 level page tables, which 252 support a maximum of 36 bits of application virtual memory. 253 254config 16KB_3LEVEL 255 bool "16KB with 3 levels" 256 select PAGE_SIZE_16KB 257 select PGTABLE_3LEVEL 258 help 259 This option selects 16KB page size with 3 level page tables, which 260 support a maximum of 47 bits of application virtual memory. 261 262config 64KB_2LEVEL 263 bool "64KB with 2 levels" 264 select PAGE_SIZE_64KB 265 select PGTABLE_2LEVEL 266 help 267 This option selects 64KB page size with 2 level page tables, which 268 support a maximum of 42 bits of application virtual memory. 269 270config 64KB_3LEVEL 271 bool "64KB with 3 levels" 272 select PAGE_SIZE_64KB 273 select PGTABLE_3LEVEL 274 help 275 This option selects 64KB page size with 3 level page tables, which 276 support a maximum of 55 bits of application virtual memory. 277 278endchoice 279 280config CMDLINE 281 string "Built-in kernel command line" 282 help 283 For most platforms, the arguments for the kernel's command line 284 are provided at run-time, during boot. However, there are cases 285 where either no arguments are being provided or the provided 286 arguments are insufficient or even invalid. 287 288 When that occurs, it is possible to define a built-in command 289 line here and choose how the kernel should use it later on. 290 291choice 292 prompt "Kernel command line type" 293 default CMDLINE_BOOTLOADER 294 help 295 Choose how the kernel will handle the provided built-in command 296 line. 297 298config CMDLINE_BOOTLOADER 299 bool "Use bootloader kernel arguments if available" 300 help 301 Prefer the command-line passed by the boot loader if available. 302 Use the built-in command line as fallback in case we get nothing 303 during boot. This is the default behaviour. 304 305config CMDLINE_EXTEND 306 bool "Use built-in to extend bootloader kernel arguments" 307 help 308 The command-line arguments provided during boot will be 309 appended to the built-in command line. This is useful in 310 cases where the provided arguments are insufficient and 311 you don't want to or cannot modify them. 312 313config CMDLINE_FORCE 314 bool "Always use the built-in kernel command string" 315 help 316 Always use the built-in command line, even if we get one during 317 boot. This is useful in case you need to override the provided 318 command line on systems where you don't have or want control 319 over it. 320 321endchoice 322 323config DMI 324 bool "Enable DMI scanning" 325 select DMI_SCAN_MACHINE_NON_EFI_FALLBACK 326 default y 327 help 328 This enables SMBIOS/DMI feature for systems, and scanning of 329 DMI to identify machine quirks. 330 331config EFI 332 bool "EFI runtime service support" 333 select UCS2_STRING 334 select EFI_RUNTIME_WRAPPERS 335 help 336 This enables the kernel to use EFI runtime services that are 337 available (such as the EFI variable services). 338 339config EFI_STUB 340 bool "EFI boot stub support" 341 default y 342 depends on EFI 343 select EFI_GENERIC_STUB 344 help 345 This kernel feature allows the kernel to be loaded directly by 346 EFI firmware without the use of a bootloader. 347 348config SMP 349 bool "Multi-Processing support" 350 help 351 This enables support for systems with more than one CPU. If you have 352 a system with only one CPU, say N. If you have a system with more 353 than one CPU, say Y. 354 355 If you say N here, the kernel will run on uni- and multiprocessor 356 machines, but will use only one CPU of a multiprocessor machine. If 357 you say Y here, the kernel will run on many, but not all, 358 uniprocessor machines. On a uniprocessor machine, the kernel 359 will run faster if you say N here. 360 361 See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>. 362 363 If you don't know what to do here, say N. 364 365config HOTPLUG_CPU 366 bool "Support for hot-pluggable CPUs" 367 depends on SMP 368 select GENERIC_IRQ_MIGRATION 369 help 370 Say Y here to allow turning CPUs off and on. CPUs can be 371 controlled through /sys/devices/system/cpu. 372 (Note: power management support will enable this option 373 automatically on SMP systems. ) 374 Say N if you want to disable CPU hotplug. 375 376config NR_CPUS 377 int "Maximum number of CPUs (2-256)" 378 range 2 256 379 depends on SMP 380 default "64" 381 help 382 This allows you to specify the maximum number of CPUs which this 383 kernel will support. 384 385config NUMA 386 bool "NUMA Support" 387 select SMP 388 select ACPI_NUMA if ACPI 389 help 390 Say Y to compile the kernel with NUMA (Non-Uniform Memory Access) 391 support. This option improves performance on systems with more 392 than one NUMA node; on single node systems it is generally better 393 to leave it disabled. 394 395config NODES_SHIFT 396 int 397 default "6" 398 depends on NUMA 399 400config ARCH_FORCE_MAX_ORDER 401 int "Maximum zone order" 402 range 14 64 if PAGE_SIZE_64KB 403 default "14" if PAGE_SIZE_64KB 404 range 12 64 if PAGE_SIZE_16KB 405 default "12" if PAGE_SIZE_16KB 406 range 11 64 407 default "11" 408 help 409 The kernel memory allocator divides physically contiguous memory 410 blocks into "zones", where each zone is a power of two number of 411 pages. This option selects the largest power of two that the kernel 412 keeps in the memory allocator. If you need to allocate very large 413 blocks of physically contiguous memory, then you may need to 414 increase this value. 415 416 This config option is actually maximum order plus one. For example, 417 a value of 11 means that the largest free memory block is 2^10 pages. 418 419 The page size is not necessarily 4KB. Keep this in mind 420 when choosing a value for this option. 421 422config ARCH_IOREMAP 423 bool "Enable LoongArch DMW-based ioremap()" 424 help 425 We use generic TLB-based ioremap() by default since it has page 426 protection support. However, you can enable LoongArch DMW-based 427 ioremap() for better performance. 428 429config KEXEC 430 bool "Kexec system call" 431 select KEXEC_CORE 432 help 433 kexec is a system call that implements the ability to shutdown your 434 current kernel, and to start another kernel. It is like a reboot 435 but it is independent of the system firmware. And like a reboot 436 you can start any kernel with it, not just Linux. 437 438 The name comes from the similarity to the exec system call. 439 440config CRASH_DUMP 441 bool "Build kdump crash kernel" 442 help 443 Generate crash dump after being started by kexec. This should 444 be normally only set in special crash dump kernels which are 445 loaded in the main kernel with kexec-tools into a specially 446 reserved region and then later executed after a crash by 447 kdump/kexec. 448 449 For more details see Documentation/admin-guide/kdump/kdump.rst 450 451config PHYSICAL_START 452 hex "Physical address where the kernel is loaded" 453 default "0x90000000a0000000" 454 depends on CRASH_DUMP 455 help 456 This gives the XKPRANGE address where the kernel is loaded. 457 If you plan to use kernel for capturing the crash dump change 458 this value to start of the reserved region (the "X" value as 459 specified in the "crashkernel=YM@XM" command line boot parameter 460 passed to the panic-ed kernel). 461 462config SECCOMP 463 bool "Enable seccomp to safely compute untrusted bytecode" 464 depends on PROC_FS 465 default y 466 help 467 This kernel feature is useful for number crunching applications 468 that may need to compute untrusted bytecode during their 469 execution. By using pipes or other transports made available to 470 the process as file descriptors supporting the read/write 471 syscalls, it's possible to isolate those applications in 472 their own address space using seccomp. Once seccomp is 473 enabled via /proc/<pid>/seccomp, it cannot be disabled 474 and the task is only allowed to execute a few safe syscalls 475 defined by each seccomp mode. 476 477 If unsure, say Y. Only embedded should say N here. 478 479endmenu 480 481config ARCH_SELECT_MEMORY_MODEL 482 def_bool y 483 484config ARCH_FLATMEM_ENABLE 485 def_bool y 486 depends on !NUMA 487 488config ARCH_SPARSEMEM_ENABLE 489 def_bool y 490 help 491 Say Y to support efficient handling of sparse physical memory, 492 for architectures which are either NUMA (Non-Uniform Memory Access) 493 or have huge holes in the physical address space for other reasons. 494 See <file:Documentation/mm/numa.rst> for more. 495 496config ARCH_ENABLE_THP_MIGRATION 497 def_bool y 498 depends on TRANSPARENT_HUGEPAGE 499 500config ARCH_MEMORY_PROBE 501 def_bool y 502 depends on MEMORY_HOTPLUG 503 504config MMU 505 bool 506 default y 507 508config ARCH_MMAP_RND_BITS_MIN 509 default 12 510 511config ARCH_MMAP_RND_BITS_MAX 512 default 18 513 514menu "Power management options" 515 516source "drivers/acpi/Kconfig" 517 518endmenu 519 520source "drivers/firmware/Kconfig" 521