Re: [PATCH v8 02/10] hw/misc: add RISC-V RPMI transport and Base support

Sunil V L <[email protected]>
Newsgroups org.nongnu.qemu-riscv,org.nongnu.qemu-devel
Message-ID <CAB19ukFjhg9HEbKKBH1+i8pkLnC4wEH3zGyXhHcTbBLdgFJgTQ@mail.gmail.com>
On Fri, Aug 14, 2026 at 10:25 AM Subrahmanya Lingappa
<[email protected]> wrote:
>
> RPMI (RISC-V Platform Management Interface) is the RISC-V non-ISA
> platform management specification. It defines a shared-memory transport,
> message protocol, and service groups for platform management.
>
> Add the QEMU transport backend and Base service plumbing for virt using
> librpmi.
>
> This implementation targets the RISC-V Platform Management Interface
> (RPMI) Specification v1.0 Ratified:
>
> https://github.com/riscv-non-isa/riscv-rpmi/releases/download/v1.0/riscv-rpmi.pdf
>
> The librpmi backend is maintained at:
>
> https://github.com/riscv-software-src/librpmi
>
> Signed-off-by: Subrahmanya Lingappa <[email protected]>
> ---
>  MAINTAINERS                   |   2 +
>  hw/misc/Kconfig               |   4 +
>  hw/misc/meson.build           |   3 +
>  hw/misc/riscv_rpmi.c          | 477 ++++++++++++++++++++++++++++++++++
>  hw/misc/riscv_rpmi_internal.h |  24 ++
>  include/hw/misc/riscv_rpmi.h  |  90 +++++++
>  6 files changed, 600 insertions(+)
>  create mode 100644 hw/misc/riscv_rpmi.c
>  create mode 100644 hw/misc/riscv_rpmi_internal.h
>  create mode 100644 include/hw/misc/riscv_rpmi.h
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 93df53d87f..8e91a31757 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -359,6 +359,8 @@ F: target/riscv/
>  F: hw/char/riscv_htif.c
>  F: hw/riscv/
>  F: hw/intc/riscv*
> +F: hw/misc/riscv_rpmi*
> +F: include/hw/misc/riscv_rpmi.h
>  F: include/hw/char/riscv_htif.h
>  F: include/hw/riscv/
>  F: common-user/host/riscv*
> diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig
> index 1543ee6653..998944c342 100644
> --- a/hw/misc/Kconfig
> +++ b/hw/misc/Kconfig
> @@ -258,3 +258,7 @@ config XLNX_ZYNQ_DDRC
>      bool
>
>  source macio/Kconfig
> +
> +config RISCV_RPMI
> +    bool
> +    depends on LIBRPMI
> diff --git a/hw/misc/meson.build b/hw/misc/meson.build
> index 23265f6035..e7c2ebe28f 100644
> --- a/hw/misc/meson.build
> +++ b/hw/misc/meson.build
> @@ -168,3 +168,6 @@ system_ss.add(when: 'CONFIG_SBSA_REF', if_true: files('sbsa_ec.c'))
>
>  # HPPA devices
>  system_ss.add(when: 'CONFIG_LASI', if_true: files('lasi.c'))
>
NIT: A blank line here would be better.

> +system_ss.add(when: 'CONFIG_RISCV_RPMI', if_true: [files(
> +  'riscv_rpmi.c',
> +), librpmi])
> diff --git a/hw/misc/riscv_rpmi.c b/hw/misc/riscv_rpmi.c
> new file mode 100644
> index 0000000000..54a790fc7c
> --- /dev/null
> +++ b/hw/misc/riscv_rpmi.c
> @@ -0,0 +1,477 @@
> +/*
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + *
> + * RISC-V RPMI transport device.
> + *
> + * Copyright (c) 2026 Qualcomm Technologies, Inc.
> + * Author:
> + *  Subrahmanya Lingappa <[email protected]>
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qapi/error.h"
> +#include "qemu/log.h"
> +#include "qemu/module.h"
> +#include "exec/cpu-common.h"
> +#include "hw/core/qdev-properties.h"
> +#include "hw/misc/riscv_rpmi.h"
> +#include "hw/misc/riscv_rpmi_internal.h"
> +#include "migration/vmstate.h"
> +#include "system/address-spaces.h"
> +#include "system/runstate.h"
> +#include "librpmi.h"
> +#include "librpmi_env.h"
> +
> +void *rpmi_env_zalloc(rpmi_size_t size)
> +{
> +    return g_malloc0(size);
> +}
> +
> +void rpmi_env_free(void *ptr)
> +{
> +    g_free(ptr);
> +}
> +
> +void rpmi_env_writel(rpmi_uint64_t addr, rpmi_uint32_t val)
> +{
> +    cpu_physical_memory_write(addr, &val, sizeof(val));
> +}
>
These cpu_physical_memory_*() interfaces are renamed, right?

Thanks,
Sunil
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.