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 | +———————+————————————-+——————————+