On Thu, Jun 04, 2026 at 06:52:42AM -0300, Daniel Henrique Barboza wrote: > From: Fei Wu <[email protected]> > > 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;
s/No virtio device/No Virtio MMIO transports/ Virtio devices, when plugged into PCIe slots, are fine. The spec doesn't care about that and it's even possible to make real hardware that conforms to the Virtio spec. > - No fw_cfg device; > - No ACPI table provided; Maybe point out the reason there's no ACPI tables, even though the spec mandates the use of ACPI, is because it is expected that the firmware generate those tables. > - Only minimal device tree nodes. > > [1] https://github.com/riscv-non-isa/riscv-server-platform > > Signed-off-by: Fei Wu <[email protected]> > Signed-off-by: Daniel Henrique Barboza <[email protected]> > --- > configs/devices/riscv64-softmmu/default.mak | 1 + > hw/riscv/Kconfig | 15 + > hw/riscv/meson.build | 1 + > hw/riscv/server_platform_ref.c | 1373 +++++++++++++++++++ > 4 files changed, 1390 insertions(+) > create mode 100644 hw/riscv/server_platform_ref.c > ... > +static void rvserver_ref_machine_class_init(ObjectClass *oc, const void > *data) > +{ > + char str[128]; > + MachineClass *mc = MACHINE_CLASS(oc); > + static const char * const valid_cpu_types[] = { > + TYPE_RISCV_CPU_RVSERVER_REF, > + }; > + > + mc->desc = "RISC-V Server SoC Reference board"; Is 'SoC' the right thing to call this? We're aiming to model the whole specified server platform, not just the server soc (which has its own spec). I also suggest adding 'v1.0' to the description. Do CPU models have descriptions? If so, then 'v1.0' there would be good too. > + mc->init = rvserver_ref_machine_init; > + mc->max_cpus = RVSERVER_CPUS_MAX; > + mc->default_cpu_type = TYPE_RISCV_CPU_RVSERVER_REF; > + mc->valid_cpu_types = valid_cpu_types; > + mc->pci_allow_0_address = true; > + mc->default_nic = "e1000e"; virtio-net-pci would probably be fine. See my comment about virtio devices above. Thanks, drew
