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