Feature status on all architectures — The Linux Kernel 5.18.5-gnu-1 documentation

# Feature status on all architectures

## Subsystem: core

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
cBPF-JIT | `HAVE_CBPF_JIT` arch supports cBPF JIT optimizations | ok: mips, powerpc sparc TODO: alpha, arc, arm arm64, csky, h8300, hexagon ia64, m68k, microblaze nios2, openrisc, parisc riscv, s390, sh, um, x86 xtensa
eBPF-JIT | `HAVE_EBPF_JIT` arch supports eBPF JIT optimizations | ok: arm, arm64, mips powerpc, riscv, s390, sparc x86 TODO: alpha, arc, csky h8300, hexagon, ia64, m68k microblaze, nios2, openrisc parisc, sh, um, xtensa
generic-idle-thread | `GENERIC_SMP_IDLE_THREAD` arch makes use of the generic SMP idle thread facility | ok: alpha, arc, arm arm64, csky, hexagon, ia64 mips, openrisc, parisc powerpc, riscv, s390, sh sparc, x86, xtensa TODO: h8300, m68k microblaze, nios2, um
jump-labels | `HAVE_ARCH_JUMP_LABEL` arch supports live patched, high efficiency branches | ok: arc, arm, arm64 mips, parisc, powerpc riscv, s390, sparc, x86 xtensa TODO: alpha, csky h8300, hexagon, ia64, m68k microblaze, nios2, openrisc sh, um
thread-info-in-task | `THREAD_INFO_IN_TASK` arch makes use of the core kernel facility to embedd thread_info in task_struct | ok: arm, arm64, parisc powerpc, riscv, s390, x86 TODO: alpha, arc, csky h8300, hexagon, ia64, m68k microblaze, mips, nios2 openrisc, sh, sparc, um xtensa
tracehook | `HAVE_ARCH_TRACEHOOK` arch supports tracehook (ptrace) register handling APIs | ok: arc, arm, arm64 csky, hexagon, ia64, mips nios2, openrisc, parisc powerpc, riscv, s390, sh sparc, x86, xtensa TODO: alpha, h8300 m68k, microblaze, um

## Subsystem: debug

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
debug-vm-pgtable | `ARCH_HAS_DEBUG_VM_PGTABLE` arch supports pgtable tests for semantics compliance | ok: arc, arm64, powerpc riscv, s390, x86 TODO: alpha, arm, csky h8300, hexagon, ia64, m68k microblaze, mips, nios2 openrisc, parisc, sh, sparc um, xtensa
gcov-profile-all | `ARCH_HAS_GCOV_PROFILE_ALL` arch supports whole-kernel GCOV code coverage profiling | ok: arm, arm64, csky microblaze, mips, powerpc riscv, s390, sh, x86 TODO: alpha, arc, h8300 hexagon, ia64, m68k, nios2 openrisc, parisc, sparc, um xtensa
KASAN | `HAVE_ARCH_KASAN` arch supports the KASAN runtime memory checker | ok: arm, arm64, powerpc riscv, s390, x86, xtensa TODO: alpha, arc, csky h8300, hexagon, ia64, m68k microblaze, mips, nios2 openrisc, parisc, sh, sparc um
kcov | `ARCH_HAS_KCOV` arch supports kcov for coverage-guided fuzzing | ok: arm, arm64, mips powerpc, riscv, s390, um x86 TODO: alpha, arc, csky h8300, hexagon, ia64, m68k microblaze, nios2, openrisc parisc, sh, sparc, xtensa
kgdb | `HAVE_ARCH_KGDB` arch supports the kGDB kernel debugger | ok: arc, arm, arm64 h8300, hexagon, microblaze mips, nios2, parisc powerpc, riscv, sh, sparc x86 TODO: alpha, csky, ia64 m68k, openrisc, s390, um xtensa
kmemleak | `HAVE_DEBUG_KMEMLEAK` arch supports the kernel memory leak detector | ok: arc, arm, arm64 csky, microblaze, mips powerpc, riscv, s390, sh sparc, um, x86, xtensa TODO: alpha, h8300 hexagon, ia64, m68k, nios2 openrisc, parisc
kprobes | `HAVE_KPROBES` arch supports live patched kernel probe | ok: arc, arm, arm64 csky, ia64, mips, parisc powerpc, riscv, s390, sh sparc, x86 TODO: alpha, h8300 hexagon, m68k, microblaze nios2, openrisc, um, xtensa
kprobes-on-ftrace | `HAVE_KPROBES_ON_FTRACE` arch supports combined kprobes and ftrace live patching | ok: csky, parisc powerpc, riscv, s390, x86 TODO: alpha, arc, arm arm64, h8300, hexagon, ia64 m68k, microblaze, mips nios2, openrisc, sh, sparc um, xtensa
kretprobes | `HAVE_KRETPROBES` arch supports kernel function-return probes | ok: arc, arm, arm64 csky, ia64, mips, parisc powerpc, riscv, s390, sh sparc, x86 TODO: alpha, h8300 hexagon, m68k, microblaze nios2, openrisc, um, xtensa
optprobes | `HAVE_OPTPROBES` arch supports live patched optprobes | ok: arm, powerpc, x86 TODO: alpha, arc, arm64 csky, h8300, hexagon, ia64 m68k, microblaze, mips nios2, openrisc, parisc riscv, s390, sh, sparc, um xtensa
stackprotector | `HAVE_STACKPROTECTOR` arch supports compiler driven stack overflow protection | ok: arm, arm64, csky mips, powerpc, riscv, sh x86, xtensa TODO: alpha, arc, h8300 hexagon, ia64, m68k microblaze, nios2, openrisc parisc, s390, sparc, um
uprobes | `ARCH_SUPPORTS_UPROBES` arch supports live patched user probes | ok: arm, arm64, csky mips, powerpc, riscv, s390 sparc, x86 TODO: alpha, arc, h8300 hexagon, ia64, m68k microblaze, nios2, openrisc parisc, sh, um, xtensa
user-ret-profiler | `HAVE_USER_RETURN_NOTIFIER` arch supports user-space return from system call profiler | ok: x86 TODO: alpha, arc, arm arm64, csky, h8300, hexagon ia64, m68k, microblaze mips, nios2, openrisc parisc, powerpc, riscv s390, sh, sparc, um, xtensa

