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

Reply via email to