<!DOCTYPE html>
<html lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Feature status on riscv architecture — The Linux Kernel documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../_static/alabaster.css?v=3918102e" />
<script src="../../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="s390 Architecture" href="../s390/index.html" />
<link rel="prev" title="Concurrent Modification and Execution of Instructions (CMODX) for RISC-V Linux" href="cmodx.html" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/logo.svg" alt="Logo of The Linux Kernel"/>
</a></p>
<h1 class="logo"><a href="../../index.html">The Linux Kernel</a></h1>
<p class="blurb">6.18.50</p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>
<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/index.html">All development-process docs</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../subsystem-apis.html">Subsystems</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">CPU architectures</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../arc/index.html">ARC architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arm/index.html">ARM Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arm64/index.html">ARM64 Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../loongarch/index.html">LoongArch Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../m68k/index.html">m68k Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mips/index.html">MIPS-specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../nios2/index.html">Nios II Specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../openrisc/index.html">OpenRISC Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../parisc/index.html">PA-RISC Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../powerpc/index.html">powerpc</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">RISC-V architecture</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="acpi.html">ACPI on RISC-V</a></li>
<li class="toctree-l3"><a class="reference internal" href="boot.html">RISC-V Kernel Boot Requirements and Constraints</a></li>
<li class="toctree-l3"><a class="reference internal" href="boot-image-header.html">Boot image header in RISC-V Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="vm-layout.html">Virtual Memory Layout on RISC-V Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="hwprobe.html">RISC-V Hardware Probing Interface</a></li>
<li class="toctree-l3"><a class="reference internal" href="patch-acceptance.html">arch/riscv maintenance guidelines for developers</a></li>
<li class="toctree-l3"><a class="reference internal" href="uabi.html">RISC-V Linux User ABI</a></li>
<li class="toctree-l3"><a class="reference internal" href="vector.html">Vector Extension Support for RISC-V Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="cmodx.html">Concurrent Modification and Execution of Instructions (CMODX) for RISC-V Linux</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Feature status on riscv architecture</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../s390/index.html">s390 Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sh/index.html">SuperH Interfaces Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sparc/index.html">Sparc Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../x86/index.html">x86-specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../xtensa/index.html">Xtensa Architecture</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../translations/index.html">Translations</a></li>
</ul>
</div>
<script type="text/javascript"> <!--
var sbar = document.getElementsByClassName("sphinxsidebar")[0];
let currents = document.getElementsByClassName("current")
if (currents.length) {
sbar.scrollTop = currents[currents.length - 1].offsetTop;
}
--> </script>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/arch/riscv/features.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="feature-status-on-riscv-architecture">
<h1>Feature status on riscv architecture<a class="headerlink" href="#feature-status-on-riscv-architecture" title="Link to this heading">ΒΆ</a></h1>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Subsystem</p></th>
<th class="head"><p>Feature</p></th>
<th class="head"><p>Kconfig</p></th>
<th class="head"><p>Status</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>core</p></td>
<td><p>cBPF-JIT</p></td>
<td><p>HAVE_CBPF_JIT</p></td>
<td><p>TODO</p></td>
<td><p>arch supports cBPF JIT optimizations</p></td>
</tr>
<tr class="row-odd"><td><p>core</p></td>
<td><p>eBPF-JIT</p></td>
<td><p>HAVE_EBPF_JIT</p></td>
<td><p>ok</p></td>
<td><p>arch supports eBPF JIT optimizations</p></td>
</tr>
<tr class="row-even"><td><p>core</p></td>
<td><p>generic-idle-thread</p></td>
<td><p>GENERIC_SMP_IDLE_THREAD</p></td>
<td><p>ok</p></td>
<td><p>arch makes use of the generic SMP idle thread facility</p></td>
</tr>
<tr class="row-odd"><td><p>core</p></td>
<td><p>jump-labels</p></td>
<td><p>HAVE_ARCH_JUMP_LABEL</p></td>
<td><p>ok</p></td>
<td><p>arch supports live patched, high efficiency branches</p></td>
</tr>
<tr class="row-even"><td><p>core</p></td>
<td><p>mseal-system-mappings</p></td>
<td><p>ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS</p></td>
<td><p>ok</p></td>
<td><p>arch supports mseal system mappings</p></td>
</tr>
<tr class="row-odd"><td><p>core</p></td>
<td><p>thread-info-in-task</p></td>
<td><p>THREAD_INFO_IN_TASK</p></td>
<td><p>ok</p></td>
<td><p>arch makes use of the core kernel facility to embed thread_info in task_struct</p></td>
</tr>
<tr class="row-even"><td><p>core</p></td>
<td><p>tracehook</p></td>
<td><p>HAVE_ARCH_TRACEHOOK</p></td>
<td><p>ok</p></td>
<td><p>arch supports tracehook (ptrace) register handling APIs</p></td>
</tr>
<tr class="row-odd"><td><p>debug</p></td>
<td><p>debug-vm-pgtable</p></td>
<td><p>ARCH_HAS_DEBUG_VM_PGTABLE</p></td>
<td><p>ok</p></td>
<td><p>arch supports pgtable tests for semantics compliance</p></td>
</tr>
<tr class="row-even"><td><p>debug</p></td>
<td><p>gcov-profile-all</p></td>
<td><p>ARCH_HAS_GCOV_PROFILE_ALL</p></td>
<td><p>ok</p></td>
<td><p>arch supports whole-kernel GCOV code coverage profiling</p></td>
</tr>
<tr class="row-odd"><td><p>debug</p></td>
<td><p>KASAN</p></td>
<td><p>HAVE_ARCH_KASAN</p></td>
<td><p>ok</p></td>
<td><p>arch supports the KASAN runtime memory checker</p></td>
</tr>
<tr class="row-even"><td><p>debug</p></td>
<td><p>kcov</p></td>
<td><p>ARCH_HAS_KCOV</p></td>
<td><p>ok</p></td>
<td><p>arch supports kcov for coverage-guided fuzzing</p></td>
</tr>
<tr class="row-odd"><td><p>debug</p></td>
<td><p>kgdb</p></td>
<td><p>HAVE_ARCH_KGDB</p></td>
<td><p>ok</p></td>
<td><p>arch supports the kGDB kernel debugger</p></td>
</tr>
<tr class="row-even"><td><p>debug</p></td>
<td><p>kmemleak</p></td>
<td><p>HAVE_DEBUG_KMEMLEAK</p></td>
<td><p>ok</p></td>
<td><p>arch supports the kernel memory leak detector</p></td>
</tr>
<tr class="row-odd"><td><p>debug</p></td>
<td><p>kprobes</p></td>
<td><p>HAVE_KPROBES</p></td>
<td><p>ok</p></td>
<td><p>arch supports live patched kernel probe</p></td>
</tr>
<tr class="row-even"><td><p>debug</p></td>
<td><p>kprobes-on-ftrace</p></td>
<td><p>HAVE_KPROBES_ON_FTRACE</p></td>
<td><p>TODO</p></td>
<td><p>arch supports combined kprobes and ftrace live patching</p></td>
</tr>
<tr class="row-odd"><td><p>debug</p></td>
<td><p>kretprobes</p></td>
<td><p>HAVE_KRETPROBES</p></td>
<td><p>ok</p></td>
<td><p>arch supports kernel function-return probes</p></td>
</tr>
<tr class="row-even"><td><p>debug</p></td>
<td><p>optprobes</p></td>
<td><p>HAVE_OPTPROBES</p></td>
<td><p>TODO</p></td>
<td><p>arch supports live patched optprobes</p></td>
</tr>
<tr class="row-odd"><td><p>debug</p></td>
<td><p>stackprotector</p></td>
<td><p>HAVE_STACKPROTECTOR</p></td>
<td><p>ok</p></td>
<td><p>arch supports compiler driven stack overflow protection</p></td>
</tr>
<tr class="row-even"><td><p>debug</p></td>
<td><p>uprobes</p></td>
<td><p>ARCH_SUPPORTS_UPROBES</p></td>
<td><p>ok</p></td>
<td><p>arch supports live patched user probes</p></td>
</tr>
<tr class="row-odd"><td><p>debug</p></td>
<td><p>user-ret-profiler</p></td>
<td><p>HAVE_USER_RETURN_NOTIFIER</p></td>
<td><p>TODO</p></td>
<td><p>arch supports user-space return from system call profiler</p></td>
</tr>
<tr class="row-even"><td><p>io</p></td>
<td><p>dma-contiguous</p></td>
<td><p>HAVE_DMA_CONTIGUOUS</p></td>
<td><p>ok</p></td>
<td><p>arch supports the DMA CMA (continuous memory allocator)</p></td>
</tr>
<tr class="row-odd"><td><p>locking</p></td>
<td><p>cmpxchg-local</p></td>
<td><p>HAVE_CMPXCHG_LOCAL</p></td>
<td><p>TODO</p></td>
<td><p>arch supports the <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">this_cpu_cmpxchg()</span></code> API</p></td>
</tr>
<tr class="row-even"><td><p>locking</p></td>
<td><p>lockdep</p></td>
<td><p>LOCKDEP_SUPPORT</p></td>
<td><p>ok</p></td>
<td><p>arch supports the runtime locking correctness debug facility</p></td>
</tr>
<tr class="row-odd"><td><p>locking</p></td>
<td><p>queued-rwlocks</p></td>
<td><p>ARCH_USE_QUEUED_RWLOCKS</p></td>
<td><p>ok</p></td>
<td><p>arch supports queued rwlocks</p></td>
</tr>
<tr class="row-even"><td><p>locking</p></td>
<td><p>queued-spinlocks</p></td>
<td><p>ARCH_USE_QUEUED_SPINLOCKS</p></td>
<td><p>ok</p></td>
<td><p>arch supports queued spinlocks</p></td>
</tr>
<tr class="row-odd"><td><p>perf</p></td>
<td><p>kprobes-event</p></td>
<td><p>HAVE_REGS_AND_STACK_ACCESS_API</p></td>
<td><p>ok</p></td>
<td><p>arch supports kprobes with perf events</p></td>
</tr>
<tr class="row-even"><td><p>perf</p></td>
<td><p>perf-regs</p></td>
<td><p>HAVE_PERF_REGS</p></td>
<td><p>ok</p></td>
<td><p>arch supports perf events register access</p></td>
</tr>
<tr class="row-odd"><td><p>perf</p></td>
<td><p>perf-stackdump</p></td>
<td><p>HAVE_PERF_USER_STACK_DUMP</p></td>
<td><p>ok</p></td>
<td><p>arch supports perf events stack dumps</p></td>
</tr>
<tr class="row-even"><td><p>sched</p></td>
<td><p>membarrier-sync-core</p></td>
<td><p>ARCH_HAS_MEMBARRIER_SYNC_CORE</p></td>
<td><p>ok</p></td>
<td><p>arch supports core serializing membarrier</p></td>
</tr>
<tr class="row-odd"><td><p>sched</p></td>
<td><p>numa-balancing</p></td>
<td><p>ARCH_SUPPORTS_NUMA_BALANCING</p></td>
<td><p>ok</p></td>
<td><p>arch supports NUMA balancing</p></td>
</tr>
<tr class="row-even"><td><p>seccomp</p></td>
<td><p>seccomp-filter</p></td>
<td><p>HAVE_ARCH_SECCOMP_FILTER</p></td>
<td><p>ok</p></td>
<td><p>arch supports seccomp filters</p></td>
</tr>
<tr class="row-odd"><td><p>time</p></td>
<td><p>arch-tick-broadcast</p></td>
<td><p>ARCH_HAS_TICK_BROADCAST</p></td>
<td><p>ok</p></td>
<td><p>arch provides <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">tick_broadcast()</span></code></p></td>
</tr>
<tr class="row-even"><td><p>time</p></td>
<td><p>clockevents</p></td>
<td><p>!LEGACY_TIMER_TICK</p></td>
<td><p>ok</p></td>
<td><p>arch support generic clock events</p></td>
</tr>
<tr class="row-odd"><td><p>time</p></td>
<td><p>irq-time-acct</p></td>
<td><p>HAVE_IRQ_TIME_ACCOUNTING</p></td>
<td><p>ok</p></td>
<td><p>arch supports precise IRQ time accounting</p></td>
</tr>
<tr class="row-even"><td><p>time</p></td>
<td><p>user-context-tracking</p></td>
<td><p>HAVE_CONTEXT_TRACKING_USER</p></td>
<td><p>ok</p></td>
<td><p>arch supports user context tracking for NO_HZ_FULL</p></td>
</tr>
<tr class="row-odd"><td><p>time</p></td>
<td><p>virt-cpuacct</p></td>
<td><p>HAVE_VIRT_CPU_ACCOUNTING</p></td>
<td><p>TODO</p></td>
<td><p>arch supports precise virtual CPU time accounting</p></td>
</tr>
<tr class="row-even"><td><p>vm</p></td>
<td><p>batch-unmap-tlb-flush</p></td>
<td><p>ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH</p></td>
<td><p>ok</p></td>
<td><p>arch supports deferral of TLB flush until multiple pages are unmapped</p></td>
</tr>
<tr class="row-odd"><td><p>vm</p></td>
<td><p>ELF-ASLR</p></td>
<td><p>ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT</p></td>
<td><p>ok</p></td>
<td><p>arch randomizes the stack, heap and binary images of ELF binaries</p></td>
</tr>
<tr class="row-even"><td><p>vm</p></td>
<td><p>huge-vmap</p></td>
<td><p>HAVE_ARCH_HUGE_VMAP</p></td>
<td><p>ok</p></td>
<td><p>arch supports the <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">arch_vmap_pud_supported()</span></code> and <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">arch_vmap_pmd_supported()</span></code> VM APIs</p></td>
</tr>
<tr class="row-odd"><td><p>vm</p></td>
<td><p>ioremap_prot</p></td>
<td><p>HAVE_IOREMAP_PROT</p></td>
<td><p>TODO</p></td>
<td><p>arch has <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">ioremap_prot()</span></code></p></td>
</tr>
<tr class="row-even"><td><p>vm</p></td>
<td><p>pte_special</p></td>
<td><p>ARCH_HAS_PTE_SPECIAL</p></td>
<td><p>ok</p></td>
<td><p>arch supports the <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">pte_special()</span></code>/<code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">pte_mkspecial()</span></code> VM APIs</p></td>
</tr>
<tr class="row-odd"><td><p>vm</p></td>
<td><p>THP</p></td>
<td><p>HAVE_ARCH_TRANSPARENT_HUGEPAGE</p></td>
<td><p>ok</p></td>
<td><p>arch supports transparent hugepages</p></td>
</tr>
</tbody>
</table>
</section>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="../../_sources/arch/riscv/features.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>