[PATCH 2/2] include: mailbox: Update RPMI notification structs and add Performance event definitions

Anup Patel apatel at ventanamicro.com
Mon Jun 8 05:34:45 PDT 2026


On Thu, Apr 9, 2026 at 8:27 PM David E. Garcia Porras
<david.garcia at aheadcomputing.com> wrote:
>
> Add RPMI notification header size and offset macros, and event header
> composition macro. Add rpmi_event_notification_state enum with disable,
> enable, and return current state IDs. Add req_state field to
> rpmi_enable_notification_req and current_state field to
> rpmi_enable_notification_resp for RPMI spec compliance.
>
> Add notification event ID enum and data structures for RPMI Performance
> service group events: power change, limit change, and level change.
>
> Signed-off-by: David E. Garcia Porras <david.garcia at aheadcomputing.com>
> ---
>  include/sbi_utils/mailbox/rpmi_msgprot.h | 49 ++++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>
> diff --git a/include/sbi_utils/mailbox/rpmi_msgprot.h b/include/sbi_utils/mailbox/rpmi_msgprot.h
> index c35788f0..8526ace3 100644
> --- a/include/sbi_utils/mailbox/rpmi_msgprot.h
> +++ b/include/sbi_utils/mailbox/rpmi_msgprot.h
> @@ -87,6 +87,18 @@
>  #define RPMI_DEF_TX_TIMEOUT                    20
>  #define RPMI_DEF_RX_TIMEOUT                    20
>
> +/** RPMI Notification header size */
> +#define RPMI_NOTIF_HDR_SIZE 16
> +
> +/** RPMI Notification header offsets */
> +#define RPMI_NOTIF_HDR_REMAINING_OFFSET 0x00
> +#define RPMI_NOTIF_HDR_RETURNED_OFFSET 0x04
> +#define RPMI_NOTIF_HDR_LOST_OFFSET 0x08
> +#define RPMI_NOTIF_HDR_RESERVED_OFFSET 0x0C

These above RPMI_NOTIF_HDR_xyz defines are not part
of the RPMI specification. Rather these are defined by the
SBI MPXY extension. Please add these as part of the
sbi_ecall_interface.h and drop from this patch.

> +
> +/** RPMI Notification event header constructor */
> +#define RPMI_NOTIF_EVENT_HDR(eid, dlen) ((u32)(eid) << 16) | ((u32)(dlen) & 0xFFFF)
> +
>  /**
>   * Common macro to generate composite version from major
>   * and minor version numbers.
> @@ -232,14 +244,24 @@ enum rpmi_servicegroup_id {
>         RPMI_SRVGRP_VENDOR_END = 0xFFFF,
>  };
>
> +/** RPMI event notification state IDs */
> +enum rpmi_event_notification_state {
> +       RPMI_EVENT_NOTIF_DISABLE_STATE = 0,
> +       RPMI_EVENT_NOTIF_ENABLE_STATE = 1,
> +       RPMI_EVENT_NOTIF_RET_CURR_STATE = 2,
> +       RPMI_EVENT_NOTIF_MAX_COUNT = 3,
> +};
> +
>  /** RPMI enable notification request */
>  struct rpmi_enable_notification_req {
>         u32 eventid;
> +       u32 req_state;
>  };
>
>  /** RPMI enable notification response */
>  struct rpmi_enable_notification_resp {
>         s32 status;
> +       u32 current_state;
>  };
>
>  /** RPMI Base ServiceGroup Service IDs */
> @@ -846,6 +868,33 @@ enum rpmi_performance_service_id {
>         RPMI_PERF_SRV_MAX_COUNT,
>  };
>
> +/** RPMI Performance ServiceGroup Notification Event IDs */
> +enum rpmi_performance_event_id {
> +       RPMI_PERF_EVENT_POWER_CHANGE = 0x01,
> +       RPMI_PERF_EVENT_LIMIT_CHANGE = 0x02,
> +       RPMI_PERF_EVENT_LEVEL_CHANGE = 0x03,
> +       RPMI_PERF_EVENT_MAX_COUNT,
> +};
> +
> +/** RPMI Performance power change notification data */
> +struct rpmi_perf_event_power_change {
> +       u32 domain_id;
> +       u32 power_uw;
> +};
> +
> +/** RPMI Performance limit change notification data */
> +struct rpmi_perf_event_limit_change {
> +       u32 domain_id;
> +       u32 max_level;
> +       u32 min_level;
> +};
> +
> +/** RPMI Performance level change notification data */
> +struct rpmi_perf_event_level_change {
> +       u32 domain_id;
> +       u32 level;
> +};
> +
>  struct rpmi_perf_get_num_domain_resp {
>         s32 status;
>         u32 num_domains;
> --
> 2.43.0
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi

Otherwise, this looks good to me.

Reviewed-by: Anup Patel <anup at brainfault.org>

Thanks,
Anup



More information about the opensbi mailing list