## Subsystem: io

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
dma-contiguous | `HAVE_DMA_CONTIGUOUS` arch supports the DMA CMA (continuous memory allocator) | ok: arm, arm64, csky microblaze, mips, riscv s390, x86, xtensa TODO: alpha, arc, h8300 hexagon, ia64, m68k, nios2 openrisc, parisc, powerpc sh, sparc, um

## Subsystem: locking

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
cmpxchg-local | `HAVE_CMPXCHG_LOCAL` arch supports the this_cpu_cmpxchg() API | ok: arm64, s390, x86 TODO: alpha, arc, arm csky, h8300, hexagon, ia64 m68k, microblaze, mips nios2, openrisc, parisc powerpc, riscv, sh, sparc um, xtensa
lockdep | `LOCKDEP_SUPPORT` arch supports the runtime locking correctness debug facility | ok: arc, arm, arm64 csky, hexagon, microblaze mips, openrisc, powerpc riscv, s390, sh, sparc, um x86, xtensa TODO: alpha, h8300 ia64, m68k, nios2, parisc
queued-rwlocks | `ARCH_USE_QUEUED_RWLOCKS` arch supports queued rwlocks | ok: arm64, csky, mips openrisc, powerpc, sparc x86, xtensa TODO: alpha, arc, arm h8300, hexagon, ia64, m68k microblaze, nios2, parisc riscv, s390, sh, um
queued-spinlocks | `ARCH_USE_QUEUED_SPINLOCKS` arch supports queued spinlocks | ok: arm64, mips openrisc, powerpc, sparc x86, xtensa TODO: alpha, arc, arm csky, h8300, hexagon, ia64 m68k, microblaze, nios2 parisc, riscv, s390, sh, um

## Subsystem: perf

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
kprobes-event | `HAVE_REGS_AND_STACK_ACCESS_API` arch supports kprobes with perf events | ok: arm, arm64, csky hexagon, mips, parisc powerpc, riscv, s390, sh sparc, x86 TODO: alpha, arc, h8300 ia64, m68k, microblaze nios2, openrisc, um, xtensa
perf-regs | `HAVE_PERF_REGS` arch supports perf events register access | ok: arm, arm64, csky mips, powerpc, riscv, s390 x86 TODO: alpha, arc, h8300 hexagon, ia64, m68k microblaze, nios2, openrisc parisc, sh, sparc, um xtensa
perf-stackdump | `HAVE_PERF_USER_STACK_DUMP` arch supports perf events stack dumps | ok: arm, arm64, csky mips, powerpc, riscv, s390 x86 TODO: alpha, arc, h8300 hexagon, ia64, m68k microblaze, nios2, openrisc parisc, sh, sparc, um xtensa

## Subsystem: sched

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
membarrier-sync-core | `ARCH_HAS_MEMBARRIER_SYNC_CORE` arch supports core serializing membarrier | ok: arm, arm64, powerpc x86 TODO: alpha, arc, csky h8300, hexagon, ia64, m68k microblaze, mips, nios2 openrisc, parisc, riscv s390, sh, sparc, um, xtensa
numa-balancing | `ARCH_SUPPORTS_NUMA_BALANCING` arch supports NUMA balancing | ok: arm64, powerpc riscv, s390, x86 TODO: alpha, ia64, mips sparc Not compatible: arc arm, csky, h8300, hexagon m68k, microblaze, nios2 openrisc, parisc, sh, um xtensa

