Feature status on all architectures¶
|arch-tick-broadcast |``ARCH_HAS_TICK_BROADCAST`` |- **ok**: arm, arm64, mips |
| | | powerpc, riscv, sh |
| |arch provides tick_broadcast() |- **TODO**: alpha, arc, csky |
| | | h8300, hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, s390 |
| | | sparc, um, x86, xtensa |
+---------------------+-------------------------------------+------------------------------+
|batch-unmap-tlb-flush|``ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH``|- ok: x86 |
| | |- **TODO**: alpha, arc, arm |
| |arch supports deferral of TLB flush | csky, hexagon, ia64, mips |
| |until multiple pages are unmapped | nds32, parisc, powerpc |
| | | riscv, s390, sh, sparc |
| | | xtensa |
| | |- **N/A**: arm64 |
| | |- **Not compatible**: h8300 |
| | | m68k, microblaze, nios2 |
| | | openrisc, um |
+---------------------+-------------------------------------+------------------------------+
|cBPF-JIT |``HAVE_CBPF_JIT`` |- **ok**: mips, powerpc |
| | | sparc |
| |arch supports cBPF JIT optimizations |- **TODO**: alpha, arc, arm |
| | | arm64, csky, h8300, hexagon |
| | | ia64, m68k, microblaze |
| | | nds32, nios2, openrisc |
| | | parisc, riscv, s390, sh, um |
| | | x86, xtensa |
+---------------------+-------------------------------------+------------------------------+
|clockevents |``!LEGACY_TIMER_TICK`` |- **ok**: alpha, arc, arm64 |
| | | csky, h8300, hexagon |
| |arch support generic clock events | microblaze, mips, nds32 |
| | | nios2, openrisc, powerpc |
| | | riscv, s390, sh, sparc, um |
| | | x86, xtensa |
| | |- **TODO**: arm, ia64, m68k |
| | | parisc |
+---------------------+-------------------------------------+------------------------------+
|cmpxchg-local |``HAVE_CMPXCHG_LOCAL`` |- **ok**: arm64, s390, x86 |
| | |- **TODO**: alpha, arc, arm |
| |arch supports the this_cpu_cmpxchg() | csky, h8300, hexagon, ia64 |
| |API | m68k, microblaze, mips |
| | | nds32, nios2, openrisc |
| | | parisc, powerpc, riscv, sh |
| | | sparc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|debug-vm-pgtable |``ARCH_HAS_DEBUG_VM_PGTABLE`` |- **ok**: arc, arm64, powerpc |
| | | riscv, s390, x86 |
| |arch supports pgtable tests for |- **TODO**: alpha, arm, csky |
| |semantics compliance | h8300, hexagon, ia64, m68k |
| | | microblaze, mips, nds32 |
| | | nios2, openrisc, parisc, sh |
| | | sparc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|dma-contiguous |``HAVE_DMA_CONTIGUOUS`` |- **ok**: arm, arm64, csky |
| | | microblaze, mips, riscv |
| |arch supports the DMA CMA | s390, x86, xtensa |
| |(continuous memory allocator) |- **TODO**: alpha, arc, h8300 |
| | | hexagon, ia64, m68k, nds32 |
| | | nios2, openrisc, parisc |
| | | powerpc, sh, sparc, um |
+---------------------+-------------------------------------+------------------------------+
|eBPF-JIT |``HAVE_EBPF_JIT`` |- **ok**: arm, arm64, mips |
| | | powerpc, riscv, s390, sparc |
| |arch supports eBPF JIT optimizations | x86 |
| | |- **TODO**: alpha, arc, csky |
| | | h8300, hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, sh, um |
| | | xtensa |
+---------------------+-------------------------------------+------------------------------+
|ELF-ASLR |``ARCH_HAS_ELF_RANDOMIZE`` |- **ok**: arm, arm64, mips |
| | | parisc, powerpc, s390, x86 |
| |arch randomizes the stack, heap and |- **TODO**: alpha, arc, csky |
| |binary images of ELF binaries | h8300, hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, riscv, sh, sparc |
| | | um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|gcov-profile-all |``ARCH_HAS_GCOV_PROFILE_ALL`` |- **ok**: arm, arm64, csky |
| | | microblaze, mips, powerpc |
| |arch supports whole-kernel GCOV code | riscv, s390, sh, x86 |
| |coverage profiling |- **TODO**: alpha, arc, h8300 |
| | | hexagon, ia64, m68k, nds32 |
| | | nios2, openrisc, parisc |
| | | sparc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|generic-idle-thread |``GENERIC_SMP_IDLE_THREAD`` |- **ok**: alpha, arc, arm |
| | | arm64, csky, hexagon, ia64 |
| |arch makes use of the generic SMP | mips, openrisc, parisc |
| |idle thread facility | powerpc, riscv, s390, sh |
| | | sparc, x86, xtensa |
| | |- **TODO**: h8300, m68k |
| | | microblaze, nds32, nios2 |
| | | um |
+---------------------+-------------------------------------+------------------------------+
|huge-vmap |``HAVE_ARCH_HUGE_VMAP`` |- **ok**: arm64, powerpc, x86 |
| | |- **TODO**: alpha, arc, arm |
| |arch supports the | csky, h8300, hexagon, ia64 |
| |ioremap_pud_enabled() and | m68k, microblaze, mips |
| |ioremap_pmd_enabled() VM APIs | nds32, nios2, openrisc |
| | | parisc, riscv, s390, sh |
| | | sparc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|ioremap_prot |``HAVE_IOREMAP_PROT`` |- **ok**: arc, arm64, mips |
| | | powerpc, s390, sh, x86 |
| |arch has ioremap_prot() |- **TODO**: alpha, arm, csky |
| | | h8300, hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, riscv |
| | | sparc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|irq-time-acct |``HAVE_IRQ_TIME_ACCOUNTING`` |- **ok**: arm, arm64, mips |
| | | powerpc, riscv, x86, xtensa |
| |arch supports precise IRQ time |- **TODO**: arc, csky, h8300 |
| |accounting | hexagon, m68k, microblaze |
| | | nds32, nios2, openrisc, sh |
| | | um |
| | |- **Not compatible**: alpha |
| | | ia64, parisc, s390, sparc |
+---------------------+-------------------------------------+------------------------------+
|jump-labels |``HAVE_ARCH_JUMP_LABEL`` |- **ok**: arc, arm, arm64 |
| | | mips, parisc, powerpc |
| |arch supports live patched, high | riscv, s390, sparc, x86 |
| |efficiency branches | xtensa |
| | |- **TODO**: alpha, csky |
| | | h8300, hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, sh, um |
+---------------------+-------------------------------------+------------------------------+
|KASAN |``HAVE_ARCH_KASAN`` |- **ok**: arm, arm64, powerpc |
| | | riscv, s390, x86, xtensa |
| |arch supports the KASAN runtime |- **TODO**: alpha, arc, csky |
| |memory checker | h8300, hexagon, ia64, m68k |
| | | microblaze, mips, nds32 |
| | | nios2, openrisc, parisc, sh |
| | | sparc, um |
+---------------------+-------------------------------------+------------------------------+
|kcov |``ARCH_HAS_KCOV`` |- **ok**: arm, arm64, mips |
| | | powerpc, riscv, s390, um |
| |arch supports kcov for | x86 |
| |coverage-guided fuzzing |- **TODO**: alpha, arc, csky |
| | | h8300, hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, sh, sparc |
| | | xtensa |
+---------------------+-------------------------------------+------------------------------+
|kgdb |``HAVE_ARCH_KGDB`` |- **ok**: arc, arm, arm64 |
| | | h8300, hexagon, microblaze |
| |arch supports the kGDB kernel | mips, nios2, parisc |
| |debugger | powerpc, riscv, sh, sparc |
| | | x86 |
| | |- **TODO**: alpha, csky, ia64 |
| | | m68k, nds32, openrisc, s390 |
| | | um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|kmemleak |``HAVE_DEBUG_KMEMLEAK`` |- **ok**: arc, arm, arm64 |
| | | csky, microblaze, mips |
| |arch supports the kernel memory leak | nds32, powerpc, riscv, s390 |
| |detector | sh, sparc, um, x86, xtensa |
| | |- **TODO**: alpha, h8300 |
| | | hexagon, ia64, m68k, nios2 |
| | | openrisc, parisc |
+---------------------+-------------------------------------+------------------------------+
|kprobes |``HAVE_KPROBES`` |- **ok**: arc, arm, arm64 |
| | | csky, ia64, mips, parisc |
| |arch supports live patched kernel | powerpc, riscv, s390, sh |
| |probe | sparc, x86 |
| | |- **TODO**: alpha, h8300 |
| | | hexagon, m68k, microblaze |
| | | nds32, nios2, openrisc, um |
| | | xtensa |
+---------------------+-------------------------------------+------------------------------+
|kprobes-event |``HAVE_REGS_AND_STACK_ACCESS_API`` |- **ok**: arm, arm64, csky |
| | | hexagon, mips, nds32 |
| |arch supports kprobes with perf | parisc, powerpc, riscv |
| |events | s390, sh, sparc, x86 |
| | |- **TODO**: alpha, arc, h8300 |
| | | ia64, m68k, microblaze |
| | | nios2, openrisc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|kprobes-on-ftrace |``HAVE_KPROBES_ON_FTRACE`` |- **ok**: csky, parisc |
| | | powerpc, riscv, s390, x86 |
| |arch supports combined kprobes and |- **TODO**: alpha, arc, arm |
| |ftrace live patching | arm64, h8300, hexagon, ia64 |
| | | m68k, microblaze, mips |
| | | nds32, nios2, openrisc, sh |
| | | sparc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|kretprobes |``HAVE_KRETPROBES`` |- **ok**: arc, arm, arm64 |
| | | csky, ia64, mips, parisc |
| |arch supports kernel function-return | powerpc, riscv, s390, sh |
| |probes | sparc, x86 |
| | |- **TODO**: alpha, h8300 |
| | | hexagon, m68k, microblaze |
| | | nds32, nios2, openrisc, um |
| | | xtensa |
+---------------------+-------------------------------------+------------------------------+
|lockdep |``LOCKDEP_SUPPORT`` |- **ok**: arc, arm, arm64 |
| | | csky, hexagon, microblaze |
| |arch supports the runtime locking | mips, nds32, openrisc |
| |correctness debug facility | powerpc, riscv, s390, sh |
| | | sparc, um, x86, xtensa |
| | |- **TODO**: alpha, h8300 |
| | | ia64, m68k, nios2, parisc |
+---------------------+-------------------------------------+------------------------------+
|membarrier-sync-core |``ARCH_HAS_MEMBARRIER_SYNC_CORE`` |- **ok**: arm, arm64, powerpc |
| | | x86 |
| |arch supports core serializing |- **TODO**: alpha, arc, csky |
| |membarrier | h8300, hexagon, ia64, m68k |
| | | microblaze, mips, nds32 |
| | | nios2, openrisc, parisc |
| | | riscv, s390, sh, sparc, um |
| | | xtensa |
+---------------------+-------------------------------------+------------------------------+
|numa-balancing |``ARCH_SUPPORTS_NUMA_BALANCING`` |- **ok**: arm64, powerpc |
| | | riscv, s390, x86 |
| |arch supports NUMA balancing |- **TODO**: alpha, ia64, mips |
| | | nds32, sparc |
| | |- **Not compatible**: arc |
| | | arm, csky, h8300, hexagon |
| | | m68k, microblaze, nios2 |
| | | openrisc, parisc, sh, um |
| | | xtensa |
+---------------------+-------------------------------------+------------------------------+
|optprobes |``HAVE_OPTPROBES`` |- **ok**: arm, powerpc, x86 |
| | |- **TODO**: alpha, arc, arm64 |
| |arch supports live patched optprobes | csky, h8300, hexagon, ia64 |
| | | m68k, microblaze, mips |
| | | nds32, nios2, openrisc |
| | | parisc, riscv, s390, sh |
| | | sparc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|perf-regs |``HAVE_PERF_REGS`` |- **ok**: arm, arm64, csky |
| | | mips, powerpc, riscv, s390 |
| |arch supports perf events register | x86 |
| |access |- **TODO**: alpha, arc, h8300 |
| | | hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, sh, sparc |
| | | um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|perf-stackdump |``HAVE_PERF_USER_STACK_DUMP`` |- **ok**: arm, arm64, csky |
| | | mips, powerpc, riscv, s390 |
| |arch supports perf events stack dumps| x86 |
| | |- **TODO**: alpha, arc, h8300 |
| | | hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, sh, sparc |
| | | um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|PG_uncached |``ARCH_USES_PG_UNCACHED`` |- **ok**: ia64, x86 |
| | |- **TODO**: alpha, arc, arm |
| |arch supports the PG_uncached page | arm64, csky, h8300, hexagon |
| |flag | m68k, microblaze, mips |
| | | nds32, nios2, openrisc |
| | | parisc, powerpc, riscv |
| | | s390, sh, sparc, um, xtensa |
+---------------------+-------------------------------------+------------------------------+
|pte_special |``ARCH_HAS_PTE_SPECIAL`` |- **ok**: arc, arm, arm64 |
| | | mips, powerpc, riscv, s390 |
| |arch supports the | sh, sparc, x86 |
| |pte_special()/pte_mkspecial() VM APIs|- TODO: alpha, csky |
| | | h8300, hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, um |
| | | xtensa |
+———————+————————————-+——————————+
|queued-rwlocks |ARCH_USE_QUEUED_RWLOCKS
|- ok: arm64, csky, mips |
| | | openrisc, powerpc, sparc |
| |arch supports queued rwlocks | x86, xtensa |
| | |- TODO: alpha, arc, arm |
| | | h8300, hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | parisc, riscv, s390, sh, um |
+———————+————————————-+——————————+
|queued-spinlocks |ARCH_USE_QUEUED_SPINLOCKS
|- ok: arm64, mips |
| | | openrisc, powerpc, sparc |
| |arch supports queued spinlocks | x86, xtensa |
| | |- TODO: alpha, arc, arm |
| | | csky, h8300, hexagon, ia64 |
| | | m68k, microblaze, nds32 |
| | | nios2, parisc, riscv, s390 |
| | | sh, um |
+———————+————————————-+——————————+
|seccomp-filter |HAVE_ARCH_SECCOMP_FILTER
|- ok: arm, arm64, csky |
| | | mips, parisc, powerpc |
| |arch supports seccomp filters | riscv, s390, sh, um, x86 |
| | | xtensa |
| | |- TODO: alpha, arc, h8300 |
| | | hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, sparc |
+———————+————————————-+——————————+
|stackprotector |HAVE_STACKPROTECTOR
|- ok: arm, arm64, csky |
| | | mips, powerpc, riscv, sh |
| |arch supports compiler driven stack | x86, xtensa |
| |overflow protection |- TODO: alpha, arc, h8300 |
| | | hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, s390 |
| | | sparc, um |
+———————+————————————-+——————————+
|THP |HAVE_ARCH_TRANSPARENT_HUGEPAGE
|- ok: arc, arm, arm64 |
| | | mips, powerpc, s390, sparc |
| |arch supports transparent hugepages | x86 |
| | |- TODO: alpha, ia64 |
| | | nds32, parisc, riscv |
| | |- Not compatible: csky |
| | | h8300, hexagon, m68k |
| | | microblaze, nios2, openrisc |
| | | sh, um, xtensa |
+———————+————————————-+——————————+
|thread-info-in-task |THREAD_INFO_IN_TASK
|- ok: arm64, nds32 |
| | | powerpc, riscv, s390, x86 |
| |arch makes use of the core kernel |- TODO: alpha, arc, arm |
| |facility to embedd thread_info in | csky, h8300, hexagon, ia64 |
| |task_struct | m68k, microblaze, mips |
| | | nios2, openrisc, parisc, sh |
| | | sparc, um, xtensa |
+———————+————————————-+——————————+
|tracehook |HAVE_ARCH_TRACEHOOK
|- ok: arc, arm, arm64 |
| | | csky, hexagon, ia64, mips |
| |arch supports tracehook (ptrace) | nds32, nios2, openrisc |
| |register handling APIs | parisc, powerpc, riscv |
| | | s390, sh, sparc, x86 |
| | | xtensa |
| | |- TODO: alpha, h8300 |
| | | m68k, microblaze, um |
+———————+————————————-+——————————+
|uprobes |ARCH_SUPPORTS_UPROBES
|- ok: arm, arm64, csky |
| | | mips, powerpc, riscv, s390 |
| |arch supports live patched user | sparc, x86 |
| |probes |- TODO: alpha, arc, h8300 |
| | | hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, sh, um |
| | | xtensa |
+———————+————————————-+——————————+
|user-context-tracking|``HAVE_CONTEXT_TRACKING_USER`` |- ok: arm, arm64, csky |
| | | mips, powerpc, riscv, sparc |
| |arch supports user context tracking | x86 |
| |for NO_HZ_FULL |- TODO: alpha, arc, h8300 |
| | | hexagon, ia64, m68k |
| | | microblaze, nds32, nios2 |
| | | openrisc, parisc, s390, sh |
| | | um, xtensa |
+———————+————————————-+——————————+
|user-ret-profiler |HAVE_USER_RETURN_NOTIFIER
|- ok: x86 |
| | |- TODO: alpha, arc, arm |
| |arch supports user-space return from | arm64, csky, h8300, hexagon |
| |system call profiler | ia64, m68k, microblaze |
| | | mips, nds32, nios2 |
| | | openrisc, parisc, powerpc |
| | | riscv, s390, sh, sparc, um |
| | | xtensa |
+———————+————————————-+——————————+
|virt-cpuacct |HAVE_VIRT_CPU_ACCOUNTING
|- ok: alpha, arm, arm64 |
| | | csky, ia64, mips, parisc |
| |arch supports precise virtual CPU | powerpc, s390, sparc, x86 |
| |time accounting |- TODO: arc, h8300 |
| | | hexagon, m68k, microblaze |
| | | nds32, nios2, openrisc |
| | | riscv, sh, um, xtensa |
+———————+————————————-+——————————+