Kconfig 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387
  1. config ARM64
  2. def_bool y
  3. select ACPI_CCA_REQUIRED if ACPI
  4. select ACPI_GENERIC_GSI if ACPI
  5. select ACPI_GTDT if ACPI
  6. select ACPI_IORT if ACPI
  7. select ACPI_REDUCED_HARDWARE_ONLY if ACPI
  8. select ACPI_MCFG if ACPI
  9. select ACPI_SPCR_TABLE if ACPI
  10. select ARCH_CLOCKSOURCE_DATA
  11. select ARCH_HAS_DEBUG_VIRTUAL
  12. select ARCH_HAS_DEVMEM_IS_ALLOWED
  13. select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
  14. select ARCH_HAS_ELF_RANDOMIZE
  15. select ARCH_HAS_FORTIFY_SOURCE
  16. select ARCH_HAS_GCOV_PROFILE_ALL
  17. select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
  18. select ARCH_HAS_KCOV
  19. select ARCH_HAS_PTE_SPECIAL
  20. select ARCH_HAS_SET_MEMORY
  21. select ARCH_HAS_SG_CHAIN
  22. select ARCH_HAS_STRICT_KERNEL_RWX
  23. select ARCH_HAS_STRICT_MODULE_RWX
  24. select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
  25. select ARCH_HAVE_NMI_SAFE_CMPXCHG if ACPI_APEI_SEA
  26. select ARCH_USE_CMPXCHG_LOCKREF
  27. select ARCH_SUPPORTS_MEMORY_FAILURE
  28. select ARCH_SUPPORTS_LTO_CLANG
  29. select ARCH_SUPPORTS_THINLTO
  30. select ARCH_SUPPORTS_SHADOW_CALL_STACK
  31. select ARCH_SUPPORTS_ATOMIC_RMW
  32. select ARCH_SUPPORTS_NUMA_BALANCING
  33. select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
  34. select ARCH_WANT_FRAME_POINTERS
  35. select ARCH_HAS_UBSAN_SANITIZE_ALL
  36. select ARM_AMBA
  37. select ARM_ARCH_TIMER
  38. select ARM_GIC
  39. select AUDIT_ARCH_COMPAT_GENERIC
  40. select ARM_GIC_V2M if PCI
  41. select ARM_GIC_V3
  42. select ARM_GIC_V3_ITS if PCI
  43. select ARM_PSCI_FW
  44. select BUILDTIME_EXTABLE_SORT
  45. select CLONE_BACKWARDS
  46. select COMMON_CLK
  47. select CPU_PM if (SUSPEND || CPU_IDLE)
  48. select DCACHE_WORD_ACCESS
  49. select EDAC_SUPPORT
  50. select FRAME_POINTER
  51. select GENERIC_ALLOCATOR
  52. select GENERIC_ARCH_TOPOLOGY
  53. select GENERIC_CLOCKEVENTS
  54. select GENERIC_CLOCKEVENTS_BROADCAST
  55. select GENERIC_CPU_AUTOPROBE
  56. select GENERIC_CPU_VULNERABILITIES
  57. select GENERIC_EARLY_IOREMAP
  58. select GENERIC_IDLE_POLL_SETUP
  59. select GENERIC_IRQ_PROBE
  60. select GENERIC_IRQ_SHOW
  61. select GENERIC_IRQ_SHOW_LEVEL
  62. select GENERIC_PCI_IOMAP
  63. select GENERIC_SCHED_CLOCK
  64. select GENERIC_SMP_IDLE_THREAD
  65. select GENERIC_STRNCPY_FROM_USER
  66. select GENERIC_STRNLEN_USER
  67. select GENERIC_TIME_VSYSCALL
  68. select HANDLE_DOMAIN_IRQ
  69. select HARDIRQS_SW_RESEND
  70. select HAVE_ACPI_APEI if (ACPI && EFI)
  71. select HAVE_ALIGNED_STRUCT_PAGE if SLUB
  72. select HAVE_ARCH_AUDITSYSCALL
  73. select HAVE_ARCH_BITREVERSE
  74. select HAVE_ARCH_HUGE_VMAP
  75. select HAVE_ARCH_JUMP_LABEL
  76. select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
  77. select HAVE_ARCH_KASAN_SW_TAGS if HAVE_ARCH_KASAN
  78. select HAVE_ARCH_KGDB
  79. select HAVE_ARCH_MMAP_RND_BITS
  80. select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
  81. select HAVE_ARCH_SECCOMP_FILTER
  82. select HAVE_ARCH_TRACEHOOK
  83. select HAVE_ARCH_TRANSPARENT_HUGEPAGE
  84. select HAVE_ARCH_VMAP_STACK
  85. select HAVE_ARM_SMCCC
  86. select HAVE_EBPF_JIT
  87. select HAVE_C_RECORDMCOUNT
  88. select HAVE_CC_STACKPROTECTOR
  89. select HAVE_CMPXCHG_DOUBLE
  90. select HAVE_CMPXCHG_LOCAL
  91. select HAVE_CONTEXT_TRACKING
  92. select HAVE_DEBUG_BUGVERBOSE
  93. select HAVE_DEBUG_KMEMLEAK
  94. select HAVE_DMA_API_DEBUG
  95. select HAVE_DMA_CONTIGUOUS
  96. select HAVE_DYNAMIC_FTRACE
  97. select HAVE_EFFICIENT_UNALIGNED_ACCESS
  98. select HAVE_FTRACE_MCOUNT_RECORD
  99. select HAVE_FUNCTION_TRACER
  100. select HAVE_FUNCTION_GRAPH_TRACER if !SHADOW_CALL_STACK
  101. select HAVE_GCC_PLUGINS
  102. select HAVE_GENERIC_DMA_COHERENT
  103. select HAVE_HW_BREAKPOINT if PERF_EVENTS
  104. select HAVE_IRQ_TIME_ACCOUNTING
  105. select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
  106. select HAVE_MEMBLOCK
  107. select HAVE_MEMBLOCK_NODE_MAP if NUMA
  108. select HAVE_NMI if ACPI_APEI_SEA
  109. select HAVE_PATA_PLATFORM
  110. select HAVE_PERF_EVENTS
  111. select HAVE_PERF_REGS
  112. select HAVE_PERF_USER_STACK_DUMP
  113. select HAVE_REGS_AND_STACK_ACCESS_API
  114. select HAVE_RCU_TABLE_FREE
  115. select HAVE_SYSCALL_TRACEPOINTS
  116. select HAVE_KPROBES
  117. select HAVE_KRETPROBES
  118. select IOMMU_DMA if IOMMU_SUPPORT
  119. select IRQ_DOMAIN
  120. select IRQ_FORCED_THREADING
  121. select MODULES_USE_ELF_RELA
  122. select NO_BOOTMEM
  123. select OF
  124. select OF_EARLY_FLATTREE
  125. select OF_RESERVED_MEM
  126. select PCI_ECAM if ACPI
  127. select POWER_RESET
  128. select POWER_SUPPLY
  129. select SPARSE_IRQ
  130. select SYSCTL_EXCEPTION_TRACE
  131. select THREAD_INFO_IN_TASK
  132. select ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT
  133. select ARCH_INLINE_SPIN_TRYLOCK
  134. select ARCH_INLINE_SPIN_TRYLOCK_BH
  135. select ARCH_INLINE_SPIN_LOCK
  136. select ARCH_INLINE_SPIN_LOCK_BH
  137. select ARCH_INLINE_SPIN_LOCK_IRQ
  138. select ARCH_INLINE_SPIN_LOCK_IRQSAVE
  139. select ARCH_INLINE_SPIN_UNLOCK
  140. select ARCH_INLINE_SPIN_UNLOCK_BH
  141. select ARCH_INLINE_SPIN_UNLOCK_IRQ
  142. select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
  143. select ARCH_INLINE_READ_TRYLOCK
  144. select ARCH_INLINE_READ_LOCK
  145. select ARCH_INLINE_READ_LOCK_BH
  146. select ARCH_INLINE_READ_LOCK_IRQ
  147. select ARCH_INLINE_READ_LOCK_IRQSAVE
  148. select ARCH_INLINE_READ_UNLOCK
  149. select ARCH_INLINE_READ_UNLOCK_BH
  150. select ARCH_INLINE_READ_UNLOCK_IRQ
  151. select ARCH_INLINE_READ_UNLOCK_IRQRESTORE
  152. select ARCH_INLINE_WRITE_TRYLOCK
  153. select ARCH_INLINE_WRITE_LOCK
  154. select ARCH_INLINE_WRITE_LOCK_BH
  155. select ARCH_INLINE_WRITE_LOCK_IRQ
  156. select ARCH_INLINE_WRITE_LOCK_IRQSAVE
  157. select ARCH_INLINE_WRITE_UNLOCK
  158. select ARCH_INLINE_WRITE_UNLOCK_BH
  159. select ARCH_INLINE_WRITE_UNLOCK_IRQ
  160. select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
  161. help
  162. ARM 64-bit (AArch64) Linux support.
  163. config 64BIT
  164. def_bool y
  165. config ARCH_PHYS_ADDR_T_64BIT
  166. def_bool y
  167. config MMU
  168. def_bool y
  169. config ARM64_PAGE_SHIFT
  170. int
  171. default 16 if ARM64_64K_PAGES
  172. default 14 if ARM64_16K_PAGES
  173. default 12
  174. config ARM64_CONT_SHIFT
  175. int
  176. default 5 if ARM64_64K_PAGES
  177. default 7 if ARM64_16K_PAGES
  178. default 4
  179. config ARCH_MMAP_RND_BITS_MIN
  180. default 14 if ARM64_64K_PAGES
  181. default 16 if ARM64_16K_PAGES
  182. default 18
  183. # max bits determined by the following formula:
  184. # VA_BITS - PAGE_SHIFT - 3
  185. config ARCH_MMAP_RND_BITS_MAX
  186. default 19 if ARM64_VA_BITS=36
  187. default 24 if ARM64_VA_BITS=39
  188. default 27 if ARM64_VA_BITS=42
  189. default 30 if ARM64_VA_BITS=47
  190. default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES
  191. default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES
  192. default 33 if ARM64_VA_BITS=48
  193. default 14 if ARM64_64K_PAGES
  194. default 16 if ARM64_16K_PAGES
  195. default 18
  196. config ARCH_MMAP_RND_COMPAT_BITS_MIN
  197. default 7 if ARM64_64K_PAGES
  198. default 9 if ARM64_16K_PAGES
  199. default 11
  200. config ARCH_MMAP_RND_COMPAT_BITS_MAX
  201. default 16
  202. config NO_IOPORT_MAP
  203. def_bool y if !PCI
  204. config STACKTRACE_SUPPORT
  205. def_bool y
  206. config ILLEGAL_POINTER_VALUE
  207. hex
  208. default 0xdead000000000000
  209. config LOCKDEP_SUPPORT
  210. def_bool y
  211. config TRACE_IRQFLAGS_SUPPORT
  212. def_bool y
  213. config RWSEM_XCHGADD_ALGORITHM
  214. def_bool y
  215. config GENERIC_BUG
  216. def_bool y
  217. depends on BUG
  218. config GENERIC_BUG_RELATIVE_POINTERS
  219. def_bool y
  220. depends on GENERIC_BUG
  221. config GENERIC_HWEIGHT
  222. def_bool y
  223. config GENERIC_CSUM
  224. def_bool y
  225. config GENERIC_CALIBRATE_DELAY
  226. def_bool y
  227. config ZONE_DMA
  228. bool "Support DMA zone" if EXPERT
  229. default y
  230. config HAVE_GENERIC_GUP
  231. def_bool y
  232. config ARCH_DMA_ADDR_T_64BIT
  233. def_bool y
  234. config NEED_DMA_MAP_STATE
  235. def_bool y
  236. config NEED_SG_DMA_LENGTH
  237. def_bool y
  238. config SMP
  239. def_bool y
  240. config SWIOTLB
  241. def_bool y
  242. config IOMMU_HELPER
  243. def_bool SWIOTLB
  244. config KERNEL_MODE_NEON
  245. def_bool y
  246. config FIX_EARLYCON_MEM
  247. def_bool y
  248. config PGTABLE_LEVELS
  249. int
  250. default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36
  251. default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
  252. default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
  253. default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
  254. default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
  255. default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
  256. config ARCH_SUPPORTS_UPROBES
  257. def_bool y
  258. config ARCH_PROC_KCORE_TEXT
  259. def_bool y
  260. source "init/Kconfig"
  261. source "kernel/Kconfig.freezer"
  262. source "arch/arm64/Kconfig.platforms"
  263. menu "Bus support"
  264. config PCI
  265. bool "PCI support"
  266. help
  267. This feature enables support for PCI bus system. If you say Y
  268. here, the kernel will include drivers and infrastructure code
  269. to support PCI bus devices.
  270. config PCI_DOMAINS
  271. def_bool PCI
  272. config PCI_DOMAINS_GENERIC
  273. def_bool PCI
  274. config PCI_SYSCALL
  275. def_bool PCI
  276. source "drivers/pci/Kconfig"
  277. endmenu
  278. menu "Kernel Features"
  279. menu "ARM errata workarounds via the alternatives framework"
  280. config ARM64_ERRATUM_826319
  281. bool "Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted"
  282. default y
  283. help
  284. This option adds an alternative code sequence to work around ARM
  285. erratum 826319 on Cortex-A53 parts up to r0p2 with an AMBA 4 ACE or
  286. AXI master interface and an L2 cache.
  287. If a Cortex-A53 uses an AMBA AXI4 ACE interface to other processors
  288. and is unable to accept a certain write via this interface, it will
  289. not progress on read data presented on the read data channel and the
  290. system can deadlock.
  291. The workaround promotes data cache clean instructions to
  292. data cache clean-and-invalidate.
  293. Please note that this does not necessarily enable the workaround,
  294. as it depends on the alternative framework, which will only patch
  295. the kernel if an affected CPU is detected.
  296. If unsure, say Y.
  297. config ARM64_ERRATUM_827319
  298. bool "Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect"
  299. default y
  300. help
  301. This option adds an alternative code sequence to work around ARM
  302. erratum 827319 on Cortex-A53 parts up to r0p2 with an AMBA 5 CHI
  303. master interface and an L2 cache.
  304. Under certain conditions this erratum can cause a clean line eviction
  305. to occur at the same time as another transaction to the same address
  306. on the AMBA 5 CHI interface, which can cause data corruption if the
  307. interconnect reorders the two transactions.
  308. The workaround promotes data cache clean instructions to
  309. data cache clean-and-invalidate.
  310. Please note that this does not necessarily enable the workaround,
  311. as it depends on the alternative framework, which will only patch
  312. the kernel if an affected CPU is detected.
  313. If unsure, say Y.
  314. config ARM64_ERRATUM_824069
  315. bool "Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop"
  316. default y
  317. help
  318. This option adds an alternative code sequence to work around ARM
  319. erratum 824069 on Cortex-A53 parts up to r0p2 when it is connected
  320. to a coherent interconnect.
  321. If a Cortex-A53 processor is executing a store or prefetch for
  322. write instruction at the same time as a processor in another
  323. cluster is executing a cache maintenance operation to the same
  324. address, then this erratum might cause a clean cache line to be
  325. incorrectly marked as dirty.
  326. The workaround promotes data cache clean instructions to
  327. data cache clean-and-invalidate.
  328. Please note that this option does not necessarily enable the
  329. workaround, as it depends on the alternative framework, which will
  330. only patch the kernel if an affected CPU is detected.
  331. If unsure, say Y.
  332. config ARM64_ERRATUM_819472
  333. bool "Cortex-A53: 819472: Store exclusive instructions might cause data corruption"
  334. default y
  335. help
  336. This option adds an alternative code sequence to work around ARM
  337. erratum 819472 on Cortex-A53 parts up to r0p1 with an L2 cache
  338. present when it is connected to a coherent interconnect.
  339. If the processor is executing a load and store exclusive sequence at
  340. the same time as a processor in another cluster is executing a cache
  341. maintenance operation to the same address, then this erratum might
  342. cause data corruption.
  343. The workaround promotes data cache clean instructions to
  344. data cache clean-and-invalidate.
  345. Please note that this does not necessarily enable the workaround,
  346. as it depends on the alternative framework, which will only patch
  347. the kernel if an affected CPU is detected.
  348. If unsure, say Y.
  349. config ARM64_ERRATUM_832075
  350. bool "Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads"
  351. default y
  352. help
  353. This option adds an alternative code sequence to work around ARM
  354. erratum 832075 on Cortex-A57 parts up to r1p2.
  355. Affected Cortex-A57 parts might deadlock when exclusive load/store
  356. instructions to Write-Back memory are mixed with Device loads.
  357. The workaround is to promote device loads to use Load-Acquire
  358. semantics.
  359. Please note that this does not necessarily enable the workaround,
  360. as it depends on the alternative framework, which will only patch
  361. the kernel if an affected CPU is detected.
  362. If unsure, say Y.
  363. config ARM64_ERRATUM_834220
  364. bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault"
  365. depends on KVM
  366. default y
  367. help
  368. This option adds an alternative code sequence to work around ARM
  369. erratum 834220 on Cortex-A57 parts up to r1p2.
  370. Affected Cortex-A57 parts might report a Stage 2 translation
  371. fault as the result of a Stage 1 fault for load crossing a
  372. page boundary when there is a permission or device memory
  373. alignment fault at Stage 1 and a translation fault at Stage 2.
  374. The workaround is to verify that the Stage 1 translation
  375. doesn't generate a fault before handling the Stage 2 fault.
  376. Please note that this does not necessarily enable the workaround,
  377. as it depends on the alternative framework, which will only patch
  378. the kernel if an affected CPU is detected.
  379. If unsure, say Y.
  380. config ARM64_ERRATUM_845719
  381. bool "Cortex-A53: 845719: a load might read incorrect data"
  382. depends on COMPAT
  383. default y
  384. help
  385. This option adds an alternative code sequence to work around ARM
  386. erratum 845719 on Cortex-A53 parts up to r0p4.
  387. When running a compat (AArch32) userspace on an affected Cortex-A53
  388. part, a load at EL0 from a virtual address that matches the bottom 32
  389. bits of the virtual address used by a recent load at (AArch64) EL1
  390. might return incorrect data.
  391. The workaround is to write the contextidr_el1 register on exception
  392. return to a 32-bit task.
  393. Please note that this does not necessarily enable the workaround,
  394. as it depends on the alternative framework, which will only patch
  395. the kernel if an affected CPU is detected.
  396. If unsure, say Y.
  397. config ARM64_ERRATUM_843419
  398. bool "Cortex-A53: 843419: A load or store might access an incorrect address"
  399. select ARM64_MODULE_CMODEL_LARGE if MODULES
  400. help
  401. This option links the kernel with '--fix-cortex-a53-843419' and
  402. builds modules using the large memory model in order to avoid the use
  403. of the ADRP instruction, which can cause a subsequent memory access
  404. to use an incorrect address on Cortex-A53 parts up to r0p4.
  405. If unsure, say Y.
  406. config ARM64_ERRATUM_1024718
  407. bool "Cortex-A55: 1024718: Update of DBM/AP bits without break before make might result in incorrect update"
  408. default y
  409. help
  410. This option adds work around for Arm Cortex-A55 Erratum 1024718.
  411. Affected Cortex-A55 cores (r0p0, r0p1, r1p0) could cause incorrect
  412. update of the hardware dirty bit when the DBM/AP bits are updated
  413. without a break-before-make. The work around is to disable the usage
  414. of hardware DBM locally on the affected cores. CPUs not affected by
  415. erratum will continue to use the feature.
  416. If unsure, say Y.
  417. config ARM64_ERRATUM_1542418
  418. bool "Cortex-A77: 1542418: The core might fetch a stale instruction from the L0 Macro-op"
  419. default n
  420. help
  421. This option adds work around for Arm Cortex-A77 Erratum 1542418.
  422. Affected Cortex-A77 cores (r0p0, r1p0) could cause the core might
  423. fetch a stale instructions from the L0 Macro-op cache which violates
  424. the ordefing of instruction fetches.
  425. config CAVIUM_ERRATUM_22375
  426. bool "Cavium erratum 22375, 24313"
  427. default y
  428. help
  429. Enable workaround for erratum 22375, 24313.
  430. This implements two gicv3-its errata workarounds for ThunderX. Both
  431. with small impact affecting only ITS table allocation.
  432. erratum 22375: only alloc 8MB table size
  433. erratum 24313: ignore memory access type
  434. The fixes are in ITS initialization and basically ignore memory access
  435. type and table size provided by the TYPER and BASER registers.
  436. If unsure, say Y.
  437. config CAVIUM_ERRATUM_23144
  438. bool "Cavium erratum 23144: ITS SYNC hang on dual socket system"
  439. depends on NUMA
  440. default y
  441. help
  442. ITS SYNC command hang for cross node io and collections/cpu mapping.
  443. If unsure, say Y.
  444. config CAVIUM_ERRATUM_23154
  445. bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed"
  446. default y
  447. help
  448. The gicv3 of ThunderX requires a modified version for
  449. reading the IAR status to ensure data synchronization
  450. (access to icc_iar1_el1 is not sync'ed before and after).
  451. If unsure, say Y.
  452. config CAVIUM_ERRATUM_27456
  453. bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption"
  454. default y
  455. help
  456. On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI
  457. instructions may cause the icache to become corrupted if it
  458. contains data for a non-current ASID. The fix is to
  459. invalidate the icache when changing the mm context.
  460. If unsure, say Y.
  461. config CAVIUM_ERRATUM_30115
  462. bool "Cavium erratum 30115: Guest may disable interrupts in host"
  463. default y
  464. help
  465. On ThunderX T88 pass 1.x through 2.2, T81 pass 1.0 through
  466. 1.2, and T83 Pass 1.0, KVM guest execution may disable
  467. interrupts in host. Trapping both GICv3 group-0 and group-1
  468. accesses sidesteps the issue.
  469. If unsure, say Y.
  470. config QCOM_FALKOR_ERRATUM_1003
  471. bool "Falkor E1003: Incorrect translation due to ASID change"
  472. default y
  473. help
  474. On Falkor v1, an incorrect ASID may be cached in the TLB when ASID
  475. and BADDR are changed together in TTBRx_EL1. Since we keep the ASID
  476. in TTBR1_EL1, this situation only occurs in the entry trampoline and
  477. then only for entries in the walk cache, since the leaf translation
  478. is unchanged. Work around the erratum by invalidating the walk cache
  479. entries for the trampoline before entering the kernel proper.
  480. config QCOM_FALKOR_ERRATUM_1009
  481. bool "Falkor E1009: Prematurely complete a DSB after a TLBI"
  482. default y
  483. help
  484. On Falkor v1, the CPU may prematurely complete a DSB following a
  485. TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation
  486. one more time to fix the issue.
  487. If unsure, say Y.
  488. config QCOM_QDF2400_ERRATUM_0065
  489. bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size"
  490. default y
  491. help
  492. On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports
  493. ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have
  494. been indicated as 16Bytes (0xf), not 8Bytes (0x7).
  495. If unsure, say Y.
  496. config QCOM_FALKOR_ERRATUM_E1041
  497. bool "Falkor E1041: Speculative instruction fetches might cause errant memory access"
  498. default y
  499. help
  500. Falkor CPU may speculatively fetch instructions from an improper
  501. memory location when MMU translation is changed from SCTLR_ELn[M]=1
  502. to SCTLR_ELn[M]=0. Prefix an ISB instruction to fix the problem.
  503. If unsure, say Y.
  504. endmenu
  505. choice
  506. prompt "Page size"
  507. default ARM64_4K_PAGES
  508. help
  509. Page size (translation granule) configuration.
  510. config ARM64_4K_PAGES
  511. bool "4KB"
  512. help
  513. This feature enables 4KB pages support.
  514. config ARM64_16K_PAGES
  515. bool "16KB"
  516. help
  517. The system will use 16KB pages support. AArch32 emulation
  518. requires applications compiled with 16K (or a multiple of 16K)
  519. aligned segments.
  520. config ARM64_64K_PAGES
  521. bool "64KB"
  522. help
  523. This feature enables 64KB pages support (4KB by default)
  524. allowing only two levels of page tables and faster TLB
  525. look-up. AArch32 emulation requires applications compiled
  526. with 64K aligned segments.
  527. endchoice
  528. choice
  529. prompt "Virtual address space size"
  530. default ARM64_VA_BITS_39 if ARM64_4K_PAGES
  531. default ARM64_VA_BITS_47 if ARM64_16K_PAGES
  532. default ARM64_VA_BITS_42 if ARM64_64K_PAGES
  533. help
  534. Allows choosing one of multiple possible virtual address
  535. space sizes. The level of translation table is determined by
  536. a combination of page size and virtual address space size.
  537. config ARM64_VA_BITS_36
  538. bool "36-bit" if EXPERT
  539. depends on ARM64_16K_PAGES
  540. config ARM64_VA_BITS_39
  541. bool "39-bit"
  542. depends on ARM64_4K_PAGES
  543. config ARM64_VA_BITS_42
  544. bool "42-bit"
  545. depends on ARM64_64K_PAGES
  546. config ARM64_VA_BITS_47
  547. bool "47-bit"
  548. depends on ARM64_16K_PAGES
  549. config ARM64_VA_BITS_48
  550. bool "48-bit"
  551. endchoice
  552. config ARM64_VA_BITS
  553. int
  554. default 36 if ARM64_VA_BITS_36
  555. default 39 if ARM64_VA_BITS_39
  556. default 42 if ARM64_VA_BITS_42
  557. default 47 if ARM64_VA_BITS_47
  558. default 48 if ARM64_VA_BITS_48
  559. config CPU_BIG_ENDIAN
  560. bool "Build big-endian kernel"
  561. help
  562. Say Y if you plan on running a kernel in big-endian mode.
  563. config SCHED_MC
  564. bool "Multi-core scheduler support"
  565. help
  566. Multi-core scheduler support improves the CPU scheduler's decision
  567. making when dealing with multi-core CPU chips at a cost of slightly
  568. increased overhead in some places. If unsure say N here.
  569. config SCHED_SMT
  570. bool "SMT scheduler support"
  571. help
  572. Improves the CPU scheduler's decision making when dealing with
  573. MultiThreading at a cost of slightly increased overhead in some
  574. places. If unsure say N here.
  575. config NR_CPUS
  576. int "Maximum number of CPUs (2-4096)"
  577. range 2 4096
  578. # These have to remain sorted largest to smallest
  579. default "64"
  580. config HOTPLUG_CPU
  581. bool "Support for hot-pluggable CPUs"
  582. select GENERIC_IRQ_MIGRATION
  583. help
  584. Say Y here to experiment with turning CPUs off and on. CPUs
  585. can be controlled through /sys/devices/system/cpu.
  586. # Common NUMA Features
  587. config NUMA
  588. bool "Numa Memory Allocation and Scheduler Support"
  589. select ACPI_NUMA if ACPI
  590. select OF_NUMA
  591. help
  592. Enable NUMA (Non Uniform Memory Access) support.
  593. The kernel will try to allocate memory used by a CPU on the
  594. local memory of the CPU and add some more
  595. NUMA awareness to the kernel.
  596. config NODES_SHIFT
  597. int "Maximum NUMA Nodes (as a power of 2)"
  598. range 1 10
  599. default "2"
  600. depends on NEED_MULTIPLE_NODES
  601. help
  602. Specify the maximum number of NUMA Nodes available on the target
  603. system. Increases memory reserved to accommodate various tables.
  604. config USE_PERCPU_NUMA_NODE_ID
  605. def_bool y
  606. depends on NUMA
  607. config HAVE_SETUP_PER_CPU_AREA
  608. def_bool y
  609. depends on NUMA
  610. config NEED_PER_CPU_EMBED_FIRST_CHUNK
  611. def_bool y
  612. depends on NUMA
  613. config HOLES_IN_ZONE
  614. def_bool y
  615. source kernel/Kconfig.preempt
  616. source kernel/Kconfig.hz
  617. config ARCH_SUPPORTS_DEBUG_PAGEALLOC
  618. def_bool y
  619. config ARCH_HAS_HOLES_MEMORYMODEL
  620. def_bool y if SPARSEMEM
  621. config ARCH_SPARSEMEM_ENABLE
  622. def_bool y
  623. select SPARSEMEM_VMEMMAP_ENABLE
  624. config ARCH_SPARSEMEM_DEFAULT
  625. def_bool ARCH_SPARSEMEM_ENABLE
  626. config ARCH_SELECT_MEMORY_MODEL
  627. def_bool ARCH_SPARSEMEM_ENABLE
  628. config HAVE_ARCH_PFN_VALID
  629. def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
  630. config HW_PERF_EVENTS
  631. def_bool y
  632. depends on ARM_PMU
  633. config SYS_SUPPORTS_HUGETLBFS
  634. def_bool y
  635. config ARCH_WANT_HUGE_PMD_SHARE
  636. def_bool y if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36)
  637. config ARCH_HAS_CACHE_LINE_SIZE
  638. def_bool y
  639. source "mm/Kconfig"
  640. config SECCOMP
  641. bool "Enable seccomp to safely compute untrusted bytecode"
  642. ---help---
  643. This kernel feature is useful for number crunching applications
  644. that may need to compute untrusted bytecode during their
  645. execution. By using pipes or other transports made available to
  646. the process as file descriptors supporting the read/write
  647. syscalls, it's possible to isolate those applications in
  648. their own address space using seccomp. Once seccomp is
  649. enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
  650. and the task is only allowed to execute a few safe syscalls
  651. defined by each seccomp mode.
  652. config PARAVIRT
  653. bool "Enable paravirtualization code"
  654. help
  655. This changes the kernel so it can modify itself when it is run
  656. under a hypervisor, potentially improving performance significantly
  657. over full virtualization.
  658. config PARAVIRT_TIME_ACCOUNTING
  659. bool "Paravirtual steal time accounting"
  660. select PARAVIRT
  661. default n
  662. help
  663. Select this option to enable fine granularity task steal time
  664. accounting. Time spent executing other tasks in parallel with
  665. the current vCPU is discounted from the vCPU power. To account for
  666. that, there can be a small performance impact.
  667. If in doubt, say N here.
  668. config KEXEC
  669. depends on PM_SLEEP_SMP
  670. select KEXEC_CORE
  671. bool "kexec system call"
  672. ---help---
  673. kexec is a system call that implements the ability to shutdown your
  674. current kernel, and to start another kernel. It is like a reboot
  675. but it is independent of the system firmware. And like a reboot
  676. you can start any kernel with it, not just Linux.
  677. config CRASH_DUMP
  678. bool "Build kdump crash kernel"
  679. help
  680. Generate crash dump after being started by kexec. This should
  681. be normally only set in special crash dump kernels which are
  682. loaded in the main kernel with kexec-tools into a specially
  683. reserved region and then later executed after a crash by
  684. kdump/kexec.
  685. For more details see Documentation/kdump/kdump.txt
  686. config XEN_DOM0
  687. def_bool y
  688. depends on XEN
  689. config XEN
  690. bool "Xen guest support on ARM64"
  691. depends on ARM64 && OF
  692. select SWIOTLB_XEN
  693. select PARAVIRT
  694. help
  695. Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
  696. config FORCE_MAX_ZONEORDER
  697. int
  698. default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
  699. default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
  700. default "11"
  701. help
  702. The kernel memory allocator divides physically contiguous memory
  703. blocks into "zones", where each zone is a power of two number of
  704. pages. This option selects the largest power of two that the kernel
  705. keeps in the memory allocator. If you need to allocate very large
  706. blocks of physically contiguous memory, then you may need to
  707. increase this value.
  708. This config option is actually maximum order plus one. For example,
  709. a value of 11 means that the largest free memory block is 2^10 pages.
  710. We make sure that we can allocate upto a HugePage size for each configuration.
  711. Hence we have :
  712. MAX_ORDER = (PMD_SHIFT - PAGE_SHIFT) + 1 => PAGE_SHIFT - 2
  713. However for 4K, we choose a higher default value, 11 as opposed to 10, giving us
  714. 4M allocations matching the default size used by generic code.
  715. config UNMAP_KERNEL_AT_EL0
  716. bool "Unmap kernel when running in userspace (aka \"KAISER\")" if EXPERT
  717. default y
  718. help
  719. Speculation attacks against some high-performance processors can
  720. be used to bypass MMU permission checks and leak kernel data to
  721. userspace. This can be defended against by unmapping the kernel
  722. when running in userspace, mapping it back in on exception entry
  723. via a trampoline page in the vector table.
  724. If unsure, say Y.
  725. config HARDEN_BRANCH_PREDICTOR
  726. bool "Harden the branch predictor against aliasing attacks" if EXPERT
  727. default y
  728. help
  729. Speculation attacks against some high-performance processors rely on
  730. being able to manipulate the branch predictor for a victim context by
  731. executing aliasing branches in the attacker context. Such attacks
  732. can be partially mitigated against by clearing internal branch
  733. predictor state and limiting the prediction logic in some situations.
  734. This config option will take CPU-specific actions to harden the
  735. branch predictor against aliasing attacks and may rely on specific
  736. instruction sequences or control bits being set by the system
  737. firmware.
  738. If unsure, say Y.
  739. config ARM64_SSBD
  740. bool "Speculative Store Bypass Disable" if EXPERT
  741. default y
  742. help
  743. This enables mitigation of the bypassing of previous stores
  744. by speculative loads.
  745. If unsure, say Y.
  746. config ARM64_TAGGED_ADDR_ABI
  747. bool "Enable the tagged user addresses syscall ABI"
  748. default y
  749. help
  750. When this option is enabled, user applications can opt in to a
  751. relaxed ABI via prctl() allowing tagged addresses to be passed
  752. to system calls as pointer arguments. For details, see
  753. Documentation/arm64/tagged-address-abi.rst.
  754. menuconfig ARMV8_DEPRECATED
  755. bool "Emulate deprecated/obsolete ARMv8 instructions"
  756. depends on COMPAT
  757. help
  758. Legacy software support may require certain instructions
  759. that have been deprecated or obsoleted in the architecture.
  760. Enable this config to enable selective emulation of these
  761. features.
  762. If unsure, say Y
  763. if ARMV8_DEPRECATED
  764. config SWP_EMULATION
  765. bool "Emulate SWP/SWPB instructions"
  766. help
  767. ARMv8 obsoletes the use of A32 SWP/SWPB instructions such that
  768. they are always undefined. Say Y here to enable software
  769. emulation of these instructions for userspace using LDXR/STXR.
  770. In some older versions of glibc [<=2.8] SWP is used during futex
  771. trylock() operations with the assumption that the code will not
  772. be preempted. This invalid assumption may be more likely to fail
  773. with SWP emulation enabled, leading to deadlock of the user
  774. application.
  775. NOTE: when accessing uncached shared regions, LDXR/STXR rely
  776. on an external transaction monitoring block called a global
  777. monitor to maintain update atomicity. If your system does not
  778. implement a global monitor, this option can cause programs that
  779. perform SWP operations to uncached memory to deadlock.
  780. If unsure, say Y
  781. config CP15_BARRIER_EMULATION
  782. bool "Emulate CP15 Barrier instructions"
  783. help
  784. The CP15 barrier instructions - CP15ISB, CP15DSB, and
  785. CP15DMB - are deprecated in ARMv8 (and ARMv7). It is
  786. strongly recommended to use the ISB, DSB, and DMB
  787. instructions instead.
  788. Say Y here to enable software emulation of these
  789. instructions for AArch32 userspace code. When this option is
  790. enabled, CP15 barrier usage is traced which can help
  791. identify software that needs updating.
  792. If unsure, say Y
  793. config SETEND_EMULATION
  794. bool "Emulate SETEND instruction"
  795. help
  796. The SETEND instruction alters the data-endianness of the
  797. AArch32 EL0, and is deprecated in ARMv8.
  798. Say Y here to enable software emulation of the instruction
  799. for AArch32 userspace code.
  800. Note: All the cpus on the system must have mixed endian support at EL0
  801. for this feature to be enabled. If a new CPU - which doesn't support mixed
  802. endian - is hotplugged in after this feature has been enabled, there could
  803. be unexpected results in the applications.
  804. If unsure, say Y
  805. endif
  806. config ARM64_SW_TTBR0_PAN
  807. bool "Emulate Privileged Access Never using TTBR0_EL1 switching"
  808. help
  809. Enabling this option prevents the kernel from accessing
  810. user-space memory directly by pointing TTBR0_EL1 to a reserved
  811. zeroed area and reserved ASID. The user access routines
  812. restore the valid TTBR0_EL1 temporarily.
  813. menu "ARMv8.1 architectural features"
  814. config ARM64_HW_AFDBM
  815. bool "Support for hardware updates of the Access and Dirty page flags"
  816. default y
  817. help
  818. The ARMv8.1 architecture extensions introduce support for
  819. hardware updates of the access and dirty information in page
  820. table entries. When enabled in TCR_EL1 (HA and HD bits) on
  821. capable processors, accesses to pages with PTE_AF cleared will
  822. set this bit instead of raising an access flag fault.
  823. Similarly, writes to read-only pages with the DBM bit set will
  824. clear the read-only bit (AP[2]) instead of raising a
  825. permission fault.
  826. Kernels built with this configuration option enabled continue
  827. to work on pre-ARMv8.1 hardware and the performance impact is
  828. minimal. If unsure, say Y.
  829. config ARM64_PAN
  830. bool "Enable support for Privileged Access Never (PAN)"
  831. default y
  832. help
  833. Privileged Access Never (PAN; part of the ARMv8.1 Extensions)
  834. prevents the kernel or hypervisor from accessing user-space (EL0)
  835. memory directly.
  836. Choosing this option will cause any unprotected (not using
  837. copy_to_user et al) memory access to fail with a permission fault.
  838. The feature is detected at runtime, and will remain as a 'nop'
  839. instruction if the cpu does not implement the feature.
  840. config ARM64_LSE_ATOMICS
  841. bool "Atomic instructions"
  842. help
  843. As part of the Large System Extensions, ARMv8.1 introduces new
  844. atomic instructions that are designed specifically to scale in
  845. very large systems.
  846. Say Y here to make use of these instructions for the in-kernel
  847. atomic routines. This incurs a small overhead on CPUs that do
  848. not support these instructions and requires the kernel to be
  849. built with binutils >= 2.25.
  850. config ARM64_VHE
  851. bool "Enable support for Virtualization Host Extensions (VHE)"
  852. default n
  853. help
  854. Virtualization Host Extensions (VHE) allow the kernel to run
  855. directly at EL2 (instead of EL1) on processors that support
  856. it. This leads to better performance for KVM, as they reduce
  857. the cost of the world switch.
  858. Selecting this option allows the VHE feature to be detected
  859. at runtime, and does not affect processors that do not
  860. implement this feature.
  861. endmenu
  862. menu "ARMv8.2 architectural features"
  863. config ARM64_UAO
  864. bool "Enable support for User Access Override (UAO)"
  865. default y
  866. help
  867. User Access Override (UAO; part of the ARMv8.2 Extensions)
  868. causes the 'unprivileged' variant of the load/store instructions to
  869. be overriden to be privileged.
  870. This option changes get_user() and friends to use the 'unprivileged'
  871. variant of the load/store instructions. This ensures that user-space
  872. really did have access to the supplied memory. When addr_limit is
  873. set to kernel memory the UAO bit will be set, allowing privileged
  874. access to kernel memory.
  875. Choosing this option will cause copy_to_user() et al to use user-space
  876. memory permissions.
  877. The feature is detected at runtime, the kernel will use the
  878. regular load/store instructions if the cpu does not implement the
  879. feature.
  880. config ARM64_PMEM
  881. bool "Enable support for persistent memory"
  882. select ARCH_HAS_PMEM_API
  883. select ARCH_HAS_UACCESS_FLUSHCACHE
  884. help
  885. Say Y to enable support for the persistent memory API based on the
  886. ARMv8.2 DCPoP feature.
  887. The feature is detected at runtime, and the kernel will use DC CVAC
  888. operations if DC CVAP is not supported (following the behaviour of
  889. DC CVAP itself if the system does not define a point of persistence).
  890. endmenu
  891. config ARM64_MODULE_CMODEL_LARGE
  892. bool
  893. config ARM64_MODULE_PLTS
  894. bool
  895. select ARM64_MODULE_CMODEL_LARGE
  896. select HAVE_MOD_ARCH_SPECIFIC
  897. config RELOCATABLE
  898. bool
  899. select ARCH_HAS_RELR
  900. help
  901. This builds the kernel as a Position Independent Executable (PIE),
  902. which retains all relocation metadata required to relocate the
  903. kernel binary at runtime to a different virtual address than the
  904. address it was linked at.
  905. Since AArch64 uses the RELA relocation format, this requires a
  906. relocation pass at runtime even if the kernel is loaded at the
  907. same address it was linked at.
  908. config RANDOMIZE_BASE
  909. bool "Randomize the address of the kernel image"
  910. select ARM64_MODULE_PLTS if MODULES
  911. select RELOCATABLE
  912. help
  913. Randomizes the virtual address at which the kernel image is
  914. loaded, as a security feature that deters exploit attempts
  915. relying on knowledge of the location of kernel internals.
  916. It is the bootloader's job to provide entropy, by passing a
  917. random u64 value in /chosen/kaslr-seed at kernel entry.
  918. When booting via the UEFI stub, it will invoke the firmware's
  919. EFI_RNG_PROTOCOL implementation (if available) to supply entropy
  920. to the kernel proper. In addition, it will randomise the physical
  921. location of the kernel Image as well.
  922. If unsure, say N.
  923. config RANDOMIZE_MODULE_REGION_FULL
  924. bool "Randomize the module region independently from the core kernel"
  925. depends on RANDOMIZE_BASE && !LTO_CLANG
  926. default y
  927. help
  928. Randomizes the location of the module region without considering the
  929. location of the core kernel. This way, it is impossible for modules
  930. to leak information about the location of core kernel data structures
  931. but it does imply that function calls between modules and the core
  932. kernel will need to be resolved via veneers in the module PLT.
  933. When this option is not set, the module region will be randomized over
  934. a limited range that contains the [_stext, _etext] interval of the
  935. core kernel, so branch relocations are always in range.
  936. endmenu
  937. menu "Boot options"
  938. config ARM64_ACPI_PARKING_PROTOCOL
  939. bool "Enable support for the ARM64 ACPI parking protocol"
  940. depends on ACPI
  941. help
  942. Enable support for the ARM64 ACPI parking protocol. If disabled
  943. the kernel will not allow booting through the ARM64 ACPI parking
  944. protocol even if the corresponding data is present in the ACPI
  945. MADT table.
  946. config CMDLINE
  947. string "Default kernel command string"
  948. default ""
  949. help
  950. Provide a set of default command-line options at build time by
  951. entering them here. As a minimum, you should specify the the
  952. root device (e.g. root=/dev/nfs).
  953. choice
  954. prompt "Kernel command line type" if CMDLINE != ""
  955. default CMDLINE_FROM_BOOTLOADER
  956. config CMDLINE_FROM_BOOTLOADER
  957. bool "Use bootloader kernel arguments if available"
  958. help
  959. Uses the command-line options passed by the boot loader. If
  960. the boot loader doesn't provide any, the default kernel command
  961. string provided in CMDLINE will be used.
  962. config CMDLINE_EXTEND
  963. bool "Extend bootloader kernel arguments"
  964. help
  965. The command-line arguments provided by the boot loader will be
  966. appended to the default kernel command string.
  967. config CMDLINE_FORCE
  968. bool "Always use the default kernel command string"
  969. help
  970. Always use the default kernel command string, even if the boot
  971. loader passes other arguments to the kernel.
  972. This is useful if you cannot or don't want to change the
  973. command-line options your boot loader passes to the kernel.
  974. endchoice
  975. config EFI_STUB
  976. bool
  977. config EFI
  978. bool "UEFI runtime support"
  979. depends on OF && !CPU_BIG_ENDIAN
  980. select LIBFDT
  981. select UCS2_STRING
  982. select EFI_PARAMS_FROM_FDT
  983. select EFI_RUNTIME_WRAPPERS
  984. select EFI_STUB
  985. select EFI_ARMSTUB
  986. default y
  987. help
  988. This option provides support for runtime services provided
  989. by UEFI firmware (such as non-volatile variables, realtime
  990. clock, and platform reset). A UEFI stub is also provided to
  991. allow the kernel to be booted as an EFI application. This
  992. is only useful on systems that have UEFI firmware.
  993. config DMI
  994. bool "Enable support for SMBIOS (DMI) tables"
  995. depends on EFI
  996. default y
  997. help
  998. This enables SMBIOS/DMI feature for systems.
  999. This option is only useful on systems that have UEFI firmware.
  1000. However, even with this option, the resultant kernel should
  1001. continue to boot on existing non-UEFI platforms.
  1002. config BUILD_ARM64_APPENDED_DTB_IMAGE
  1003. bool "Build a concatenated Image.gz/dtb by default"
  1004. depends on OF
  1005. help
  1006. Enabling this option will cause a concatenated Image.gz and list of
  1007. DTBs to be built by default (instead of a standalone Image.gz.)
  1008. The image will built in arch/arm64/boot/Image.gz-dtb
  1009. choice
  1010. prompt "Appended DTB Kernel Image name"
  1011. depends on BUILD_ARM64_APPENDED_DTB_IMAGE
  1012. help
  1013. Enabling this option will cause a specific kernel image Image or
  1014. Image.gz to be used for final image creation.
  1015. The image will built in arch/arm64/boot/IMAGE-NAME-dtb
  1016. config IMG_GZ_DTB
  1017. bool "Image.gz-dtb"
  1018. config IMG_DTB
  1019. bool "Image-dtb"
  1020. endchoice
  1021. config BUILD_ARM64_APPENDED_KERNEL_IMAGE_NAME
  1022. string
  1023. depends on BUILD_ARM64_APPENDED_DTB_IMAGE
  1024. default "Image.gz-dtb" if IMG_GZ_DTB
  1025. default "Image-dtb" if IMG_DTB
  1026. config BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES
  1027. string "Default dtb names"
  1028. depends on BUILD_ARM64_APPENDED_DTB_IMAGE
  1029. help
  1030. Space separated list of names of dtbs to append when
  1031. building a concatenated Image.gz-dtb.
  1032. endmenu
  1033. menu "Userspace binary formats"
  1034. source "fs/Kconfig.binfmt"
  1035. config COMPAT
  1036. bool "Kernel support for 32-bit EL0"
  1037. depends on ARM64_4K_PAGES || EXPERT
  1038. select COMPAT_BINFMT_ELF if BINFMT_ELF
  1039. select HAVE_UID16
  1040. select OLD_SIGSUSPEND3
  1041. select COMPAT_OLD_SIGACTION
  1042. help
  1043. This option enables support for a 32-bit EL0 running under a 64-bit
  1044. kernel at EL1. AArch32-specific components such as system calls,
  1045. the user helper functions, VFP support and the ptrace interface are
  1046. handled appropriately by the kernel.
  1047. If you use a page size other than 4KB (i.e, 16KB or 64KB), please be aware
  1048. that you will only be able to execute AArch32 binaries that were compiled
  1049. with page size aligned segments.
  1050. If you want to execute 32-bit userspace applications, say Y.
  1051. config KUSER_HELPERS
  1052. bool "Enable the kuser helpers page in 32-bit processes"
  1053. depends on COMPAT
  1054. default y
  1055. help
  1056. Warning: disabling this option may break 32-bit applications.
  1057. Provide kuser helpers in a special purpose fixed-address page. The
  1058. kernel provides helper code to userspace in read-only form at a fixed
  1059. location to allow userspace to be independent of the CPU type fitted
  1060. to the system. This permits 32-bit binaries to be run on ARMv6 through
  1061. to ARMv8 without modification.
  1062. See Documentation/arm/kernel_user_helpers.txt for details.
  1063. However, the fixed-address nature of these helpers can be used by ROP
  1064. (return-orientated programming) authors when creating exploits.
  1065. If all of the 32-bit binaries and libraries that run on your platform
  1066. are built specifically for your platform, and make no use of these
  1067. helpers, then you can turn this option off to hinder such exploits.
  1068. However, in that case, if a binary or library relying on those helpers
  1069. is run, it will receive a SIGSEGV signal, which will terminate the
  1070. program. Typically, binaries compiled for ARMv7 or later do not use
  1071. the kuser helpers.
  1072. Say N here only if you are absolutely certain that you do not need
  1073. these helpers; otherwise, the safe option is to say Y (the default
  1074. for now)
  1075. config SYSVIPC_COMPAT
  1076. def_bool y
  1077. depends on COMPAT && SYSVIPC
  1078. config COMPAT_VDSO
  1079. bool "32-bit vDSO"
  1080. depends on COMPAT
  1081. select ARM_ARCH_TIMER_VCT_ACCESS
  1082. default n
  1083. help
  1084. Warning: a 32-bit toolchain is necessary to build the vDSO. You
  1085. must explicitly define which toolchain should be used by setting
  1086. CROSS_COMPILE_ARM32 to the prefix of the 32-bit toolchain (same format
  1087. as CROSS_COMPILE). If CROSS_COMPILE_ARM32 is empty, a warning will be
  1088. printed and the kernel will be built as if COMPAT_VDSO had not been
  1089. set. If CROSS_COMPILE_ARM32 is set to an invalid prefix, compilation
  1090. will be aborted.
  1091. Provide a vDSO to 32-bit processes. It includes the symbols provided
  1092. by the vDSO from the 32-bit kernel, so that a 32-bit libc can use
  1093. the compat vDSO without modification. It also provides sigreturn
  1094. trampolines, replacing the sigreturn page.
  1095. config CROSS_COMPILE_ARM32
  1096. string "32-bit toolchain prefix"
  1097. help
  1098. Same as setting CROSS_COMPILE_ARM32 in the environment, but saved for
  1099. future builds. The environment variable overrides this config option.
  1100. endmenu
  1101. menu "Power management options"
  1102. source "kernel/power/Kconfig"
  1103. config ARCH_HIBERNATION_POSSIBLE
  1104. def_bool y
  1105. depends on CPU_PM
  1106. config ARCH_HIBERNATION_HEADER
  1107. def_bool y
  1108. depends on HIBERNATION
  1109. config ARCH_SUSPEND_POSSIBLE
  1110. def_bool y
  1111. endmenu
  1112. menu "CPU Power Management"
  1113. source "drivers/cpuidle/Kconfig"
  1114. source "drivers/cpufreq/Kconfig"
  1115. endmenu
  1116. source "net/Kconfig"
  1117. source "drivers/Kconfig"
  1118. source "drivers/firmware/Kconfig"
  1119. source "drivers/acpi/Kconfig"
  1120. source "fs/Kconfig"
  1121. source "arch/arm64/kvm/Kconfig"
  1122. source "arch/arm64/Kconfig.debug"
  1123. source "security/Kconfig"
  1124. source "crypto/Kconfig"
  1125. if CRYPTO
  1126. source "arch/arm64/crypto/Kconfig"
  1127. endif
  1128. source "lib/Kconfig"