Photo by Florian Krumm

Xen on RISC-V just ran on real hardware!

RISC-V Sep 3, 2026

Big milestone for the Xen on RISC-V effort: Xen now boots a guest domain on physical RISC-V hardware, not just QEMU. Oleksii Kurochko and I, Baptiste Le Duc, got it there as Hypervisor and Kernel Engineers at Vates.

If you have followed our previous posts, the story so far has been "Xen is running in the emulator". QEMU is great for iterating fast, even if its implementation is not always fully spec-compliant, but it is also forgiving in ways real silicon is not. The only way to know Xen actually works on RISC-V is to put it on a board and watch it come up, or, less happily, fail.

💡
What this is
Xen boots and launches a guest domain on a HiFive Premier P550, on real silicon. The board's CPU implements a pre-ratification draft of the RISC-V hypervisor extension, so Xen needed changes to run on it. The series is not upstream yet.

The board

We picked the HiFive Premier P550, because one was already hosted on a runner at Minerva Systems.

The board itself is recent, and started shipping at the end of 2024. The CPU inside it is not, and that turned out to be the whole challenge. SiFive announced the P550 core in June 2021, six months before the RISC-V hypervisor extension was ratified, so the EIC7700X pairs a current SoC with a core designed against a spec that had not settled yet. It has only a PLIC interrupt controller, and it implements a pre-ratification draft of the hypervisor extension: the EIC7700X manual claims Hypervisor-Level ISA v0.6.

Xen supports the ratified extension. Getting a guest to boot for real therefore meant gating the CSRs and extensions this board does not have.

Wiring it into CI

A one-off boot on a bench is not worth much if nobody can reproduce it, so the same series adds a proper CI job: a runner container that drives the board's UART and MCU lines and serves images over TFTP, plus a smoke test that flashes Xen and a Linux guest and watches the console for the guest's boot message.

End to end, Xen boots, creates a guest domain, then launches it. The guest starts and prints its expected boot message, "Hello RISC-V World!", and the pipeline that had been waiting on that string goes green.

The line the whole pipeline was waiting for, on real hardware rather than in QEMU.

Reviewers welcome

This has not been sent to the Xen mailing list yet. We have other patch series that need upstreaming first, and we would rather not pile pressure on the reviewers.

That said, reviewers always welcome. Know RISC-V, virtualization, or low-level dev? Jump in. Don't have that background yet? This is the place to build it.

Files · hifive-premier-p550-support · xen-project / people / baptleduc / xen · GitLab
Mirror of the Xen Repository (PRs not accepted see: http://wiki.xenproject.org/wiki/Submitting_Xen_Project_Patches)

Try or review it

Tags

Baptiste Le Duc

Hypervisor & Kernel Engineer Intern at Vates porting Xen to RISC-V