在这个 Kconfig
文件中,定义了 ARM64 架构相关的配置选项。每一行都有特定的作用,用于控制内核的编译和功能。下面是对每个字段的详细解释和注释:
# SPDX-License-Identifier: GPL-2.0-only
- 这是一个许可证标识符,指明这个文件遵循 GPL-2.0-only 许可证。
config ARM64
- 定义一个名为
ARM64
的配置项。
def_bool y
- 设置
ARM64
的默认值为y
,意味着这个选项默认是开启的。
select ACPI_APMT if ACPI
- 如果
ACPI
配置项被启用,则自动选择ACPI_APMT
。
select ACPI_CCA_REQUIRED if ACPI
select ACPI_GENERIC_GSI if ACPI
select ACPI_GTDT if ACPI
select ACPI_IORT if ACPI
select ACPI_REDUCED_HARDWARE_ONLY if ACPI
- 这些行表示如果
ACPI
被启用,将自动选择列出的各个 ACPI 相关的配置项。
select ACPI_MCFG if (ACPI && PCI)
- 如果
ACPI
和PCI
都被启用,则自动选择ACPI_MCFG
。
select ACPI_SPCR_TABLE if ACPI
select ACPI_PPTT if ACPI
- 如果
ACPI
被启用,则自动选择ACPI_SPCR_TABLE
和ACPI_PPTT
。
select ARCH_HAS_DEBUG_WX
select ARCH_BINFMT_ELF_EXTRA_PHDRS
select ARCH_BINFMT_ELF_STATE
- 自动选择与调试和 ELF 格式相关的配置项。
select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
- 自动选择
ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
,用于在使用 kretprobes 时修正栈跟踪。
select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION
- 如果启用了大页支持 (
HUGETLB_PAGE
) 和内存迁移 (MIGRATION
),则自动选择支持大页迁移的配置项。
select ARCH_ENABLE_MEMORY_HOTPLUG
select ARCH_ENABLE_MEMORY_HOTREMOVE
- 自动选择支持内存热插拔和热移除的配置项。
select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2
- 如果页表级数 (
PGTABLE_LEVELS
) 大于 2,则自动选择ARCH_ENABLE_SPLIT_PMD_PTLOCK
。
select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
- 如果启用了透明大页 (
TRANSPARENT_HUGEPAGE
),则自动选择支持透明大页迁移的配置项。
select ARCH_HAS_CACHE_LINE_SIZE
select ARCH_HAS_CURRENT_STACK_POINTER
select ARCH_HAS_DEBUG_VIRTUAL
select ARCH_HAS_DEBUG_VM_PGTABLE
- 自动选择与架构特定功能相关的配置项,如缓存行大小、当前栈指针、虚拟内存调试等。
select ARCH_HAS_DMA_PREP_COHERENT
select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
- 自动选择与 DMA 和 ACPI 表升级相关的配置项。
select ARCH_HAS_FAST_MULTIPLIER
select ARCH_HAS_FORTIFY_SOURCE
select ARCH_HAS_GCOV_PROFILE_ALL
- 自动选择与性能优化和安全相关的配置项,如快速乘法器、源代码加固和 GCOV 分析。
select ARCH_HAS_GIGANTIC_PAGE
select ARCH_HAS_KCOV
- 自动选择支持巨型页和内核代码覆盖 (KCOV) 的配置项。
select ARCH_HAS_KERNEL_FPU_SUPPORT if KERNEL_MODE_NEON
- 如果启用了内核模式 NEON 支持,则自动选择内核浮点单元 (FPU) 支持。
select ARCH_HAS_KEEPINITRD
select ARCH_HAS_MEMBARRIER_SYNC_CORE
- 自动选择支持保留 initrd 和内存屏障同步核心的配置项。
select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
- 自动选择支持 NMI 安全的 CPU 操作和非重叠地址空间的配置项。
select ARCH_HAS_PTE_DEVMAP
select ARCH_HAS_PTE_SPECIAL
- 自动选择支持 PTE 设备映射和特殊 PTE 的配置项。
select ARCH_HAS_HW_PTE_YOUNG
select ARCH_HAS_SETUP_DMA_OPS
- 自动选择支持硬件 PTE “young” 位和设置 DMA 操作的配置项。
select ARCH_HAS_SET_DIRECT_MAP
select ARCH_HAS_SET_MEMORY
- 自动选择支持设置直接映射和设置内存属性的配置项。
select ARCH_STACKWALK
select ARCH_HAS_STRICT_KERNEL_RWX
select ARCH_HAS_STRICT_MODULE_RWX
- 自动选择支持栈遍历和严格的内核及模块读写执行权限的配置项。
select ARCH_HAS_SYNC_DMA_FOR_DEVICE
select ARCH_HAS_SYNC_DMA_FOR_CPU
- 自动选择支持同步 DMA 操作的配置项。
select ARCH_HAS_SYSCALL_WRAPPER
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
- 自动选择支持系统调用包装器和时钟事件广播的配置项。
select ARCH_HAS_ZONE_DMA_SET if EXPERT
- 如果启用了专家模式 (
EXPERT
),则自动选择设置 DMA 区域的配置项。
select ARCH_HAVE_ELF_PROT
select ARCH_HAVE_NMI_SAFE_CMPXCHG
select ARCH_HAVE_TRACE_MMIO_ACCESS
- 自动选择支持 ELF 保护、NMI 安全的 CMPXCHG 操作和追踪 MMIO 访问的配置项。
select ARCH_INLINE_READ_LOCK if !PREEMPTION
select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION
select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION
select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPTION
- 如果没有启用抢占 (
PREEMPTION
),则自动选择支持内联读锁的配置项。
select ARCH_INLINE_READ_UNLOCK if !PREEMPTION
select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPTION
select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPTION
select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPTION
- 如果没有启用抢占,同样自动选择支持内联读解锁的配置项。
select ARCH_INLINE_WRITE_LOCK if !PREEMPTION
select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPTION
select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPTION
select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPTION
- 如果没有启用抢占,自动选择支持内联写锁的配置项。
select ARCH_INLINE_WRITE_UNLOCK if !PREEMPTION
select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPTION
select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPTION
select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPTION
- 如果没有启用抢占,自动选择支持内联写解锁的配置项。
select ARCH_INLINE_SPIN_TRYLOCK if !PREEMPTION
select ARCH_INLINE_SPIN_TRYLOCK_BH if !PREEMPTION
select ARCH_INLINE_SPIN_LOCK if !PREEMPTION
select ARCH_INLINE_SPIN_LOCK_BH if !PREEMPTION
select ARCH_INLINE_SPIN_LOCK_IRQ if !PREEMPTION
select ARCH_INLINE_SPIN_LOCK_IRQSAVE if !PREEMPTION
- 如果没有启用抢占,自动选择支持内联自旋锁的配置项。
select ARCH_INLINE_SPIN_UNLOCK if !PREEMPTION
select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION
select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION
select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION
- 如果没有启用抢占,自动选择支持内联自旋解锁的配置项。
select ARCH_KEEP_MEMBLOCK
select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE
- 自动选择支持保留内存块和在内存启用时映射大页的配置项。
select ARCH_USE_CMPXCHG_LOCKREF
select ARCH_USE_GNU_PROPERTY
select ARCH_USE_MEMTEST
- 自动选择支持 CMPXCHG 锁引用、GNU 属性和内存测试的配置项。
select ARCH_USE_QUEUED_RWLOCKS
select ARCH_USE_QUEUED_SPINLOCKS
- 自动选择支持队列读写锁和队列自旋锁的配置项。
select ARCH_USE_SYM_ANNOTATIONS
select ARCH_SUPPORTS_DEBUG_PAGEALLOC
select ARCH_SUPPORTS_HUGETLBFS
- 自动选择支持符号注解、调试页分配和大页文件系统的配置项。
select ARCH_SUPPORTS_MEMORY_FAILURE
select ARCH_SUPPORTS_SHADOW_CALL_STACK if CC_HAVE_SHADOW_CALL_STACK
- 如果编译器支持影子调用栈 (
CC_HAVE_SHADOW_CALL_STACK
),则自动选择支持内存故障和影子调用栈的配置项。
select ARCH_SUPPORTS_LTO_CLANG if CPU_LITTLE_ENDIAN
select ARCH_SUPPORTS_LTO_CLANG_THIN
select ARCH_SUPPORTS_CFI_CLANG
- 如果 CPU 是小端模式 (
CPU_LITTLE_ENDIAN
),则自动选择支持 Clang 的链接时优化 (LTO) 和控制流完整性 (CFI) 的配置项。
select ARCH_SUPPORTS_ATOMIC_RMW
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
- 如果编译器支持 128 位整数 (
CC_HAS_INT128
),则自动选择支持原子读-修改-写操作和 128 位整数的配置项。
select ARCH_SUPPORTS_NUMA_BALANCING
select ARCH_SUPPORTS_PAGE_TABLE_CHECK
select ARCH_SUPPORTS_PER_VMA_LOCK
- 自动选择支持 NUMA 平衡、页表检查和每个 VMA 锁的配置项。
select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT
- 如果启用了兼容模式 (
COMPAT
),则自动选择支持批量 TLB 刷新和兼容 IPC 解析版本的配置项。
select ARCH_WANT_DEFAULT_BPF_JIT
select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
- 自动选择支持默认 BPF JIT 和默认自顶向下的内存映射布局的配置项。
select ARCH_WANT_FRAME_POINTERS
select ARCH_WANT_HUGE_PMD_SHARE if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36)
- 如果启用了 4K 或 16K 页,并且虚拟地址位数不是 36 位,则自动选择支持帧指针和大页 PMD 共享的配置项。
select ARCH_WANT_LD_ORPHAN_WARN
select ARCH_WANTS_EXECMEM_LATE if EXECMEM
- 如果启用了执行内存 (
EXECMEM
),则自动选择支持链接器孤立警告和延迟执行内存配置的选项。
select ARCH_WANTS_NO_INSTR
select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES
- 如果启用了 4K 页,则自动选择支持透明大页交换的配置项。
select ARCH_HAS_UBSAN
select ARM_AMBA
select ARM_ARCH_TIMER
- 自动选择支持未定义行为监测 (UBSAN)、AMBA 总线和 ARM 架构定时器的配置项。
select ARM_GIC
select AUDIT_ARCH_COMPAT_GENERIC
- 自动选择支持通用中断控制器 (GIC) 和通用架构兼容审计的配置项。
select ARM_GIC_V2M if PCI
select ARM_GIC_V3
select ARM_GIC_V3_ITS if PCI
- 如果启用了 PCI,则自动选择支持 GICv2m 和 GICv3 ITS 的配置项。
select ARM_PSCI_FW
select BUILDTIME_TABLE_SORT
- 自动选择支持 PSCI 固件接口和构建时表排序的配置项。
select CLONE_BACKWARDS
select COMMON_CLK
- 自动选择支持向后克隆和通用时钟框架的配置项。
select CPU_PM if (SUSPEND || CPU_IDLE)
- 如果启用了挂起或 CPU 空闲,则自动选择 CPU 电源管理的配置项。
select CPUMASK_OFFSTACK if NR_CPUS > 256
- 如果 CPU 数量超过 256,则自动选择支持堆栈外 CPU 掩码的配置项。
select CRC32
select DCACHE_WORD_ACCESS
- 自动选择支持 CRC32 计算和字访问数据缓存的配置项。
select DYNAMIC_FTRACE if FUNCTION_TRACER
- 如果启用了函数跟踪器,则自动选择动态 Ftrace 的配置项。
select DMA_BOUNCE_UNALIGNED_KMALLOC
select DMA_DIRECT_REMAP
- 自动选择支持 DMA 弹跳缓冲区和直接 DMA 重映射的配置项。
select EDAC_SUPPORT
select FRAME_POINTER
- 自动选择支持错误检测和校正 (EDAC) 和帧指针的配置项。
select FUNCTION_ALIGNMENT_4B
select FUNCTION_ALIGNMENT_8B if DYNAMIC_FTRACE_WITH_CALL_OPS
- 如果启用了带调用操作的动态 Ftrace,则自动选择支持 4 字节和 8 字节函数对齐的配置项。
select GENERIC_ALLOCATOR
select GENERIC_ARCH_TOPOLOGY
- 自动选择支持通用分配器和通用架构拓扑的配置项。
select GENERIC_CLOCKEVENTS_BROADCAST
select GENERIC_CPU_AUTOPROBE
- 自动选择支持通用时钟事件广播和通用 CPU 自动探测的配置项。
select GENERIC_CPU_DEVICES
select GENERIC_CPU_VULNERABILITIES
- 自动选择支持通用 CPU 设备和通用 CPU 漏洞处理的配置项。
select GENERIC_EARLY_IOREMAP
select GENERIC_IDLE_POLL_SETUP
- 自动选择支持通用早期 IO 重映射和通用空闲轮询设置的配置项。
select GENERIC_IOREMAP
select GENERIC_IRQ_IPI
- 自动选择支持通用 IO 重映射和通用中断处理器间中断 (IPI) 的配置项。
select GENERIC_IRQ_PROBE
select GENERIC_IRQ_SHOW
- 自动选择支持通用 IRQ 探测和显示的配置项。
select GENERIC_IRQ_SHOW_LEVEL
select GENERIC_LIB_DEVMEM_IS_ALLOWED
- 自动选择支持显示 IRQ 级别和允许通用设备内存库的配置项。
select GENERIC_PCI_IOMAP
select GENERIC_PTDUMP
- 自动选择支持通用 PCI IO 映射和通用页表转储的配置项。
select GENERIC_SCHED_CLOCK
select GENERIC_SMP_IDLE_THREAD
- 自动选择支持通用调度时钟和通用 SMP 空闲线程的配置项。
select GENERIC_TIME_VSYSCALL
select GENERIC_GETTIMEOFDAY
- 自动选择支持通用虚拟系统调用时间和通用获取当前时间的配置项。
select GENERIC_VDSO_TIME_NS
select HARDIRQS_SW_RESEND
- 自动选择支持通用 VDSO 纳秒时间和硬中断软件重发的配置项。
select HAS_IOPORT
select HAVE_MOVE_PMD
- 自动选择支持 IO 端口和移动 PMD 的配置项。
select HAVE_MOVE_PUD
select HAVE_PCI
- 自动选择支持移动 PUD 和 PCI 的配置项。
select HAVE_ACPI_APEI if (ACPI && EFI)
- 如果启用了 ACPI 和 EFI,则自动选择支持 ACPI 平台错误接口 (APEI) 的配置项。
select HAVE_ALIGNED_STRUCT_PAGE
select HAVE_ARCH_AUDITSYSCALL
- 自动选择支持对齐的结构页
UDITSYSCALL
- 自动选择支持对齐的结构页和架构级别的系统调用审计。
select HAVE_ARCH_JUMP_LABEL
select HAVE_ARCH_KGDB
- 自动选择支持架构特定的跳转标签和内核调试器 (KGDB)。
select HAVE_ARCH_PREL32_RELOCATIONS
select HAVE_ARCH_SECCOMP_FILTER
- 自动选择支持 32 位相对位置重定位和架构特定的 Seccomp 过滤。
select HAVE_ARCH_TRACEHOOK
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
- 自动选择支持架构级的跟踪钩子和透明大页。
select HAVE_ARCH_VMAP_STACK
select HAVE_ARCH_WITHIN_STACK_FRAMES
- 自动选择支持虚拟内存映射的栈和架构级的栈帧内检查。
select HAVE_AS_HAS_PAC
select HAVE_ASM_MODVERSIONS
- 自动选择支持指针认证 (PAC) 和汇编模块版本控制。
select HAVE_BPF_JIT
select HAVE_CC_STACKPROTECTOR
- 自动选择支持 BPF JIT 编译器和编译器支持的栈保护。
select HAVE_CMPXCHG_DOUBLE
select HAVE_CMPXCHG_LOCAL
- 自动选择支持双字比较和交换操作以及本地比较和交换操作。
select HAVE_CONTEXT_TRACKING
select HAVE_COPY_THREAD_TLS
- 自动选择支持上下文跟踪和具有 TLS 支持的线程复制功能。
select HAVE_CSUM_DBVAL
select HAVE_DEBUG_BUGVERBOSE
- 自动选择支持校验和双字值和详细的 bug 报告调试。
select HAVE_DEBUG_KMEMLEAK
select HAVE_DMA_CONTIGUOUS
- 自动选择支持内存泄漏调试和连续 DMA 内存分配。
select HAVE_DMA_DECLARE_COHERENT
select HAVE_DYNAMIC_FTRACE
- 自动选择支持声明一致性 DMA 内存和动态 Ftrace 功能。
select HAVE_EBPF_JIT
select HAVE_EFFICIENT_UNALIGNED_ACCESS
- 自动选择支持 eBPF JIT 编译器和高效的非对齐访问。
select HAVE_ENTRY_STACK
select HAVE_EXIT_THREAD
- 自动选择支持入口栈和线程退出处理。
select HAVE_FENTRY
select HAVE_FTRACE_MCOUNT_RECORD
- 自动选择支持 fentry 跟踪和 ftrace 的 mcount 记录。
select HAVE_FUNCTION_GRAPH_TRACER
select HAVE_FUNCTION_TRACER
- 自动选择支持函数图跟踪器和函数跟踪器。
select HAVE_GCC_PLUGINS
select HAVE_GENERIC_DMA_COHERENT
- 自动选择支持 GCC 插件和通用一致性 DMA 操作。
select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HW_PERF_EVENTS
- 如果启用了性能事件 (
PERF_EVENTS
) 和硬件性能事件 (HW_PERF_EVENTS
),则自动选择硬件锁死检测器。
select HAVE_HW_BREAKPOINT
select HAVE_IOREMAP_PROT
- 自动选择支持硬件断点和带保护的 IO 重映射。
select HAVE_IRQ_TIME_ACCOUNTING
select HAVE_MEMBLOCK
- 自动选择支持 IRQ 时间核算和内存块管理。
select HAVE_MEMBLOCK_NODE_MAP
select HAVE_MEMORY_PRESENT
- 自动选择支持内存块节点映射和内存存在检查。
select HAVE_MOD_ARCH_SPECIFIC
select HAVE_PERF_EVENTS
- 自动选择支持模块架构特定数据和性能事件。
select HAVE_PERF_REGS
select HAVE_PERF_USER_STACK_DUMP
- 自动选择支持性能寄存器和用户栈转储。
select HAVE_REGS_AND_STACK_ACCESS_API
select HAVE_RSEQ
- 自动选择支持寄存器和栈访问 API 以及重试序列 (RSEQ)。
select HAVE_STACKPROTECTOR
select HAVE_SYSCALL_TRACEPOINTS
- 自动选择支持栈保护和系统调用跟踪点。
select HAVE_VIRT_CPU_ACCOUNTING_GEN
help
ARM 64-bit (AArch64) Linux support.
- 自动选择支持通用虚拟 CPU 计账。
help
字段提供了对ARM64
配置项的描述,帮助用户理解其功能和用途。