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