## Subsystem: seccomp

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
seccomp-filter | `HAVE_ARCH_SECCOMP_FILTER` arch supports seccomp filters | ok: arm, arm64, csky mips, parisc, powerpc riscv, s390, sh, um, x86 xtensa TODO: alpha, arc, h8300 hexagon, ia64, m68k microblaze, nios2, openrisc sparc

## Subsystem: time

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
arch-tick-broadcast | `ARCH_HAS_TICK_BROADCAST` arch provides tick_broadcast() | ok: arm, arm64, mips powerpc, riscv, sh TODO: alpha, arc, csky h8300, hexagon, ia64, m68k microblaze, nios2, openrisc parisc, s390, sparc, um x86, xtensa
clockevents | `!LEGACY_TIMER_TICK` arch support generic clock events | ok: alpha, arc, arm64 csky, h8300, hexagon microblaze, mips, nios2 openrisc, powerpc, riscv s390, sh, sparc, um, x86 xtensa TODO: arm, ia64, m68k parisc
context-tracking | `HAVE_CONTEXT_TRACKING` arch supports context tracking for NO_HZ_FULL | ok: arm, arm64, csky mips, powerpc, riscv, sparc x86 TODO: alpha, arc, h8300 hexagon, ia64, m68k microblaze, nios2, openrisc parisc, s390, sh, um xtensa
irq-time-acct | `HAVE_IRQ_TIME_ACCOUNTING` arch supports precise IRQ time accounting | ok: arm, arm64, mips powerpc, riscv, x86, xtensa TODO: arc, csky, h8300 hexagon, m68k, microblaze nios2, openrisc, sh, um Not compatible: alpha ia64, parisc, s390, sparc
virt-cpuacct | `HAVE_VIRT_CPU_ACCOUNTING` arch supports precise virtual CPU time accounting | ok: alpha, arm, arm64 csky, ia64, mips, parisc powerpc, s390, sparc, x86 TODO: arc, h8300 hexagon, m68k, microblaze nios2, openrisc, riscv, sh um, xtensa

## Subsystem: vm

Feature | Kconfig / Description | Status per architecture
--- | --- | ---
batch-unmap-tlb-flush | `ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH` arch supports deferral of TLB flush until multiple pages are unmapped | ok: x86 TODO: alpha, arc, arm csky, hexagon, ia64, mips parisc, powerpc, riscv s390, sh, sparc, xtensa N/A: arm64 Not compatible: h8300 m68k, microblaze, nios2 openrisc, um
ELF-ASLR | `ARCH_HAS_ELF_RANDOMIZE` arch randomizes the stack, heap and binary images of ELF binaries | ok: arm, arm64, mips parisc, powerpc, riscv s390, x86 TODO: alpha, arc, csky h8300, hexagon, ia64, m68k microblaze, nios2, openrisc sh, sparc, um, xtensa
huge-vmap | `HAVE_ARCH_HUGE_VMAP` arch supports the arch_vmap_pud_supported() and arch_vmap_pmd_supported() VM APIs | ok: arm64, powerpc, x86 TODO: alpha, arc, arm csky, h8300, hexagon, ia64 m68k, microblaze, mips nios2, openrisc, parisc riscv, s390, sh, sparc, um xtensa
ioremap_prot | `HAVE_IOREMAP_PROT` arch has ioremap_prot() | ok: arc, mips, powerpc s390, sh, x86 TODO: alpha, arm, arm64 csky, h8300, hexagon, ia64 m68k, microblaze, nios2 openrisc, parisc, riscv sparc, um, xtensa
PG_uncached | `ARCH_USES_PG_UNCACHED` arch supports the PG_uncached page flag | ok: ia64, x86 TODO: alpha, arc, arm arm64, csky, h8300, hexagon m68k, microblaze, mips nios2, openrisc, parisc powerpc, riscv, s390, sh sparc, um, xtensa
pte_special | `ARCH_HAS_PTE_SPECIAL` arch supports the pte_special()/pte_mkspecial() VM APIs | ok: arc, arm, arm64 mips, powerpc, riscv, s390 sh, sparc, x86 TODO: alpha, csky h8300, hexagon, ia64, m68k microblaze, nios2, openrisc parisc, um, xtensa
THP | `HAVE_ARCH_TRANSPARENT_HUGEPAGE` arch supports transparent hugepages | ok: arc, arm, arm64 mips, powerpc, riscv, s390 sparc, x86 TODO: alpha, ia64 parisc Not compatible: csky h8300, hexagon, m68k microblaze, nios2, openrisc sh, um, xtensa