Community-maintained QEMU for RISC-V, ARM, and dynamic translation
A practical workspace for upstream-oriented engineering, experiments, and ecosystem enablement.
QEMU · Documentation · qemu-devel archive · Upstream source
This repository is our community-maintained downstream tree of QEMU. Its primary focus is the QEMU RISC-V target and the wider RISC-V ecosystem, with related work in ARM support and TCG-based binary translation. It is a development tree for work that is being prepared for, discussed with, or carried toward upstream QEMU.
This tree complements upstream QEMU rather than replacing it. Downstream branches may contain work in progress, experimental implementations, RFC snapshots, and integration support that are not yet part of an upstream release.
Our upstream contributions span the complete path from target architecture semantics to generated host code. The goal is to make QEMU more capable, measurable, and efficient while keeping the changes maintainable for the upstream community.
| Area | Focus |
|---|---|
| QEMU RISC-V | ISA and CPU support, machine and platform enablement, device models, architecture-level improvements, and correctness or performance testing. |
| QEMU ARM | Architecture support, system components, IOMMU/SMMU-related work, test coverage, and optimizations that improve emulation quality and performance. |
| TCG and binary translation | Improvements across instruction lowering, TCG IR construction and optimization, host code generation, fast paths, and target/backend coordination. |
Architecture work is not limited to adding an instruction or a device. We also look at how architectural behavior can be represented more directly and efficiently in QEMU: CPU models, system instructions, memory and exception behavior, platform devices, and the tests that protect them.
TCG is the bridge between guest instructions and executable host code. Our optimization work therefore covers both sides of that bridge: reducing unnecessary translation work, improving generated code, exposing useful target capabilities, and keeping the resulting behavior correct across different hosts and guests.
Where possible, upstream submissions include the implementation, tests, benchmarks, and design context needed for review.
The following contributors are among the core active members of our community in upstream QEMU. The links search the qemu-devel mailing-list archive by name, making it easy to follow patch series, reviews, and RFC discussions.
| Contributor | Representative areas | Upstream discussions |
|---|---|---|
| Chao Liu | RISC-V CPU and platform support, architecture-level work, ARM/IOMMU, and TCG-related contributions | Search qemu-devel |
| Tao Tang | RISC-V and TCG implementation, optimization, and review work | Search qemu-devel |
| Junze Cao | RISC-V/TCG development and early-stage RFC discussions | Search qemu-devel |
The focus labels above are intentionally broad. Contributions often cross the boundary between a target architecture and TCG, and many upstream changes are collaborative.
Our downstream branches provide a focused place to develop and validate work before it is ready for upstream review. They may include:
| Category | What to expect |
|---|---|
| Community developments | New features, optimizations, prototypes, and other progress developed by our community. |
| RFC discussions | Early implementations, alternative designs, benchmarks, and patch snapshots used to collect feedback from upstream and ecosystem developers. |
| Project enablement | QEMU changes and integration support required by adjacent projects and workflows, including cosim-gpu. |
The downstream tree is deliberately fast-moving. If you need a stable, broadly supported QEMU release, use an official upstream release or a distribution package. If you want to evaluate a new idea, reproduce a benchmark, or help shape an upstream change, this is the right place to start.
Idea → Downstream implementation → Tests and benchmarks → RFC on qemu-devel → Upstream patch series
Downstream work is most valuable when it leaves a clear trail: why the change is needed, how it affects translation or emulation, how it was measured, and what feedback is still open. The downstream branch is a staging ground; upstream QEMU remains the long-term home for generally useful changes.
This tree follows the standard QEMU build system. A minimal build looks like this:
mkdir build
cd build
../configure
make -j"$(nproc)"For platform-specific dependencies and configuration options, see the QEMU documentation and the upstream build documentation. The original upstream-oriented notes in this source tree are also available in README.rst.
Issues, design feedback, benchmarks, and implementation suggestions are welcome. For work intended to enter upstream QEMU:
- Explain the problem and the architectural or translation-level impact.
- Include focused tests and performance data where relevant.
- Send the patch series or RFC to the
qemu-develmailing list and follow the QEMU contribution guidelines.
For downstream-only experiments, keep the scope and status visible in the branch or commit message so that users can distinguish exploratory work from upstream-ready changes.
QEMU is released under the GNU General Public License, version 2. See LICENSE and the headers of individual files for the applicable licensing terms.
Built in the open · measured in practice · upstream when ready