Philippe,

On Mon, Jul 20, 2026 at 4:26 PM Philippe Mathieu-Daudé
<[email protected]> wrote:
>
> On 14/7/26 09:56, Subrahmanya Lingappa wrote:
> > Add the virt machine rpmi=on/off option and wire the initial RPMI Base
> > transport into machine realization.
> >
> > The option remains disabled by default and requires TCG plus librpmi.
> > Invalid accelerator/build combinations fail during machine
> > initialization. When enabled, virt allocates the RPMI shared-memory
> > transport, creates the RPMI device, configures Base service metadata,
> > and emits the corresponding device-tree nodes for firmware discovery.
> >
> > Signed-off-by: Subrahmanya Lingappa <[email protected]>
> > ---
> >   hw/riscv/Kconfig             |  1 +
> >   hw/riscv/virt.c              | 96 ++++++++++++++++++++++++++++++++++++
> >   include/hw/misc/riscv_rpmi.h | 10 ++++
> >   include/hw/riscv/virt.h      |  3 ++
> >   4 files changed, 110 insertions(+)
>
>
> > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> > index 33775a61fd..e52ccfae1f 100644
> > --- a/hw/riscv/virt.c
> > +++ b/hw/riscv/virt.c
>
>
> > @@ -1410,6 +1452,18 @@ static void virt_machine_init(MachineState *machine)
> >           exit(1);
> >       }
> >
> > +
> > +    if (s->have_rpmi) {
> > +#ifndef CONFIG_LIBRPMI
> > +        error_report("RISC-V RPMI support is not compiled in");
> > +        exit(1);
> > +#else
> > +        if (kvm_enabled()) {
> > +            error_report("RISC-V RPMI support is not available with KVM");
> > +            exit(1);
> > +        }
> > +#endif
> > +    }
>
>
> > diff --git a/include/hw/misc/riscv_rpmi.h b/include/hw/misc/riscv_rpmi.h
> > index cb2658e57e..b5d8a32f9b 100644
> > --- a/include/hw/misc/riscv_rpmi.h
> > +++ b/include/hw/misc/riscv_rpmi.h
> > @@ -85,6 +85,16 @@ struct RiscvRpmiState {
> >       bool has_shmem;
> >   };
> >
> > +#ifdef CONFIG_LIBRPMI
> >   DeviceState *riscv_rpmi_create(const RiscvRpmiConfig *cfg, Error **errp);
> > +#else
> > +static inline DeviceState *riscv_rpmi_create(const RiscvRpmiConfig *cfg,
> > +                                             Error **errp)
> > +{
> > +    (void)cfg;
> > +    (void)errp;
> > +    return NULL;
> > +}
> > +#endif
>
> Could we use a stub file instead?

  Thanks, agreed. v4 still keeps this as an inline fallback with
  G_GNUC_UNUSED, but I will move it to a dedicated stub source file in the
  next revision.

thanks,
Subbu

Reply via email to