Add RPMI support for the RISC-V server reference platform by wiring the
existing RISC-V RPMI device and FDT helpers into the riscv-server-ref
machine.
The series enables Base, System Reset, HSM, and System Suspend service
groups for riscv-server-ref. When QEMU is built with librpmi support,
the riscv-server-ref machine always advertises reset, shutdown, HSM, and
suspend through RPMI and has no rpmi=on|off machine option.
If librpmi is not enabled in a default riscv64-softmmu build, configure
warns that riscv-server-ref will be built without RPMI support and
continues so RISC-V machines that do not require RPMI still build without
librpmi. Booting riscv-server-ref from such a build also emits a warning
that RPMI support is not compiled in.
Dependencies:
- Daniel Henrique Barboza's prerequisite server reference board series:
[PATCH v9 0/5] hw/riscv: Server Platform Reference Board
https://lore.kernel.org/qemu-devel/20260903183125.682865-1-daniel.barboza@oss.qualcomm.com/
- RPMI virt prerequisite:
[PATCH v10 00/10] riscv: add initial RPMI virt support
https://lore.kernel.org/qemu-devel/20260828112803.86636-1-subrahmanya.lingappa@oss.qualcomm.com/
Public branch for this exact stack:
https://github.com/slingappa/qemu/tree/server-ref-platform
The PR/review branch is based on a replay of the RPMI virt support on
top of Daniel's server-ref v9 branch:
https://github.com/slingappa/qemu/tree/server-ref-platform-base
Testing:
- Built riscv64-softmmu with librpmi.
- Ran focused RPMI qtests:
- qemu:qtest-riscv64/riscv-rpmi-virt-test: 18 subtests passed
- qemu:qtest-riscv64/riscv-rpmi-server-ref-test: 15 subtests passed
- Built riscv64-softmmu without librpmi.
- Checked that riscv-server-ref boots from the no-librpmi build and
reports that RPMI support is not compiled in.
- Booted riscv-server-ref Linux guest and checked OpenSBI, Linux, board
model, e1000e, and init startup console messages.
- Booted riscv-server-ref Linux guest to login prompt and validated
RPMI-backed poweroff, reboot, and suspend/wakeup from the guest console.
Subrahmanya Lingappa (2):
hw/riscv: add RPMI support for server reference platform
tests/qtest: split RISC-V RPMI tests by machine
MAINTAINERS | 2 +-
docs/system/riscv/riscv-server-ref.rst | 41 ++
hw/riscv/Kconfig | 1 +
hw/riscv/server_platform_ref.c | 146 ++++++-
meson.build | 4 +
tests/qtest/meson.build | 4 +-
tests/qtest/riscv-rpmi-server-ref-test.c | 36 ++
tests/qtest/riscv-rpmi-test.c | 476 ++++++++++++-----------
tests/qtest/riscv-rpmi-test.h | 131 +++++++
tests/qtest/riscv-rpmi-virt-test.c | 45 +++
10 files changed, 659 insertions(+), 227 deletions(-)
create mode 100644 tests/qtest/riscv-rpmi-server-ref-test.c
create mode 100644 tests/qtest/riscv-rpmi-test.h
create mode 100644 tests/qtest/riscv-rpmi-virt-test.c
base-commit: 8e3bcd4648eea7e4f38781308eff13cbf828ae82
--
2.43.0