Kconfig 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
  1. # SPDX-License-Identifier: GPL-2.0
  2. config 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_HOTPLUG_CPU if ACPI_PROCESSOR && HOTPLUG_CPU
  9. select ACPI_PPTT if ACPI
  10. select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
  11. select ARCH_BINFMT_ELF_STATE
  12. select ARCH_NEEDS_DEFER_KASAN
  13. select ARCH_DISABLE_KASAN_INLINE
  14. select ARCH_ENABLE_MEMORY_HOTPLUG
  15. select ARCH_ENABLE_MEMORY_HOTREMOVE
  16. select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
  17. select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
  18. select ARCH_HAS_CPU_FINALIZE_INIT
  19. select ARCH_HAS_CURRENT_STACK_POINTER
  20. select ARCH_HAS_DEBUG_VM_PGTABLE
  21. select ARCH_HAS_FAST_MULTIPLIER
  22. select ARCH_HAS_FORTIFY_SOURCE
  23. select ARCH_HAS_KCOV
  24. select ARCH_HAS_KERNEL_FPU_SUPPORT if CPU_HAS_FPU
  25. select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
  26. select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
  27. select ARCH_HAS_PREEMPT_LAZY
  28. select ARCH_HAS_PTE_SPECIAL
  29. select ARCH_HAS_SET_MEMORY
  30. select ARCH_HAS_SET_DIRECT_MAP
  31. select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
  32. select ARCH_HAS_UBSAN
  33. select ARCH_HAS_VDSO_ARCH_DATA
  34. select ARCH_INLINE_READ_LOCK if !PREEMPTION
  35. select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION
  36. select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION
  37. select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION
  38. select ARCH_INLINE_READ_UNLOCK if !PREEMPTION
  39. select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION
  40. select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION
  41. select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION
  42. select ARCH_INLINE_WRITE_LOCK if !PREEMPTION
  43. select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION
  44. select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION
  45. select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION
  46. select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION
  47. select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION
  48. select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION
  49. select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION
  50. select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION
  51. select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION
  52. select ARCH_INLINE_SPIN_LOCK if !PREEMPTION
  53. select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION
  54. select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION
  55. select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION
  56. select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION
  57. select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION
  58. select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION
  59. select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION
  60. select ARCH_KEEP_MEMBLOCK
  61. select ARCH_MIGHT_HAVE_PC_PARPORT
  62. select ARCH_MIGHT_HAVE_PC_SERIO
  63. select ARCH_SPARSEMEM_ENABLE
  64. select ARCH_STACKWALK
  65. select ARCH_SUPPORTS_ACPI
  66. select ARCH_SUPPORTS_ATOMIC_RMW
  67. select ARCH_SUPPORTS_HUGETLBFS
  68. select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
  69. select ARCH_SUPPORTS_LTO_CLANG
  70. select ARCH_SUPPORTS_LTO_CLANG_THIN
  71. select ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
  72. select ARCH_SUPPORTS_NUMA_BALANCING
  73. select ARCH_SUPPORTS_PER_VMA_LOCK
  74. select ARCH_SUPPORTS_RT
  75. select ARCH_SUPPORTS_SCHED_SMT if SMP
  76. select ARCH_SUPPORTS_SCHED_MC if SMP
  77. select ARCH_USE_BUILTIN_BSWAP
  78. select ARCH_USE_CMPXCHG_LOCKREF
  79. select ARCH_USE_MEMTEST
  80. select ARCH_USE_QUEUED_RWLOCKS
  81. select ARCH_USE_QUEUED_SPINLOCKS
  82. select ARCH_WANT_DEFAULT_BPF_JIT
  83. select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
  84. select ARCH_WANT_LD_ORPHAN_WARN
  85. select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
  86. select ARCH_WANTS_NO_INSTR
  87. select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE
  88. select BUILDTIME_TABLE_SORT
  89. select COMMON_CLK
  90. select CPU_PM
  91. select EDAC_SUPPORT
  92. select EFI
  93. select GENERIC_CLOCKEVENTS
  94. select GENERIC_CMOS_UPDATE
  95. select GENERIC_CPU_AUTOPROBE
  96. select GENERIC_CPU_DEVICES
  97. select GENERIC_CPU_VULNERABILITIES
  98. select GENERIC_ENTRY
  99. select GENERIC_GETTIMEOFDAY
  100. select GENERIC_IOREMAP if !ARCH_IOREMAP
  101. select GENERIC_IRQ_MATRIX_ALLOCATOR
  102. select GENERIC_IRQ_MULTI_HANDLER
  103. select GENERIC_IRQ_PROBE
  104. select GENERIC_IRQ_SHOW
  105. select GENERIC_LIB_ASHLDI3
  106. select GENERIC_LIB_ASHRDI3
  107. select GENERIC_LIB_CMPDI2
  108. select GENERIC_LIB_LSHRDI3
  109. select GENERIC_LIB_UCMPDI2
  110. select GENERIC_LIB_DEVMEM_IS_ALLOWED
  111. select GENERIC_PCI_IOMAP
  112. select GENERIC_SCHED_CLOCK
  113. select GENERIC_SMP_IDLE_THREAD
  114. select GENERIC_TIME_VSYSCALL
  115. select GPIOLIB
  116. select HAS_IOPORT
  117. select HAVE_ALIGNED_STRUCT_PAGE
  118. select HAVE_ARCH_AUDITSYSCALL
  119. select HAVE_ARCH_BITREVERSE
  120. select HAVE_ARCH_JUMP_LABEL
  121. select HAVE_ARCH_JUMP_LABEL_RELATIVE
  122. select HAVE_ARCH_KASAN
  123. select HAVE_ARCH_KFENCE
  124. select HAVE_ARCH_KGDB if PERF_EVENTS
  125. select HAVE_ARCH_KSTACK_ERASE
  126. select HAVE_ARCH_MMAP_RND_BITS if MMU
  127. select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
  128. select HAVE_ARCH_SECCOMP
  129. select HAVE_ARCH_SECCOMP_FILTER
  130. select HAVE_ARCH_TRACEHOOK
  131. select HAVE_ARCH_TRANSPARENT_HUGEPAGE
  132. select HAVE_ARCH_USERFAULTFD_MINOR if USERFAULTFD
  133. select HAVE_ASM_MODVERSIONS
  134. select HAVE_CMPXCHG_DOUBLE
  135. select HAVE_CMPXCHG_LOCAL
  136. select HAVE_CONTEXT_TRACKING_USER
  137. select HAVE_C_RECORDMCOUNT
  138. select HAVE_DEBUG_KMEMLEAK
  139. select HAVE_DEBUG_STACKOVERFLOW
  140. select HAVE_DMA_CONTIGUOUS
  141. select HAVE_DYNAMIC_FTRACE
  142. select HAVE_DYNAMIC_FTRACE_WITH_ARGS
  143. select HAVE_FTRACE_REGS_HAVING_PT_REGS
  144. select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
  145. select HAVE_DYNAMIC_FTRACE_WITH_REGS
  146. select HAVE_EBPF_JIT
  147. select HAVE_EFFICIENT_UNALIGNED_ACCESS if !ARCH_STRICT_ALIGN
  148. select HAVE_EXIT_THREAD
  149. select HAVE_GENERIC_TIF_BITS
  150. select HAVE_GUP_FAST
  151. select HAVE_FTRACE_GRAPH_FUNC
  152. select HAVE_FUNCTION_ARG_ACCESS_API
  153. select HAVE_FUNCTION_ERROR_INJECTION
  154. select HAVE_FUNCTION_GRAPH_FREGS
  155. select HAVE_FUNCTION_GRAPH_TRACER
  156. select HAVE_FUNCTION_TRACER
  157. select HAVE_GCC_PLUGINS
  158. select HAVE_GENERIC_VDSO
  159. select HAVE_HW_BREAKPOINT if PERF_EVENTS
  160. select HAVE_IOREMAP_PROT
  161. select HAVE_IRQ_EXIT_ON_IRQ_STACK
  162. select HAVE_IRQ_TIME_ACCOUNTING
  163. select HAVE_KPROBES
  164. select HAVE_KPROBES_ON_FTRACE
  165. select HAVE_KRETPROBES
  166. select HAVE_LIVEPATCH
  167. select HAVE_MOD_ARCH_SPECIFIC
  168. select HAVE_NMI
  169. select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB
  170. select HAVE_PCI
  171. select HAVE_PERF_EVENTS
  172. select HAVE_PERF_REGS
  173. select HAVE_PERF_USER_STACK_DUMP
  174. select HAVE_POSIX_CPU_TIMERS_TASK_WORK
  175. select HAVE_PREEMPT_DYNAMIC_KEY
  176. select HAVE_REGS_AND_STACK_ACCESS_API
  177. select HAVE_RELIABLE_STACKTRACE if UNWINDER_ORC
  178. select HAVE_RETHOOK
  179. select HAVE_RSEQ
  180. select HAVE_RUST
  181. select HAVE_SAMPLE_FTRACE_DIRECT
  182. select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
  183. select HAVE_SETUP_PER_CPU_AREA if NUMA
  184. select HAVE_STACK_VALIDATION if HAVE_OBJTOOL
  185. select HAVE_STACKPROTECTOR
  186. select HAVE_SYSCALL_TRACEPOINTS
  187. select HAVE_TIF_NOHZ
  188. select HAVE_VIRT_CPU_ACCOUNTING_GEN
  189. select HOTPLUG_SMT if HOTPLUG_CPU
  190. select IRQ_FORCED_THREADING
  191. select IRQ_LOONGARCH_CPU
  192. select LOCK_MM_AND_FIND_VMA
  193. select MMU_GATHER_MERGE_VMAS if MMU
  194. select MMU_GATHER_RCU_TABLE_FREE
  195. select MODULES_USE_ELF_RELA if MODULES
  196. select NEED_PER_CPU_EMBED_FIRST_CHUNK
  197. select NEED_PER_CPU_PAGE_FIRST_CHUNK
  198. select NUMA_MEMBLKS if NUMA
  199. select OF
  200. select OF_EARLY_FLATTREE
  201. select PCI
  202. select PCI_DOMAINS_GENERIC
  203. select PCI_ECAM if ACPI
  204. select PCI_LOONGSON
  205. select PCI_MSI_ARCH_FALLBACKS
  206. select PCI_QUIRKS
  207. select PERF_USE_VMALLOC
  208. select RTC_LIB
  209. select SPARSE_IRQ
  210. select SYSCTL_ARCH_UNALIGN_ALLOW
  211. select SYSCTL_ARCH_UNALIGN_NO_WARN
  212. select SYSCTL_EXCEPTION_TRACE
  213. select SWIOTLB
  214. select TRACE_IRQFLAGS_SUPPORT
  215. select USE_PERCPU_NUMA_NODE_ID
  216. select USER_STACKTRACE_SUPPORT
  217. select VDSO_GETRANDOM
  218. select ZONE_DMA32
  219. config 32BIT
  220. bool
  221. config 64BIT
  222. def_bool y
  223. config GENERIC_BUG
  224. def_bool y
  225. depends on BUG
  226. config GENERIC_BUG_RELATIVE_POINTERS
  227. def_bool y
  228. depends on GENERIC_BUG
  229. config GENERIC_CALIBRATE_DELAY
  230. def_bool y
  231. config GENERIC_CSUM
  232. def_bool y
  233. config GENERIC_HWEIGHT
  234. def_bool y
  235. config L1_CACHE_SHIFT
  236. int
  237. default "6"
  238. config LOCKDEP_SUPPORT
  239. bool
  240. default y
  241. config STACKTRACE_SUPPORT
  242. bool
  243. default y
  244. # MACH_LOONGSON32 and MACH_LOONGSON64 are deliberately carried over from the
  245. # MIPS Loongson code, to preserve Loongson-specific code paths in drivers that
  246. # are shared between architectures, and specifically expecting the symbols.
  247. config MACH_LOONGSON32
  248. def_bool 32BIT
  249. config MACH_LOONGSON64
  250. def_bool 64BIT
  251. config FIX_EARLYCON_MEM
  252. def_bool !ARCH_IOREMAP
  253. config PGTABLE_2LEVEL
  254. bool
  255. config PGTABLE_3LEVEL
  256. bool
  257. config PGTABLE_4LEVEL
  258. bool
  259. config PGTABLE_LEVELS
  260. int
  261. default 2 if PGTABLE_2LEVEL
  262. default 3 if PGTABLE_3LEVEL
  263. default 4 if PGTABLE_4LEVEL
  264. config SCHED_OMIT_FRAME_POINTER
  265. bool
  266. default y
  267. config AS_HAS_EXPLICIT_RELOCS
  268. def_bool $(as-instr,x:pcalau12i \$t0$(comma)%pc_hi20(x))
  269. config AS_HAS_FCSR_CLASS
  270. def_bool $(as-instr,movfcsr2gr \$t0$(comma)\$fcsr0)
  271. config AS_HAS_THIN_ADD_SUB
  272. def_bool $(cc-option,-Wa$(comma)-mthin-add-sub) || AS_IS_LLVM
  273. config AS_HAS_LSX_EXTENSION
  274. def_bool $(as-instr,vld \$vr0$(comma)\$a0$(comma)0)
  275. config AS_HAS_LASX_EXTENSION
  276. def_bool $(as-instr,xvld \$xr0$(comma)\$a0$(comma)0)
  277. config AS_HAS_LBT_EXTENSION
  278. def_bool $(as-instr,movscr2gr \$a0$(comma)\$scr0)
  279. config AS_HAS_LVZ_EXTENSION
  280. def_bool $(as-instr,hvcl 0)
  281. config AS_HAS_SCQ_EXTENSION
  282. def_bool $(as-instr,sc.q \$t0$(comma)\$t1$(comma)\$t2)
  283. config CC_HAS_ANNOTATE_TABLEJUMP
  284. def_bool $(cc-option,-mannotate-tablejump)
  285. config RUSTC_HAS_ANNOTATE_TABLEJUMP
  286. depends on RUST
  287. def_bool $(rustc-option,-Cllvm-args=--loongarch-annotate-tablejump)
  288. menu "Kernel type and options"
  289. source "kernel/Kconfig.hz"
  290. choice
  291. prompt "Page Table Layout"
  292. default 16KB_2LEVEL if 32BIT
  293. default 16KB_3LEVEL if 64BIT
  294. help
  295. Allows choosing the page table layout, which is a combination
  296. of page size and page table levels. The size of virtual memory
  297. address space are determined by the page table layout.
  298. config 4KB_3LEVEL
  299. bool "4KB with 3 levels"
  300. select HAVE_PAGE_SIZE_4KB
  301. select PGTABLE_3LEVEL
  302. help
  303. This option selects 4KB page size with 3 level page tables, which
  304. support a maximum of 39 bits of application virtual memory.
  305. config 4KB_4LEVEL
  306. bool "4KB with 4 levels"
  307. select HAVE_PAGE_SIZE_4KB
  308. select PGTABLE_4LEVEL
  309. help
  310. This option selects 4KB page size with 4 level page tables, which
  311. support a maximum of 48 bits of application virtual memory.
  312. config 16KB_2LEVEL
  313. bool "16KB with 2 levels"
  314. select HAVE_PAGE_SIZE_16KB
  315. select PGTABLE_2LEVEL
  316. help
  317. This option selects 16KB page size with 2 level page tables, which
  318. support a maximum of 36 bits of application virtual memory.
  319. config 16KB_3LEVEL
  320. bool "16KB with 3 levels"
  321. select HAVE_PAGE_SIZE_16KB
  322. select PGTABLE_3LEVEL
  323. help
  324. This option selects 16KB page size with 3 level page tables, which
  325. support a maximum of 47 bits of application virtual memory.
  326. config 64KB_2LEVEL
  327. bool "64KB with 2 levels"
  328. select HAVE_PAGE_SIZE_64KB
  329. select PGTABLE_2LEVEL
  330. help
  331. This option selects 64KB page size with 2 level page tables, which
  332. support a maximum of 42 bits of application virtual memory.
  333. config 64KB_3LEVEL
  334. bool "64KB with 3 levels"
  335. select HAVE_PAGE_SIZE_64KB
  336. select PGTABLE_3LEVEL
  337. help
  338. This option selects 64KB page size with 3 level page tables, which
  339. support a maximum of 55 bits of application virtual memory.
  340. endchoice
  341. config CMDLINE
  342. string "Built-in kernel command line"
  343. help
  344. For most platforms, the arguments for the kernel's command line
  345. are provided at run-time, during boot. However, there are cases
  346. where either no arguments are being provided or the provided
  347. arguments are insufficient or even invalid.
  348. When that occurs, it is possible to define a built-in command
  349. line here and choose how the kernel should use it later on.
  350. choice
  351. prompt "Kernel command line type"
  352. default CMDLINE_BOOTLOADER
  353. help
  354. Choose how the kernel will handle the provided built-in command
  355. line.
  356. config CMDLINE_BOOTLOADER
  357. bool "Use bootloader kernel arguments if available"
  358. help
  359. Prefer the command-line passed by the boot loader if available.
  360. Use the built-in command line as fallback in case we get nothing
  361. during boot. This is the default behaviour.
  362. config CMDLINE_EXTEND
  363. bool "Use built-in to extend bootloader kernel arguments"
  364. help
  365. The built-in command line will be appended to the command-
  366. line arguments provided during boot. This is useful in
  367. cases where the provided arguments are insufficient and
  368. you don't want to or cannot modify them.
  369. config CMDLINE_FORCE
  370. bool "Always use the built-in kernel command string"
  371. help
  372. Always use the built-in command line, even if we get one during
  373. boot. This is useful in case you need to override the provided
  374. command line on systems where you don't have or want control
  375. over it.
  376. endchoice
  377. config BUILTIN_DTB
  378. bool "Enable built-in dtb in kernel"
  379. depends on OF
  380. select GENERIC_BUILTIN_DTB
  381. help
  382. Some existing systems do not provide a canonical device tree to
  383. the kernel at boot time. Let's provide a device tree table in the
  384. kernel, keyed by the dts filename, containing the relevant DTBs.
  385. Built-in DTBs are generic enough and can be used as references.
  386. config BUILTIN_DTB_NAME
  387. string "Source file for built-in dtb"
  388. depends on BUILTIN_DTB
  389. help
  390. Base name (without suffix, relative to arch/loongarch/boot/dts/)
  391. for the DTS file that will be used to produce the DTB linked into
  392. the kernel.
  393. config DMI
  394. bool "Enable DMI scanning"
  395. select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
  396. default y
  397. help
  398. This enables SMBIOS/DMI feature for systems, and scanning of
  399. DMI to identify machine quirks.
  400. config EFI
  401. bool "EFI runtime service support"
  402. select UCS2_STRING
  403. select EFI_RUNTIME_WRAPPERS
  404. help
  405. This enables the kernel to use EFI runtime services that are
  406. available (such as the EFI variable services).
  407. config EFI_STUB
  408. bool "EFI boot stub support"
  409. default y
  410. depends on EFI
  411. select EFI_GENERIC_STUB
  412. help
  413. This kernel feature allows the kernel to be loaded directly by
  414. EFI firmware without the use of a bootloader.
  415. config SMP
  416. bool "Multi-Processing support"
  417. help
  418. This enables support for systems with more than one CPU. If you have
  419. a system with only one CPU, say N. If you have a system with more
  420. than one CPU, say Y.
  421. If you say N here, the kernel will run on uni- and multiprocessor
  422. machines, but will use only one CPU of a multiprocessor machine. If
  423. you say Y here, the kernel will run on many, but not all,
  424. uniprocessor machines. On a uniprocessor machine, the kernel
  425. will run faster if you say N here.
  426. See also the SMP-HOWTO available at <http://www.tldp.org/docs.html#howto>.
  427. If you don't know what to do here, say N.
  428. config HOTPLUG_CPU
  429. bool "Support for hot-pluggable CPUs"
  430. depends on SMP
  431. select GENERIC_IRQ_MIGRATION
  432. help
  433. Say Y here to allow turning CPUs off and on. CPUs can be
  434. controlled through /sys/devices/system/cpu.
  435. (Note: power management support will enable this option
  436. automatically on SMP systems. )
  437. Say N if you want to disable CPU hotplug.
  438. config NR_CPUS
  439. int "Maximum number of CPUs (2-2048)"
  440. range 2 2048
  441. default "2048"
  442. depends on SMP
  443. help
  444. This allows you to specify the maximum number of CPUs which this
  445. kernel will support.
  446. config NUMA
  447. bool "NUMA Support"
  448. select SMP
  449. help
  450. Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
  451. support. This option improves performance on systems with more
  452. than one NUMA node; on single node systems it is generally better
  453. to leave it disabled.
  454. config NODES_SHIFT
  455. int
  456. default "6"
  457. depends on NUMA
  458. config ARCH_FORCE_MAX_ORDER
  459. int "Maximum zone order"
  460. default "13" if PAGE_SIZE_64KB
  461. default "11" if PAGE_SIZE_16KB
  462. default "10"
  463. help
  464. The kernel memory allocator divides physically contiguous memory
  465. blocks into "zones", where each zone is a power of two number of
  466. pages. This option selects the largest power of two that the kernel
  467. keeps in the memory allocator. If you need to allocate very large
  468. blocks of physically contiguous memory, then you may need to
  469. increase this value.
  470. The page size is not necessarily 4KB. Keep this in mind
  471. when choosing a value for this option.
  472. config ARCH_IOREMAP
  473. bool "Enable LoongArch DMW-based ioremap()"
  474. help
  475. We use generic TLB-based ioremap() by default since it has page
  476. protection support. However, you can enable LoongArch DMW-based
  477. ioremap() for better performance.
  478. config ARCH_WRITECOMBINE
  479. bool "Enable WriteCombine (WUC) for ioremap()"
  480. help
  481. LoongArch maintains cache coherency in hardware, but when paired
  482. with LS7A chipsets the WUC attribute (Weak-ordered UnCached, which
  483. is similar to WriteCombine) is out of the scope of cache coherency
  484. machanism for PCIe devices (this is a PCIe protocol violation, which
  485. may be fixed in newer chipsets).
  486. This means WUC can only used for write-only memory regions now, so
  487. this option is disabled by default, making WUC silently fallback to
  488. SUC for ioremap(). You can enable this option if the kernel is ensured
  489. to run on hardware without this bug.
  490. You can override this setting via writecombine=on/off boot parameter.
  491. config ARCH_STRICT_ALIGN
  492. bool "Enable -mstrict-align to prevent unaligned accesses" if EXPERT
  493. default y
  494. help
  495. Not all LoongArch cores support h/w unaligned access, we can use
  496. -mstrict-align build parameter to prevent unaligned accesses.
  497. CPUs with h/w unaligned access support:
  498. Loongson-2K2000/2K3000 and all of Loongson-3 series processors
  499. based on LoongArch.
  500. CPUs without h/w unaligned access support:
  501. Loongson-2K0300/2K0500/2K1000.
  502. If you want to make sure whether to support unaligned memory access
  503. on your hardware, please read the bit 20 (UAL) of CPUCFG1 register.
  504. This option is enabled by default to make the kernel be able to run
  505. on all LoongArch systems. But you can disable it manually if you want
  506. to run kernel only on systems with h/w unaligned access support in
  507. order to optimise for performance.
  508. config CPU_HAS_AMO
  509. bool
  510. default 64BIT
  511. config CPU_HAS_FPU
  512. bool
  513. default y
  514. config CPU_HAS_LSX
  515. bool "Support for the Loongson SIMD Extension"
  516. depends on AS_HAS_LSX_EXTENSION
  517. help
  518. Loongson SIMD Extension (LSX) introduces 128 bit wide vector registers
  519. and a set of SIMD instructions to operate on them. When this option
  520. is enabled the kernel will support allocating & switching LSX
  521. vector register contexts. If you know that your kernel will only be
  522. running on CPUs which do not support LSX or that your userland will
  523. not be making use of it then you may wish to say N here to reduce
  524. the size & complexity of your kernel.
  525. If unsure, say Y.
  526. config CPU_HAS_LASX
  527. bool "Support for the Loongson Advanced SIMD Extension"
  528. depends on CPU_HAS_LSX
  529. depends on AS_HAS_LASX_EXTENSION
  530. help
  531. Loongson Advanced SIMD Extension (LASX) introduces 256 bit wide vector
  532. registers and a set of SIMD instructions to operate on them. When this
  533. option is enabled the kernel will support allocating & switching LASX
  534. vector register contexts. If you know that your kernel will only be
  535. running on CPUs which do not support LASX or that your userland will
  536. not be making use of it then you may wish to say N here to reduce
  537. the size & complexity of your kernel.
  538. If unsure, say Y.
  539. config CPU_HAS_LBT
  540. bool "Support for the Loongson Binary Translation Extension"
  541. depends on AS_HAS_LBT_EXTENSION
  542. help
  543. Loongson Binary Translation (LBT) introduces 4 scratch registers (SCR0
  544. to SCR3), x86/ARM eflags (eflags) and x87 fpu stack pointer (ftop).
  545. Enabling this option allows the kernel to allocate and switch registers
  546. specific to LBT.
  547. If you want to use this feature, such as the Loongson Architecture
  548. Translator (LAT), say Y.
  549. config CPU_HAS_PREFETCH
  550. bool
  551. default y
  552. config ARCH_SUPPORTS_KEXEC
  553. def_bool y
  554. config ARCH_SUPPORTS_KEXEC_FILE
  555. def_bool 64BIT
  556. config ARCH_SELECTS_KEXEC_FILE
  557. def_bool 64BIT
  558. depends on KEXEC_FILE
  559. select KEXEC_ELF
  560. select RELOCATABLE
  561. select HAVE_IMA_KEXEC if IMA
  562. config ARCH_SUPPORTS_CRASH_DUMP
  563. def_bool y
  564. config ARCH_DEFAULT_CRASH_DUMP
  565. def_bool y
  566. config ARCH_SELECTS_CRASH_DUMP
  567. def_bool y
  568. depends on CRASH_DUMP
  569. select RELOCATABLE
  570. config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
  571. def_bool CRASH_RESERVE
  572. config RELOCATABLE
  573. bool "Relocatable kernel"
  574. select ARCH_HAS_RELR
  575. help
  576. This builds the kernel as a Position Independent Executable (PIE),
  577. which retains all relocation metadata required, so as to relocate
  578. the kernel binary at runtime to a different virtual address from
  579. its link address.
  580. config RANDOMIZE_BASE
  581. bool "Randomize the address of the kernel (KASLR)"
  582. depends on RELOCATABLE
  583. help
  584. Randomizes the physical and virtual address at which the
  585. kernel image is loaded, as a security feature that
  586. deters exploit attempts relying on knowledge of the location
  587. of kernel internals.
  588. The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET.
  589. If unsure, say N.
  590. config RANDOMIZE_BASE_MAX_OFFSET
  591. hex "Maximum KASLR offset" if EXPERT
  592. depends on RANDOMIZE_BASE
  593. range 0x0 0x10000000
  594. default "0x01000000"
  595. help
  596. When KASLR is active, this provides the maximum offset that will
  597. be applied to the kernel image. It should be set according to the
  598. amount of physical RAM available in the target system.
  599. This is limited by the size of the lower address memory, 256MB.
  600. source "kernel/livepatch/Kconfig"
  601. config PARAVIRT
  602. bool "Enable paravirtualization code"
  603. depends on AS_HAS_LVZ_EXTENSION
  604. select HAVE_PV_STEAL_CLOCK_GEN
  605. help
  606. This changes the kernel so it can modify itself when it is run
  607. under a hypervisor, potentially improving performance significantly
  608. over full virtualization. However, when run without a hypervisor
  609. the kernel is theoretically slower and slightly larger.
  610. config PARAVIRT_TIME_ACCOUNTING
  611. bool "Paravirtual steal time accounting"
  612. depends on PARAVIRT
  613. help
  614. Select this option to enable fine granularity task steal time
  615. accounting. Time spent executing other tasks in parallel with
  616. the current vCPU is discounted from the vCPU power. To account for
  617. that, there can be a small performance impact.
  618. If in doubt, say N here.
  619. endmenu
  620. config ARCH_SELECT_MEMORY_MODEL
  621. def_bool y
  622. config ARCH_FLATMEM_ENABLE
  623. def_bool y
  624. depends on !NUMA
  625. config ARCH_SPARSEMEM_ENABLE
  626. def_bool y
  627. select SPARSEMEM_VMEMMAP_ENABLE
  628. help
  629. Say Y to support efficient handling of sparse physical memory,
  630. for architectures which are either NUMA (Non-Uniform Memory Access)
  631. or have huge holes in the physical address space for other reasons.
  632. See <file:Documentation/mm/numa.rst> for more.
  633. config ARCH_MEMORY_PROBE
  634. def_bool y
  635. depends on MEMORY_HOTPLUG
  636. config MMU
  637. bool
  638. default y
  639. config ARCH_MMAP_RND_BITS_MIN
  640. default 12
  641. config ARCH_MMAP_RND_BITS_MAX
  642. default 18
  643. config ARCH_SUPPORTS_UPROBES
  644. def_bool y
  645. config KASAN_SHADOW_OFFSET
  646. hex
  647. default 0x0
  648. depends on KASAN
  649. menu "Power management options"
  650. config ARCH_SUSPEND_POSSIBLE
  651. def_bool y
  652. config ARCH_HIBERNATION_POSSIBLE
  653. def_bool y
  654. source "kernel/power/Kconfig"
  655. source "drivers/acpi/Kconfig"
  656. source "drivers/cpufreq/Kconfig"
  657. endmenu
  658. source "arch/loongarch/kvm/Kconfig"