[PATCH 0/5] RISC-V: RPMI performance service bindings and cpufreq support

Joshua Yeong posted 5 patches 1 month ago
.../firmware/riscv,rpmi-mpxy-performance.yaml |  65 ++
.../firmware/riscv,rpmi-performance.yaml      |  62 ++
.../devicetree/bindings/riscv/cpus.yaml       |   7 +
MAINTAINERS                                   |   4 +
drivers/cpufreq/Kconfig                       |  26 +-
drivers/cpufreq/Makefile                      |   6 +-
drivers/cpufreq/riscv-rpmi-cpufreq.c          | 976 ++++++++++++++++++
include/linux/mailbox/riscv-rpmi-message.h    |  16 +
8 files changed, 1155 insertions(+), 7 deletions(-)
create mode 100644 Documentation/devicetree/bindings/firmware/riscv,rpmi-mpxy-performance.yaml
create mode 100644 Documentation/devicetree/bindings/firmware/riscv,rpmi-performance.yaml
create mode 100644 drivers/cpufreq/riscv-rpmi-cpufreq.c
[PATCH 0/5] RISC-V: RPMI performance service bindings and cpufreq support
Posted by Joshua Yeong 1 month ago
This patch series introduces support for the RISC-V RPMI (RISC-V Platform
Management Interface) performance service, covering both Device Tree bindings
and a corresponding cpufreq driver.

The first part of the series adds YAML bindings to describe the RPMI performance
service as provided by platform firmware, as well as the supervisor-level
controller interface exposed to the operating system. The bindings also document
how CPU nodes reference performance domains managed by RPMI.

The final patch builds on these definitions by introducing a cpufreq driver that
leverages the RPMI performance service to manage CPU frequency scaling on RISC-V
systems. The driver supports RPMI access through SBI-based transport mechanisms
as well as dedicated supervisor-mode transports.

RPMI specification reference [1] and [2]

Test Environment is as follows:
https://github.com/yeongjoshua/linux/tree/v6.19-rc4/rpmi-performance
https://github.com/riscv-software-src/opensbi
https://github.com/yeongjoshua/qemu/tree/rpmi-dev-upstream

Use '-M virt -M rpmi=true' when running qemu

[1] https://github.com/riscv-non-isa/riscv-sbi-doc/releases
[2] https://github.com/riscv-non-isa/riscv-rpmi/releases

Joshua Yeong (5):
  dt-bindings: firmware: Add RPMI performance service message proxy
    bindings
  dt-bindings: firmware: Add RPMI performance service bindings
  dt-bindings: riscv: cpus: document performance-domains property
  cpufreq: Add cpufreq driver for the RISC-V RPMI performance service
    group
  MAINTAINERS: Add RISC-V RPMI performance service group

 .../firmware/riscv,rpmi-mpxy-performance.yaml |  65 ++
 .../firmware/riscv,rpmi-performance.yaml      |  62 ++
 .../devicetree/bindings/riscv/cpus.yaml       |   7 +
 MAINTAINERS                                   |   4 +
 drivers/cpufreq/Kconfig                       |  26 +-
 drivers/cpufreq/Makefile                      |   6 +-
 drivers/cpufreq/riscv-rpmi-cpufreq.c          | 976 ++++++++++++++++++
 include/linux/mailbox/riscv-rpmi-message.h    |  16 +
 8 files changed, 1155 insertions(+), 7 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/firmware/riscv,rpmi-mpxy-performance.yaml
 create mode 100644 Documentation/devicetree/bindings/firmware/riscv,rpmi-performance.yaml
 create mode 100644 drivers/cpufreq/riscv-rpmi-cpufreq.c

--
2.43.0
Re: [PATCH 0/5] RISC-V: RPMI performance service bindings and cpufreq support
Posted by Rahul Pathak 1 month ago
On Tue, Jan 6, 2026 at 2:51 PM Joshua Yeong
<joshua.yeong@starfivetech.com> wrote:
>
> This patch series introduces support for the RISC-V RPMI (RISC-V Platform
> Management Interface) performance service, covering both Device Tree bindings
> and a corresponding cpufreq driver.
>
> The first part of the series adds YAML bindings to describe the RPMI performance
> service as provided by platform firmware, as well as the supervisor-level
> controller interface exposed to the operating system. The bindings also document
> how CPU nodes reference performance domains managed by RPMI.
>
> The final patch builds on these definitions by introducing a cpufreq driver that
> leverages the RPMI performance service to manage CPU frequency scaling on RISC-V
> systems. The driver supports RPMI access through SBI-based transport mechanisms
> as well as dedicated supervisor-mode transports.
>
> RPMI specification reference [1] and [2]
>
> Test Environment is as follows:
> https://github.com/yeongjoshua/linux/tree/v6.19-rc4/rpmi-performance
> https://github.com/riscv-software-src/opensbi
> https://github.com/yeongjoshua/qemu/tree/rpmi-dev-upstream
>
> Use '-M virt -M rpmi=true' when running qemu
>
> [1] https://github.com/riscv-non-isa/riscv-sbi-doc/releases
> [2] https://github.com/riscv-non-isa/riscv-rpmi/releases
>
> Joshua Yeong (5):
>   dt-bindings: firmware: Add RPMI performance service message proxy
>     bindings
>   dt-bindings: firmware: Add RPMI performance service bindings
>   dt-bindings: riscv: cpus: document performance-domains property
>   cpufreq: Add cpufreq driver for the RISC-V RPMI performance service
>     group
>   MAINTAINERS: Add RISC-V RPMI performance service group


Hi Joshua,

I have a general question -  RPMI performance service group is
primarily defined for devices but can also be used for CPUs.
Do you plan to add a RPMI devfreq driver too for devices?

Thanks
Rahul