On Sat, Sep 5, 2026 at 1:27 AM Daniel Henrique Barboza <[email protected]> wrote: > > The RISC-V Server Platform specification [1] defines a standardized set > of hardware and software capabilities, that portable system software, > such as OS and hypervisors can rely on being present in a RISC-V server > platform. > > The main features included in this emulation are: > > - Based on riscv virt machine type; > - A new memory map as close as virt machine as possible; > - An always present IOMMU platform device (riscv-iommu-sys) that uses > IRQs 36 to 39, one IRQ for queue, similar to the 'virt' board; > - AIA; > - PCIe AHCI; > - PCIe NIC; > - No virtio device; > - No fw_cfg device; > - No ACPI table provided; > - Only minimal device tree nodes; > - a platform bus for TPM support. > > A note about TPM support: TPM devices in QEMU comes usually in two > flavors - emulated or passthrough. A passthrough device requires a host > TPM device that the QEMU process can borrow and it's usually coupled > with KVM acceleration. > > To use the TPM emulator we'll need help from an external TPM emulator > called swtpm. More info can be found in [2]. For our purposes this is > a process that, if running Ubuntu, can be installed via 'swtpm' package. > We'll go back to it shortly. > > For now, adding support for the emulated TPM device 'tpm-tis' (other TPM > flavors might work as well, 'tpm-tis' is the one tested with this work) > requires a platform bus. Adding a platform bus will open the door for > more devices to be added in the board. This is ok - a reference board > isn't a restricted board and users are free to add devices at their > leisure. > > Here's how to use tpm-tis with the riscv-server-ref board: > > - in a separated shell/term run 'swtpm' (--log is optional): > > $ mkdir /tmp/mytpm1 > $ swtpm socket --tpmstate dir=/tmp/mytpm1 \ > --ctrl type=unixio,path=/tmp/mytpm1/swtpm-sock \ > --tpm2 \ > --log level=20 > > Then start QEMU with: > > $ qemu-system-riscv64 -M riscv-server-ref (...) \ > -chardev socket,id=chrtpm,path=/tmp/mytpm1/swtpm-sock \ > -tpmdev emulator,id=tpm0,chardev=chrtpm\ > -device tpm-tis-device,tpmdev=tpm0 > > [1] https://github.com/riscv-non-isa/riscv-server-platform > [2] https://qemu-project.gitlab.io/qemu/specs/tpm.html > > Signed-off-by: Daniel Henrique Barboza <[email protected]> > Reviewed-by: Nutty Liu <[email protected]> > Reviewed-by: Chao Liu <[email protected]> > --- > configs/devices/riscv64-softmmu/default.mak | 1 + > hw/riscv/Kconfig | 16 + > hw/riscv/meson.build | 1 + > hw/riscv/server_platform_ref.c | 769 ++++++++++++++++++++ > 4 files changed, 787 insertions(+) > create mode 100644 hw/riscv/server_platform_ref.c > LGTM.
Reviewed-by: Sunil V L <[email protected]>
